Хак Убираем id в ссылке новости

Тема в разделе "DLE", создана пользователем SuRS, 11 авг 2009.

Информация :
Актуальная версия DataLife Engine 11.2
( Final Release v.11.2 | Скачать DataLife Engine | Скачать 11.2 demo )
Нужно ли обновляться | Как обновиться | Изменения в шаблонах
> Нет русских символов <
[Приватная тема DLE (Все подробности в ЛС к модератору раздела)]

Версии 10.0 и ниже - уязвимы!

Локализации | F.A.Q. | Внешний вид
Правила раздела | Правила форума
Обсуждение хайда карается баном!
В каждом сообщении указывайте версию DLE, которого они касаются!
Модераторы: killoff
  1. SuRS

    SuRS Писатель

    Регистр.:
    4 фев 2009
    Сообщения:
    3
    Симпатии:
    2
    Палю для Всех как убрать id новости в ссылке новости
    Версия DLE - 8.0
    Работает и на старых версиях просто редактируйте под старые.
    Открыть engine.php.
    Найти:
    PHP:
    // ################ Новость целиком #################
                
    if ($subaction != '' or $newsid) {
                    if (! 
    $newsid$sql_news "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags FROM " PREFIX "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";
                    else 
    $sql_news "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags FROM " PREFIX "_post where  id = '$newsid'";  
    Заменить на:
    PHP:
    // ################ Новость целиком #################
                
    if ($subaction != '' or $_GET['newsid']) {
                    if (! 
    $_GET['newsid']) $sql_news "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " PREFIX "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";
                    else 
    $sql_news "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " PREFIX "_post where  alt_name = '{$_GET['newsid']}'";  
    Открыть modules/show.short.php
    Найти:
    PHP:
    if( $row['category'] and $config['seo_type'] == ) {
                        
    $full_link $config['http_home_url'] . get_url$row['category'] ) . "/" $row['id'] . "-" $row['alt_name'] . ".html";
                    } else {
                        
    $full_link $config['http_home_url'] . $row['id'] . "-" $row['alt_name'] . ".html";
                    }
                } else {
                    
    $full_link $config['http_home_url'] . date'Y/m/d/'$row['date'] ) . $row['alt_name'] . ".html";
                }
            } else {
                
    $full_link $config['http_home_url'] . "index.php?newsid=" $row['id'];
            }  
    Заменить на:
    PHP:
                    if( $row['category'] and $config['seo_type'] == ) {
                        
    $full_link $config['http_home_url'] . get_url$row['category'] ) . "/" .  $row['alt_name'] . ".html";
                    } else {
                        
    $full_link $config['http_home_url'] .  $row['alt_name'] . ".html";
                    }
                } else {
                    
    $full_link $config['http_home_url'] . date'Y/m/d/'$row['date'] ) . $row['alt_name'] . ".html";
                }
            } else {
                
    $full_link $config['http_home_url'] . "index.php?newsid=" $row['alt_name'];
            }  
    Открыть .htaccess.
    Найти:
    Код:
    RewriteRule ^([^.]+)/([0-9]+)-(.*).html(/?)+$ index.php?newsid=$2 [L]
    Заменить на:
    Код:
    RewriteRule ^([^.]+)/(.*).html(/?)+$ index.php?newsid=$2 [L]
    Найти:
    Код:
    RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1 [L]
    Заменить на:
    Код:
    RewriteRule ^(.*).html(/?)+$ index.php?newsid=$1 [L]
    Найти:
    Код:
    RewriteRule ^addnews.html$ index.php?do=addnews [L]
    И переместить это вверх после:
    Код:
    RewriteRule ^page/(.*)$ index.php?cstart=$1 [L]
    Если название у двух новостей одинаковое, то будет выводится новость старее новой.
     
    porsche2 и Walkman нравится это.
  2. belenkov

    belenkov Создатель

    Регистр.:
    5 авг 2006
    Сообщения:
    46
    Симпатии:
    3
    А СМЫЛС? На индексацию это никак не повлияет (f может даже и повлияет- после смены адреса страницы выпадудт из поиска) , тока гемор при наличии новостей с одинаковыми названиями
     
  3. unisol

    unisol Писатель

    Регистр.:
    20 сен 2006
    Сообщения:
    9
    Симпатии:
    0

    наверное что бы можно было бы менять местами новости и небыло видно что новость была добавлена и перенесена вперёд или назад..

    в принципе еси залить какую нить Готовую-большую базу, то можно сделать это, поменяв местами новости.. пригодилось бы )
     
  4. Localut

    Localut Деда Мороз

    Регистр.:
    13 фев 2009
    Сообщения:
    224
    Симпатии:
    81
    а разве это не увеличивает существенно нагрузку на бд?
     
  5. Noikudo

    Noikudo Постоялец

    Регистр.:
    22 июн 2007
    Сообщения:
    112
    Симпатии:
    16
    Localut, пробежался по коду. Вроде не увеличивает. Тк обращение все равно идет через id.
    UPD А, нет. Обращение через альтернативное имя идёт. Ну не думаю, что то существенно увеличит нагрузку. Разве что чуть-чуть.
     
  6. Grunuk

    Grunuk

    Регистр.:
    19 янв 2008
    Сообщения:
    187
    Симпатии:
    6
    и от грабинга немножко спасает... или нет?
     
  7. Crazy182

    Crazy182

    Регистр.:
    29 ноя 2006
    Сообщения:
    205
    Симпатии:
    14
    ниужеле никто так и не смог придумать как вообще в dle брать этот id ! По интернету очень много жалоб на него, и почему не добавить в настройках выбор чпу с id и без него (((
     
  8. lift

    lift Читатель

    Заблокирован
    Регистр.:
    1 июл 2007
    Сообщения:
    2.226
    Симпатии:
    1.378
    А посомтреть мини фак прикрепленый что мешает? Или я там на суахили написал ман по переделке чтоб id новости из урла убрать?
     
  9. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    При убирания id перестают работать связки aviable и not-aviable
    Как этот момент исправить?

    Добавлено через 33 минуты
    Точнее связка не работает в полной новости - если в main.tpl
    прописать [aviable=main]текст[/aviable], то при просмотре полной новости этот текст все равно покажется. Аналогично и при [not-aviable=showfull]
     
  10. gruppastimul

    gruppastimul Ваш

    Регистр.:
    22 окт 2006
    Сообщения:
    802
    Симпатии:
    130
    Решил эту проблему.

    Выкладываю решение для всех.

    в файле engine/engine.php

    поменять строку

    Код:
    if ($subaction == '' AND $newsid) $dle_module = "showfull";
    на

    Код:
    if ($subaction == '' AND $_GET['newsid']) $dle_module = "showfull"