Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Хак читать предыдущую новость или следующую

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


     11.08.2012    хак, чтение новости    Общие вопросы по PHP, Хаки    7321

вопрос
Привет народ, нужно реализовать кнопку (хак) назад и в перёд при чтение новости, то есть к примеру человек зашёл в новость почитал и захотел перейти с той же страницу на следующую новость, ну или аналогично на предыдущую новость.
Требования: чтобы переходило назад или в перёд на новость в данной категории, то есть с этой категории листалось или из этих, если категорий выбрано несколько.
хак:
<a href="javascript:history.go(-1)">< вернуться</a>
вернуться назад знаем, но он как бы возвращает на 1 историю назад, а нужно типо такого что то реализовать, но чтобы листалось как описал выше.
Кто что может посоветовать или сказать как сделать, буду только рад, думаю и не я один!

Ответил: Yamakasi


нашёл и сделал!
Реализовать так:

В
engine/modules/show.full.php


перед:
if( $config['related_news']


вставить:
// Back link
                $backlink = $db->super_query( "SELECT id, title, category, alt_name, flag FROM " . PREFIX . "_post WHERE id > " . $row['id'] . " AND category = " . $row['category'] . " AND approve = 1 ORDER BY date ASC LIMIT 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 = "";
                }
                
                // Next Link
                $nextlink = $db->super_query( "SELECT id, title, category, alt_name, flag FROM " . PREFIX . "_post WHERE id < " . $row['id'] . " AND category = " . $row['category'] . " AND approve = 1 ORDER BY date DESC LIMIT 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 = "";
                }
                // Back and Next Link Template
                if( $back_link )
                {
                    $back_link = "Предыдущая статья: <a href=\"" . $back_link . "\">" . stripslashes( $backlink['title'] ) . "</a>";
                }
                if( $next_link )
                {
                    $next_link = "Следующая статья: <a href=\"" . $next_link . "\">" . stripslashes( $nextlink['title'] ) . "</a>";
                }
                $tpl->set( '{back-link}', $back_link );
                $tpl->set( '{next-link}', $next_link );


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

ну и в style.css сделать свой стиль для кнопок.
Думаю ответ понадобится!

10 комментариев

promax
Юзер

promax - 11 августа 2012 19:26 -

Все хорошо , но в оригинале , есть кусок кода который позволяет кэшировать данные

вот собственно и он _ttp://dleshka.org/hacks/1412-xak-ssylki-na-predydushhuyu-i-sleduyushhuyu-novosti.html

Yamakasi
Юзер

Yamakasi - 13 августа 2012 12:35 -

promax,
Я где брал, там вроде тоже самое было написано и про кеширование ))) хотя я не профи в коде и не сильно знаю правда или нет!
Смотря по примеру по Вашей ссылки надо больше делать и править, у меня меньше, думаю чем то всё токи отличается, надо и Ваш пример опробовать, но думаю тут надо услышать мнение кодеров о данном вопросе и решение!

Димка_87
Юзер

Димка_87 - 31 августа 2015 16:52 -

Yamakasi,
подскажи как вместо заголовка новости поставить просто картинку со стрелкой?

Yamakasi
Юзер

Yamakasi - 13 августа 2012 12:54 -

Цитата: Yamakasi
вот собственно и он _ttp://dleshka.org/hacks/1412-xak-ssylki-na-predydushhuyu-i-sleduyushhuyu-novosti.html

Так я опробовал Ваши пример ))
Увы мой вариант куда лучше я так вижу, так как при вставке Вашего кода, почти 70% новостей потеряли след и пред кнопку, всё делал правильно и кеш чистил и т.д., руки нормальные!!!
А патом решил опять свой вариант вернуть, и результат хороший!!!

promax
Юзер

promax - 13 августа 2012 13:23 -

абсолютно ничем не отличается , просто добавлена возможность кэширования и в админке отключать и включать вывод этих ссылок )

promax
Юзер

promax - 13 августа 2012 13:19 -

у меня стоит , все отлично работает )

Ardjuna2010
Юзер

Ardjuna2010 - 28 сентября 2012 10:41 -

Данный хак не работает на DLE 9.6 и 9.7, кто сможет наладить код, помогите пожалуйста, срочно надо, могу даже подкинуть пару монет. Спасибо

sane11k
Юзер

sane11k - 24 декабря 2012 04:16 -

Для дли 9.6 и 9.7 он ругается на flag его убираешь и он выводит новости но вот тока ссылки на новости не правельные стоят, должно так /домен/категория/новость а он заместо категории подставляет дату помогите решить вопрос

sane11k
Юзер

sane11k - 24 декабря 2012 04:29 -

убрал из кода $nextlink['flag'] and и flag все заработало я так понимаю такого атрибута в dle 97 просто нет

ПафНутиЙ
Админ

ПафНутиЙ - 24 декабря 2012 09:24 -

поставьте модуль LinkEnso - его работу можно наблюдать ниже формы добавления комментария

Каков вопрос - таков и ответ. Просто помните об этом.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх