Хак для Dle добавляем ссылки перехода на предыдущую и следующую новость в полной публикации, тем самым поможет сделать перелинковку внутренних страниц веб-ресурса Dle. Код был переписан, добавлен кеш для уменьшения нагрузки на движок.
Оптимизирован код.
Были добавлено возможность включать и отключать хак дле через админку.
Исправлены ошибки, например с отображениям ссылки с измененной датой.
Возможности:
- Отображает ссылки на следующую и предыдущую новости в той же категории что и просматриваемая новость.
- В случае отсутствия новости, ссылка не отображается.
- Ссылки выводятся относительно даты просматриваемой новости.
- Простая установка (1 минута).
- Минимальная правка кода движка.
Установка:
1. В файле engine/inc/options.php
найти:
showRow( $lang['opt_sys_wdq'], $lang['opt_sys_wdsd'], makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no'] ), "save_con[allow_quick_wysiwyg]", "{$config['allow_quick_wysiwyg']}" ) );
ниже вставить:
showRow( $lang['opt_sys_link'], $lang['opt_sys_link_pn'], makeDropDown( array ("1" => "Да", "0" => "Нет" ), "save_con[prevnext_allow]", "{$config['prevnext_allow']}" ) );
2. В файле language/Russian/adminpanel.lng
найти:
'wysiwyg_language' => "ru",
ниже вставить:
// Ссылки в полной новости на предыдущую и следующую новость opt_sys_link => "Показывать предыдущую и следующую новость?",opt_sys_link_pn => "Если 'Да', то в полной новости будет показывать ссылку на предыдущую и следующую новость, если 'Нет', то ссылки не будут показыватся",
3. В файле engine/modules/show.full.php
найти:
if( $config['related_news'] ) {
выше вставить:
if( $config['prevnext_allow'] == "1" ) {if( $config['allow_cache'] != "yes" ) {$config['allow_cache'] = "yes";$revert_cache = true;} else$revert_cache = false;$prev_link = dle_cache( "prevlink", $row['id'] );$next_link = dle_cache( "nextlink", $row['id'] );// Prev Linkif( $prev_link === FALSE ) {$prevlink = $db->super_query( "SELECT id, date, title, category, alt_name, flag FROM " . PREFIX . "_post WHERE date > FROM_UNIXTIME({$row['date']}) AND category = '{$row['category']}' AND approve = '1' ORDER BY date ASC LIMIT 0,1" );if ( $prevlink ) {$prevlink['date'] = strtotime( $prevlink['date'] );$prevlink['category'] = intval( $prevlink['category'] );if( strlen( $prevlink['title'] ) > 75 ) $prevlink['title'] = substr( $prevlink['title'], 0, 75 ) . " ...";if( $config['allow_alt_url'] == "yes" ) {if( $prevlink['flag'] and $config['seo_type'] ) {if( $prevlink['category'] and $config['seo_type'] == 2 ) {$prev_link = $config['http_home_url'] . get_url( $prevlink['category'] ) . "/" . $prevlink['id'] . "-" . $prevlink['alt_name'] . ".html";} else {$prev_link = $config['http_home_url'] . $prevlink['id'] . "-" . $prevlink['alt_name'] . ".html";}} else {$prev_link = $config['http_home_url'] . date( 'Y/m/d/', $prevlink['date'] ) . $prevlink['alt_name'] . ".html";}} else {$prev_link = $config['http_home_url'] . "index.php?newsid=" . $prevlink['id'];}} else {$prev_link = "";}if( $prev_link ) {$prev_link = "<a href="" . $prev_link . "">" . stripslashes( $prevlink['title'] ) . "</a>";}$db->free();create_cache( "prevlink", $prev_link, $row['id'] );}// Next Linkif( $next_link === FALSE ) {$nextlink = $db->super_query( "SELECT id, date, title, category, alt_name, flag FROM " . PREFIX . "_post WHERE date < FROM_UNIXTIME({$row['date']}) AND category = '{$row['category']}' AND approve = '1' ORDER BY date DESC LIMIT 0,1" );if( $nextlink ) {$nextlink['date'] = strtotime( $nextlink['date'] );$nextlink['category'] = intval( $nextlink['category'] );if( strlen( $nextlink['title'] ) > 75 ) $nextlink['title'] = substr( $nextlink['title'], 0, 75 ) . " ...";if( $config['allow_alt_url'] == "yes" ) {if( $nextlink['flag'] and $config['seo_type'] ) {if( $nextlink['category'] and $config['seo_type'] == 2 ) {$next_link = $config['http_home_url'] . get_url( $nextlink['category'] ) . "/" . $nextlink['id'] . "-" . $nextlink['alt_name'] . ".html";} else {$next_link = $config['http_home_url'] . $nextlink['id'] . "-" . $nextlink['alt_name'] . ".html";}} else {$next_link = $config['http_home_url'] . date( 'Y/m/d/', $nextlink['date'] ) . $nextlink['alt_name'] . ".html";}} else {$next_link = $config['http_home_url'] . "index.php?newsid=" . $nextlink['id'];}} else {$next_link = "";}if( $next_link ) {$next_link = "<a href="" . $next_link . "">" . stripslashes( $nextlink['title'] ) . "</a>";}$db->free();create_cache( "nextlink", $next_link, $row['id'] );}if( $revert_cache ) $config['allow_cache'] = "no";} else $next_link = $prev_link = '';// Back and Next Link Template$tpl->set( '{prev-link}', $prev_link );$tpl->set( '{next-link}', $next_link );
4. В шаблоне fullstory.tpl в том месте, где надо отображать ссылки
вставить:
{back-link} - предыдущая новость{next-link} - следующая новость
Внимание! Если вы используете версии DLE 13.0 и выше, то разработчики интегрировали реализацию ссылки на следующую и предыдущую новость. Теперь достаточно добавить в шаблон fullstory.tpl теги :
Выводят текст заключенных в них, если следующая новость присутствует на сайте
Выводит URL следующей публикации
Выводит заголовок следующей публикации
Выводят текст заключенных в них, если предыдущая новость присутствует на сайте
Выводит URL предыдущей публикации
Выводит заголовок предыдущей новости
[next-url] Текст [/next-url]
Выводят текст заключенных в них, если следующая новость присутствует на сайте
{next-url}
Выводит URL следующей публикации
{next-title}
Выводит заголовок следующей публикации
[prev-url] Текст [/prev-url]
Выводят текст заключенных в них, если предыдущая новость присутствует на сайте
{prev-url}
Выводит URL предыдущей публикации
{prev-title}
Выводит заголовок предыдущей новости
Dle хак ссылки на следующую и предыдущую в полной новости
Автор не известен
На https://dle9.com/ рекомендуем Dle хак ссылки на следующую и предыдущую в полной новости
Комментарии 10