• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

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

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Хочу ссылки в своем модуле сделать ЧПУ.
Поискал в ДЛЕ около 2 часов. Нисколько не продвинулся в своем вопросе.
Нашел только формирование ЧПУ ссылок:
PHP:
if( $config['allow_alt_url'] == "yes" ) {
           
            if( $config['seo_type'] == 1 OR $config['seo_type'] == 2  ) {
               
                if( $row['category'] and $config['seo_type'] == 2 ) {
                   
                    $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?
Где в ДЛЕ это описано?
 
Если обращаться к странице по id.html (например, /module/154.html), то выводится. А мне нужно вставить вместо id, alt_name. Т.е. ссылка должна быть вида: /module/moya-stranica.html
Как сервер должен понять, что moya-stranica это запись по id 154?
Где в ДЛЕ это описано?
дак в самом дле такого и нет там все через id если хочешь через альтнэйм переписывай правила в htaccess на такое примерно
RewriteRule ^module/(.*).html(/?)+$ index.php?do=module&alt_name=$1 [L]
и в модуле соответстенно должна быть обработка по alt_name а не по id
 
Ещё есть смысл посмотреть модуль статических страниц - там всё через alt_name...

А вообще, нет нужды копировать такое. Делай как хочешь, найди любой мануал и делай по нему - там не сложно.
 
а как правильно обезопасить такую переменную из get? Ведь потом нужно еще искать по этому параметру в БД.
А вообще, нет нужды копировать такое. Делай как хочешь, найди любой мануал и делай по нему - там не сложно.
Я ЧПУ никогда не делал. Знать бы еще, что искать... Да и искал. Но как-то все не по теме.
 
если я верно понял, то прочти это Для просмотра ссылки Войди или Зарегистрируйся
ничего сложного нет, все разжёвано до нельзя.
 
если я верно понял, то прочти это Для просмотра ссылки Войди или Зарегистрируйся
ничего сложного нет, все разжёвано до нельзя.
Посмотрел, и нашел, то, что спрашивал.. вот код:
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 :)
 
Последнее редактирование:
Но вопрос по безопасности остается. Может быть он уже не к ДЛЕ. но все же...
если нет newsid, то запрос с условием WHERE alt_name ='$news_name'
Но никак не обрабатывается. Это по безопасности нормально разве? Или в MySQL в условие можно чего угодно без обработки пихать?
Но все же, я думаю, что $news_name и $newsid где-то должна приниматься и обрабатываться. Подскажите, пожалуйста, в каком файле?
вот тебе еще пример файл static.php
PHP:
$name = @$db->safesql( trim( totranslit( $_GET['page'], true, false ) ) );

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'] ) {
// ......
как видишь все обрабатывается стандартными функциями ДЛЕ
 
сам обработчик проходит через сео оптимизацию,как пример
PHP:
        if( $config['allow_alt_url'] == "yes" ) {
           
            if( $row['flag'] and $config['seo_type'] ) {
               
                if( $category_id and $config['seo_type'] == 2 ) {
                   
                    $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
 
Назад
Сверху