Похоже, проблема не в самой главной странице, а в том, что переменные даты ($year, $month, $day) попадают в формирование meta title даже тогда, когда текущий модуль фактически main.
Симптом:
Это может происходить, если где-то в запросе/роутинге остаётся $year = 2025, но сам $dle_module уже равен main.
В DLE есть участок, который формирует $nam_e для архива по дате:
PHP:
if ($year != '' AND $month == '' AND $day == '') $nam_e = $lang['title_date'] . ' ' . $year . ' ' . $lang['title_year'];
if ($year != '' AND $month != '' AND $day == '') $nam_e = $lang['title_date'] . ' ' . $r[$month - 1] . ' ' . $year . ' ' . $lang['title_year1'];
if ($year != '' AND $month != '' AND $day != '' and $subaction == '') $nam_e = $lang['title_date'] . ' ' . $day . '.' . $month . '.' . $year;
А ниже $nam_e уже используется для title:
PHP:
if ($nam_e) {
if ($config['short_meta_title']) $metatags['title'] = $nam_e . $page_extra . $meta_sep . $config['short_meta_title'];
else $metatags['title'] = $nam_e . $page_extra;
}
Поэтому если $nam_e ошибочно получил значение от даты, главная страница может получить title архива.
Фикс, который предложен выше, рабочий как быстрый костыль:
PHP:
if ($dle_module == "main") { $nam_e = ''; $metatags['title'] = $config['home_title'];
} elseif ($nam_e) {
if ($config['short_meta_title']) $metatags['title'] = $nam_e . $page_extra . $meta_sep . $config['short_meta_title'];
Но у него есть минус: он может убрать $page_extra для пагинации главной страницы. Например /page/2/ может получить такой же title, как и первая страница.
Более правильный вариант — не давать date-логике формировать $nam_e, если текущий модуль не date.
Нужно найти блок, где формируется $nam_e для даты, примерно такой:
PHP:
} else {
if ($year != '' AND $month == '' AND $day == '') $nam_e = $lang['title_date'] . ' ' . $year . ' ' . $lang['title_year'];
if ($year != '' AND $month != '' AND $day == '') $nam_e = $lang['title_date'] . ' ' . $r[$month - 1] . ' ' . $year . ' ' . $lang['title_year1'];
if ($year != '' AND $month != '' AND $day != '' and $subaction == '') $nam_e = $lang['title_date'] . ' ' . $day . '.' . $month . '.' . $year;
if (($subaction OR $newsid) AND $news_found) $titl_e = $metatags['title'];
}
И заменить на:
PHP:
} else {
if ($dle_module == 'date') {
if ($year != '' AND $month == '' AND $day == '') {
$nam_e = $lang['title_date'] . ' ' . $year . ' ' . $lang['title_year'];
}
if ($year != '' AND $month != '' AND $day == '') {
$nam_e = $lang['title_date'] . ' ' . $r[$month - 1] . ' ' . $year . ' ' . $lang['title_year1'];
}
if ($year != '' AND $month != '' AND $day != '' and $subaction == '') {
$nam_e = $lang['title_date'] . ' ' . $day . '.' . $month . '.' . $year;
}
}
if (($subaction OR $newsid) AND $news_found) {
$titl_e = $metatags['title'];
}
}
Почему так лучше:
- []Главная страница не будет получать title от архива по году. []Архивы /2025/, /2025/07/, /2025/07/06/ продолжат работать штатно. []Пагинация главной сохранит $page_extra. []Исправляется причина, а не только финальный вывод title.
То есть логика такая:
PHP:
if ($dle_module == 'date') { // формируем title архива по дате }
А если текущий модуль main, то переменные $year, $month, $day не должны влиять на $nam_e.
Итог: предложенный фикс через $dle_module == "main" можно использовать как временное решение, но чище и безопаснее ограничить формирование date-title только модулем date.