Помощь формирование ЧПУ в DLE

Тема в разделе "DLE", создана пользователем danneo, 12 дек 2013.

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

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

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

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.418
    Симпатии:
    109
    Хочу ссылки в своем модуле сделать ЧПУ.
    Поискал в ДЛЕ около 2 часов. Нисколько не продвинулся в своем вопросе.
    Нашел только формирование ЧПУ ссылок:
    PHP:
    if( $config['allow_alt_url'] == "yes" ) {
               
                if( 
    $config['seo_type'] == OR $config['seo_type'] == 2  ) {
                   
                    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'];
           
            }

    Например, я выбрал 3 вариант ЧПУ:
    Это дело формируется так:
    PHP:
    $full_link $config['http_home_url'] . date'Y/m/d/'$row['date'] ) . $row['alt_name'] . ".html";
    В htaccess есть такое:
    RewriteRule ^([0-9]+)-(.*).html(/?)+$ index.php?newsid=$1&seourl=$2 [L]
    Я сформировал свои ЧПУ.
    Если обращаться к странице по id.html (например, /module/154.html), то выводится. А мне нужно вставить вместо id, alt_name. Т.е. ссылка должна быть вида: /module/moya-stranica.html
    Как сервер должен понять, что moya-stranica это запись по id 154?
    Где в ДЛЕ это описано?
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    дак в самом дле такого и нет там все через id если хочешь через альтнэйм переписывай правила в htaccess на такое примерно
    RewriteRule ^module/(.*).html(/?)+$ index.php?do=module&alt_name=$1 [L]
    и в модуле соответстенно должна быть обработка по alt_name а не по id
     
    Горбушка нравится это.
  3. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.035
    Симпатии:
    2.035
    Ещё есть смысл посмотреть модуль статических страниц - там всё через alt_name...

    А вообще, нет нужды копировать такое. Делай как хочешь, найди любой мануал и делай по нему - там не сложно.
     
  4. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.418
    Симпатии:
    109
    а как правильно обезопасить такую переменную из get? Ведь потом нужно еще искать по этому параметру в БД.
    Я ЧПУ никогда не делал. Знать бы еще, что искать... Да и искал. Но как-то все не по теме.
     
  5. swart2010

    swart2010

    Регистр.:
    12 апр 2009
    Сообщения:
    420
    Симпатии:
    109
    danneo нравится это.
  6. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.418
    Симпатии:
    109
    Посмотрел, и нашел, то, что спрашивал.. вот код:
    PHP:
    // ################ Новость целиком #################
                
    if ($subaction != '' or $newsid) {
                    if (! 
    $newsid$sql_news "SELECT * FROM " PREFIX "_post LEFT JOIN " PREFIX "_post_extras ON (" PREFIX "_post.id=" PREFIX "_post_extras.news_id) WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 1";
                    else 
    $sql_news "SELECT * FROM " PREFIX "_post LEFT JOIN " PREFIX "_post_extras ON (" PREFIX "_post.id=" PREFIX "_post_extras.news_id) WHERE  id = '{$newsid}'";
                 
                    if (
    $subaction == ''$subaction "showfull";
                }
    Но вопрос по безопасности остается. Может быть он уже не к ДЛЕ. но все же...
    если нет newsid, то запрос с условием WHERE alt_name ='$news_name'
    Но никак не обрабатывается. Это по безопасности нормально разве? Или в MySQL в условие можно чего угодно без обработки пихать?
    Но все же, я думаю, что $news_name и $newsid где-то должна приниматься и обрабатываться. Подскажите, пожалуйста, в каком файле?


    Вопрос снят. Обработка $news_name идет в init.php :)
     
    Последнее редактирование: 13 дек 2013
  7. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    вот тебе еще пример файл static.php
    PHP:
    $name = @$db->safesqltrimtotranslit$_GET['page'], truefalse ) ) );

    if( !
    $static_result['id'] ) $static_result $db->super_query"SELECT * FROM " PREFIX "_static WHERE name='{$name}'" ); else $static_result['id'] = intval($static_result['id']);

    if( 
    $static_result['id'] ) {
    // ......
    как видишь все обрабатывается стандартными функциями ДЛЕ
     
  8. inmy

    inmy

    Регистр.:
    13 апр 2012
    Сообщения:
    296
    Симпатии:
    200
    сам обработчик проходит через сео оптимизацию,как пример
    PHP:
            if( $config['allow_alt_url'] == "yes" ) {
               
                if( 
    $row['flag'] and $config['seo_type'] ) {
                   
                    if( 
    $category_id and $config['seo_type'] == ) {
                       
                        
    $full_link $config['http_home_url'] . get_url$category_id ) . "/" $row['id'] . "-" $row['alt_name'] . ".html";
                        
    $print_link $config['http_home_url'] . get_url$category_id ) . "/print:page,1," $row['id'] . "-" $row['alt_name'] . ".html";
                        
    $short_link $config['http_home_url'] . get_url$category_id ) . "/";
                        
    $row['alt_name'] = $row['id'] . "-" $row['alt_name'];
                        
    $link_page $config['http_home_url'] . get_url$category_id ) . "/" 'page,' $news_page ',';
                        
    $news_name $row['alt_name'];
                   
                    } else {
                       
                        
    $full_link $config['http_home_url'] . $row['id'] . "-" $row['alt_name'] . ".html";
                        
    $print_link $config['http_home_url'] . "print:page,1," $row['id'] . "-" $row['alt_name'] . ".html";
                        
    $short_link $config['http_home_url'];
                        
    $row['alt_name'] = $row['id'] . "-" $row['alt_name'];
                        
    $link_page $config['http_home_url'] . 'page,' $news_page ',';
                        
    $news_name $row['alt_name'];
                   
                    }
               
                } else {
                   
                    
    $full_link $config['http_home_url'] . date'Y/m/d/'$row['date'] ) . $row['alt_name'] . ".html";
                    
    $print_link $config['http_home_url'] . date'Y/m/d/'$row['date'] ) . "print:page,1," $row['alt_name'] . ".html";
                    
    $short_link $config['http_home_url'] . date'Y/m/d/'$row['date'] );
                    
    $link_page $config['http_home_url'] . date'Y/m/d/'$row['date'] ) . 'page,' $news_page ',';
                    
    $news_name $row['alt_name'];
               
                }
           
            } else {
               
                
    $full_link $config['http_home_url'] . "index.php?newsid=" $row['id'];
                
    $print_link $config['http_home_url'] . "engine/print.php?newsid=" $row['id'];
                
    $short_link "";
           
            }
    это как пример обработки самого что с чпу как и без него,код взят из show.full.php