8Dle
Авторизация

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

Ссылки на следующую и предыдущую новость

Данный хак позволяет добавлять ссылки на следующую и предыдущую новости при просмотре полной новости. Возникла необходимость поставить к себе на сайт такую вещь, но найти ее на форуме не удалось, воспользовался хаком, который:

~ Отображает ссылки на следующую и предыдущую новости в той же категории что и просматриваемая новость.
~ В случае отсутствия новости, ссылка не отображается.
~ Ссылки выводятся относительно даты просматриваемой новости.
~ Простая установка (1 минута).
~ Минимальная правка кода движка.
~ Ссылки кешируются, соответственно снижена нагрузку на базу данных.

Тестировалось на DLE 9.3, но, по идее, будет работать и в более раних версиях движка.


Первый Хак:

1. В файле engine/modules/show.full.php найти:
 if( $config['related_news'] ) {


$backnext_allow = "yes"; 
if( $backnext_allow == "yes" ) { 

if( $config['allow_cache'] != "yes" ) { 
$config['allow_cache'] = "yes"; 
$revert_cache = true; 
} else 
$revert_cache = false; 


$back_link = dle_cache( "backlink", $row['id'] ); 
$next_link = dle_cache( "nextlink", $row['id'] ); 

if( $back_link === FALSE ) { 
// Back Link 
              $backlink = $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( $backlink ) { 
$backlink['date'] = strtotime( $backlink['date'] ); 
$backlink['category'] = intval( $backlink['category'] ); 
if( strlen( $backlink['title'] ) > 75 ) $backlink['title'] = substr( $backlink['title'], 0, 75 ) . " ..."; 
if( $config['allow_alt_url'] == "yes" ) { 
if( $backlink['flag'] and $config['seo_type'] ) { 
if( $backlink['category'] and $config['seo_type'] == 2 ) { 
$back_link = $config['http_home_url'] . get_url( $backlink['category'] ) . "/" . $backlink['id'] . "-" . $backlink['alt_name'] . ".html"; 
} else { 
$back_link = $config['http_home_url'] . $backlink['id'] . "-" . $backlink['alt_name'] . ".html"; 
} 
} else { 
$back_link = $config['http_home_url'] . date( 'Y/m/d/', $backlink['date'] ) . $backlink['alt_name'] . ".html"; 
} 
} else { 
$back_link = $config['http_home_url'] . "index.php?newsid=" . $backlink['id']; 
} 
} else { 
$back_link = ""; 
} 
if( $back_link ) { 
$back_link = "Предыдущая новость: <a href=\"" . $back_link . "\">" . stripslashes( $backlink['title'] ) . "</a>"; 
} 
$db->free(); 
create_cache( "backlink", $back_link, $row['id'] ); 
} 

if( $next_link === FALSE ) { 
// Next Link 
$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 ASC 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'] ); 
} 

// Back and Next Link Template 
$tpl->set( '{back-link}', $back_link ); 
$tpl->set( '{next-link}', $next_link ); 

if( $revert_cache ) $config['allow_cache'] = "no"; 

}


3. В шаблоне fullstory.tpl в том месте, где надо отображать ссылки вставить:
{back-link} - предыдущая новость
{next-link} - следующая новость


Можно сделать по другому:

Открываем 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( 'Показывать предыдущую и следующую новость?', 'Показывать предыдущую и следующую новость?', makeDropDown( array ("1" => "Да", "0" => "Нет" ), "save_con[backnext_allow]", "{$config['backnext_allow']}" ) );

В файле engine/modules/show.full.php найти:
 if( $config['related_news'] ) {

Выше вставить:
if( $config['backnext_allow'] == "1" ) { 
if( $config['allow_cache'] != "yes" ) { 
$config['allow_cache'] = "yes"; 
$revert_cache = true; 
} else 
$revert_cache = false; 
$back_link = dle_cache( "backlink", $row['id'] ); 
$next_link = dle_cache( "nextlink", $row['id'] ); 
if( $back_link === FALSE ) { 
// Back Link 
              $backlink = $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( $backlink ) { 
$backlink['date'] = strtotime( $backlink['date'] ); 
$backlink['category'] = intval( $backlink['category'] ); 
if( strlen( $backlink['title'] ) > 75 ) $backlink['title'] = substr( $backlink['title'], 0, 75 ) . " ..."; 
if( $config['allow_alt_url'] == "yes" ) { 
if( $backlink['flag'] and $config['seo_type'] ) { 
if( $backlink['category'] and $config['seo_type'] == 2 ) { 
$back_link = $config['http_home_url'] . get_url( $backlink['category'] ) . "/" . $backlink['id'] . "-" . $backlink['alt_name'] . ".html"; 
} else { 
$back_link = $config['http_home_url'] . $backlink['id'] . "-" . $backlink['alt_name'] . ".html"; 
} 
} else { 
$back_link = $config['http_home_url'] . date( 'Y/m/d/', $backlink['date'] ) . $backlink['alt_name'] . ".html"; 
} 
} else { 
$back_link = $config['http_home_url'] . "index.php?newsid=" . $backlink['id']; 
} 
} else { 
$back_link = ""; 
} 
if( $back_link ) { 
$back_link = "Предыдущая новость: <a href=\"" . $back_link . "\">" . stripslashes( $backlink['title'] ) . "</a>"; 
} 
$db->free(); 
create_cache( "backlink", $back_link, $row['id'] ); 
} 
if( $next_link === FALSE ) { 
// Next Link 
$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 ASC 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 $back_link = $next_link = '';
// Back and Next Link Template 
$tpl->set( '{back-link}', $back_link ); 
$tpl->set( '{next-link}', $next_link );


В шаблоне fullstory.tpl в том месте, где надо отображать ссылки вставить:
{back-link} - предыдущая новость
{next-link} - следующая новость

Жмите на Кнопу ниже, или подписывайтесь!


Читайте также
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Dle это движок который изначально проектировался для создания новостных сайтов, но по мере своего развития движка значительно расширил свою функциональность и стал универсальным средством разработки и сопровождения сайтов и блогов различной направленности и тематики. По сравнению с другими бесплатными (и некоторыми платными) CMS системами движок dle обладает довольно обширными возможности.

Авторизация