Правильный вывод новостей на DLE 9.3
Начнём с дублирования контента на страницах тегов и архивов и сразу напомню, что мы создаём СДЛ(сайт для людей).
По нашему мнению данные страницы очень важны и удобны пользователю для сортировки и поиска публикаций по их тегам или дате опубликования, но в тоже время понятно, что контент на них дублирует контент главных страниц(пагинации) сайта, категорий и др.
А происходит это потому, что функционально для вывода всех перечисленных страниц используются одни и те же модуль(show.short.php) и шаблон(shortstory.tpl). Мы предлагаем изменить это и сделать на страницах архива и тегов вывод похожий на вывод реализуемый в картах сайтов, т.е. мы выведем только заголовки публикаций.
Для этого нам нужно создать файл шаблона и отредактировать несколько файлов:
1. Создаём файл шаблона tags.tpl с именем tags в Панели управления, используя стандартный редактор шаблонов, а за основу берём файл вашего шаблона shortstory.tpl только удаляем из него лишнее оставив заголовок с ссылкой на полную новость, например так:
2. В engine/data/config.php (для настроек количества выводимых заголовков новостей на страницу)
ищем(у вас вместо значения 10 может быть другое число):
‘news_number’ => «10»,
и ниже добавляем(20 — это будет число выводимых на страницах тегов и архива заголовков новостей)
‘news_number_short’ => «20»,
3. engine/engine.php в четырёх местах меняем:
$config[‘news_number’];
на:
$config[‘news_number_short’];
во всех четырёх местах данная переменная в конце строки, а строки расположены:
— первое редактируемое место:
ищем комментарий кода:
// ################ Вывод профиля пользователя #################
и ВЫШЕ примерно на 4-ре строки есть строка начинающаяся с:
$sql_select = «SELECT id…..
в конце этой строки и есть необходимая нам переменная которую мы заменяем.
— второе редактируемое место:
ищем комментарий кода:
// ################ Новости за месяц #################
и ВЫШЕ примерно на 3-е строки есть такая же как и раньше строка начинающаяся с:
$sql_select = «SELECT id…..
в конце этой строки необходимая нам переменная которую мы заменяем.
— третье редактируемое место:
ищем комментарий кода:
// ################ Новости за день #################
и ВЫШЕ примерно на 3-е строки есть такая же как и раньше строка начинающаяся с:
$sql_select = «SELECT id…..
в конце этой строки необходимая нам переменная которую мы заменяем.
— четвёртое редактируемое место:
ищем комментарий кода:
// ################ Новость целиком #################
и ВЫШЕ примерно на 3-е строки есть такая же как и раньше строка начинающаяся с:
$sql_select = «SELECT id…..
в конце этой строки необходимая нам переменная которую мы заменяем.
4. В engine/modules/show.short.php ищем:
if( isset( $view_template ) and $view_template == «rss» ) {
} elseif( $category_id and $cat_info[$category_id][‘short_tpl’] != » ) $tpl->load_template( $cat_info[$category_id][‘short_tpl’] . ‘.tpl’ );
else $tpl->load_template( ‘shortstory.tpl’ );
и заменяем на:
if ($do == «tags» or $year != » or $month != » or $day != ») {
$tpl->load_template( ‘tags.tpl’ );
}
elseif( isset( $view_template ) and $view_template == «rss» ) {
} elseif( $category_id and $cat_info[$category_id][‘short_tpl’] != » ) $tpl->load_template( $cat_info[$category_id][‘short_tpl’] . ‘.tpl’ );
else $tpl->load_template( ‘shortstory.tpl’ );
5. В engine/inc/options.php (для управления настройками количества выводимых заголовков новостей на страницу)
найти:
showRow( $lang[‘opt_sys_newc’], $lang[‘opt_sys_newd’], «» );
и ниже добавить:
showRow( «Количество заголовков новостей на дублирующих страницах», «Количество выводимых заголовков новостей на страницах архива, тегов и др.», «» );
С этими страницами мы разобрались. Таким же способом можно реализовать и вывод других страниц, например, новостей пользователя, но они у нас в DLE теперь закрыты в robots.txt. Здесь описана наиболее простая реализация именно вывода, а расширенная реализация уберёт неиспользуемые поля в запросах после данной оптимизации и настройки можно расширить выбором шаблона как это реализовано в категориях.