Правильный вывод новостей на DLE 9.3
Начнём с дублирования контента на страницах тегов и архивов и сразу напомню, что мы создаём СДЛ(сайт для людей).
По нашему мнению данные страницы очень важны и удобны пользователю для сортировки и поиска публикаций по их тегам или дате опубликования, но в тоже время понятно, что контент на них дублирует контент главных страниц(пагинации) сайта, категорий и др.
А происходит это потому, что функционально для вывода всех перечисленных страниц используются одни и те же модуль(show.short.php) и шаблон(shortstory.tpl). Мы предлагаем изменить это и сделать на страницах архива и тегов вывод похожий на вывод реализуемый в картах сайтов, т.е. мы выведем только заголовки публикаций.
Для этого нам нужно создать файл шаблона и отредактировать несколько файлов:
1. Создаём файл шаблона tags.tpl с именем tags в Панели управления, используя стандартный редактор шаблонов, а за основу берём файл вашего шаблона shortstory.tpl только удаляем из него лишнее оставив заголовок с ссылкой на полную новость, например так:
[full-link]{title}[/full-link]
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. Здесь описана наиболее простая реализация именно вывода, а расширенная реализация уберёт неиспользуемые поля в запросах после данной оптимизации и настройки можно расширить выбором шаблона как это реализовано в категориях.