Все для DataLife Engine / DLE хаки / Хак для DLE / Dle хак ссылки на следующую и предыдущую в полной новости

Dle хак ссылки на следующую и предыдущую в полной новости


Хак для 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 теги :

[next-url] Текст [/next-url]

Выводят текст заключенных в них, если следующая новость присутствует на сайте

{next-url}

Выводит URL следующей публикации

{next-title}

Выводит заголовок следующей публикации

[prev-url] Текст [/prev-url]

Выводят текст заключенных в них, если предыдущая новость присутствует на сайте

{prev-url}

Выводит URL предыдущей публикации

{prev-title}

Выводит заголовок предыдущей новости



Dle хак ссылки на следующую и предыдущую в полной новости
Автор не известен

На https://dle9.com/ рекомендуем Dle хак ссылки на следующую и предыдущую в полной новости

Ssylki-na-predyduschuyu-i-sleduyuschuyu-novosti-9.x-update.rar [7,05 Kb] (cкачиваний: 158)
  • 100

Комментарии 10

dle9.com от 29 марта 2014 06:49
Цитата: wrip
у меня тоже на дле 9.5 не работает (Ругается на строку 1128)И в админке ничего непоявилось, никакого включения (предыдущие и следующие)

попробуйте этот вариант
https://dle9.com/haki/3021-hak-dle-100-ssylki-na-sleduyuschuyu-i-predyduschuy
u-novosti.html
wrip от 29 марта 2014 00:38
у меня тоже на дле 9.5 не работает (Ругается на строку 1128)И в админке ничего непоявилось, никакого включения (предыдущие и следующие)
Андрей77 от 30 марта 2013 11:08
Поставил тот же хак на версию 9.7 но там ссылки идут совсем по другому почему то.
если в версии 9.5
_//сайт.ru/каталог/подкаталог/148-новость.html
то в 9.7
_//сайт.ru/2013/03/24/новость.html
И это очень не гуд получается, что не так и почему так всё? Настройки в админке один в один на обоих сайтах
dle9.com от 21 января 2013 21:47
A-Jey,
причем тут похожие новости?
Сайт и так на русском (ну, если только не древнерусским языков описывать)
Этот хак добавляет навигацию в полной новости (которая есть только на главной), но в этот случаи переход осуществляется на следующий полную новость, не знаю куда уж ясней :winked:
A-Jey от 21 января 2013 18:57
Чет не понял что оно дает, у меня и так в шаблоне выводятся похожие новости, а что эта дает не пойму. Если можно обьясните по русски и понятно?
mrWhite от 17 ноября 2012 14:59
Все прекрасно работает на 9.7
dle9.com от 26 октября 2012 19:40
Изменения можно увидеть только в полной новости, представляет собой навигацию похожую на главной странице, так что в админ панели не чего и не появится.
Что касается ошибку проверю на 9.5 в ближайшее время, могут предположить, что хак для версии ниже, поэтому ошибка
Андрей777 от 26 октября 2012 17:37
Версия 9.5
Ругается на строку 1128, то есть как понимаю на это
?>
Но ив админке не было ни каких изменений.
Все изменения вносил с блокнота.
dle9.com от 26 октября 2012 09:27
Что же не кто пишет версию движка, это имеет большое значение
Код лучше вставлять из тестового файла, иногда из браузера с ошибками код добавляется.
Андрей777 от 26 октября 2012 04:59
После внесённых изменений сайт на главной работает но при переходи в новость ругается на внесённую строку изменений и не открывается страницу
engine/modules/show.full.php
В моём файле было не
if( $config['related_news'] ) {
а
if( $config['related_news'] AND $view_template != "print" ) {
Но и даже попытка сделать строку такой же ни чего не дала.
И не увидел в админ панели ни каких изменений.
Добавить комментарий

Оставить комментарий

    • bowtiesmilelaughingblushsmileyrelaxedsmirk
      heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
      winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
      worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
      expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
      disappointedconfoundedfearfulcold_sweatperseverecrysob
      joyastonishedscreamtired_faceangryragetriumph
      sleepyyummasksunglassesdizzy_faceimpsmiling_imp
      neutral_faceno_mouthinnocent