Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Как сформировать ЧПУ новости с помощью дополнительного поля?

Как сформировать ЧПУ новости с помощью дополнительного поля?


     03.03.2016    Общие вопросы по PHP    408

вопрос
Подскажите пожалуйста, как сформировать ЧПУ с помощью дополнительного поля.

Например было:
/1-news.html


Должно быть:
/1-news-2016.html


Пытаюсь сделать вот так:
Нахожу файлы правки добавление новости: engine/inc/addnews.php | engine/inc/editnews.php

Нахожу:
if( trim( $_POST['alt_name'] ) == "" or ! $_POST['alt_name'] ) $alt_name = totranslit( stripslashes( $title ) );
    else $alt_name = totranslit( stripslashes( $_POST['alt_name'] ) );


Правлю до такого состояния:


$xfields_pole = xfieldsdataload($row['xfields']);

if( trim( $_POST['alt_name'] ) == "" or ! $_POST['alt_name'] ) $alt_name = totranslit( stripslashes( $title . "-" . $xfields_pole['year'] ) );
else $alt_name = totranslit( stripslashes( $_POST['alt_name'] ) );


Подскажите что мне еще нужно добавить чтобы заработало???

Ответил: Gameer


Открыть файлы /engine/inc/addnews.php найти
if( trim( $alt_name ) == "" or ! $alt_name ) $alt_name = totranslit( stripslashes( $title ), true, false );
else $alt_name = totranslit( stripslashes( $alt_name ), true, false );
Заменить на :
$year = $db->safesql($_POST['xfield']['year']);
if( trim( $alt_name ) == "" or ! $alt_name ) $alt_name = totranslit( stripslashes( $alt_name . "-" . $year ), true, false );
else $alt_name = totranslit( stripslashes( $alt_name . "-" . $year ), true, false );
Открыть /engine/inc/editnews.php найти
if( trim( $_POST['alt_name'] ) == "" or ! $_POST['alt_name'] ) $alt_name = totranslit( stripslashes( $title ) );
else $alt_name = totranslit( stripslashes( $_POST['alt_name'] ) );
Заменить на :
$year = $db->safesql($_POST['xfield']['year']);    
if( trim( $_POST['alt_name'] ) == "" or ! $_POST['alt_name'] ) $alt_name = totranslit( stripslashes( $title . "-" . $year ) );
else $alt_name = totranslit( stripslashes( $_POST['alt_name'] ) );

Комментарии пользователей (6)

aluminoter
27

aluminoter - 3 марта 2016 22:44 - Юзер

А без дополнительного запроса в БД никак нельзя?

Gameer
226

1124 | 396

Gameer - 3 марта 2016 22:46 - Эксперт

aluminoter, :D какой запрос?

Истина в противоречии.​

aluminoter
27

aluminoter - 3 марта 2016 22:48 - Юзер

Туплю!!!

aluminoter
27

aluminoter - 3 марта 2016 22:47 - Юзер

Спасибо все четко!!!!

aluminoter
27

aluminoter - 3 марта 2016 22:53 - Юзер

Хотя вот так нельзя делать:


else $alt_name = totranslit( stripslashes( $_POST['alt_name'] . "-" . $year ) );


При каждом редактировании новости будет добавляться год.

Лучше чтобы это строчка оставалась в исходном состоянии.


else $alt_name = totranslit( stripslashes( $_POST['alt_name'] ) );

Gameer
226

1124 | 396

Gameer - 3 марта 2016 23:00 - Эксперт

aluminoter, я уже подправил это в коде.

Истина в противоречии.​

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы