Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы по PHP Хак читать предыдущую новость или следующую

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


     11.08.2012    Общие вопросы по PHP, Хаки    3367

вопрос
Привет народ, нужно реализовать кнопку (хак) назад и в перёд при чтение новости, то есть к примеру человек зашёл в новость почитал и захотел перейти с той же страницу на следующую новость, ну или аналогично на предыдущую новость.
Требования: чтобы переходило назад или в перёд на новость в данной категории, то есть с этой категории листалось или из этих, если категорий выбрано несколько.
хак:
<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
29

182 | 174

promax - 11 августа 2012 19:26 - Юзер

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

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

Yamakasi
5

198 | 105

Yamakasi - 13 августа 2012 12:35 - Юзер

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

Димка_87
25 | 1

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

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

Yamakasi
5

198 | 105

Yamakasi - 13 августа 2012 12:54 - Юзер

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

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

promax
29

182 | 174

promax - 13 августа 2012 13:23 - Юзер

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

promax
29

182 | 174

promax - 13 августа 2012 13:19 - Юзер

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

Ardjuna2010
2 | 2

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

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

sane11k
2 | 2

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

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

sane11k
2 | 2

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

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

ПафНутиЙ
1065

3396 | 2434

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

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

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

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

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