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

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



Представляем реализацию для перелицовки ссылок новостей, хак Ссылки на следующую и предыдущую новость для DLE 10.4 движка DataLife Engine 10.5. Хак для DLE выводит ссылки перехода на предыдущую и следующую новость в полной публикации, что делает перелинковку внутренних страниц сайта и добавляет вес страницам. После небольших правок автору удалось его подключить на DLE 10.4 .

Установка!

Открыть /engine/modules/show.full.php найти:

if( $config['related_news'] AND $view_template != "print") {


Выше вставьте

// Начало: ссылки на следующую и предыдущую новости
$backnext_allow = 1;
    if( $backnext_allow ) {

        if( !$config['allow_cache'] ) {
            $config['allow_cache'] = 1;
            $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 ) {
    $backlink = $db->super_query( "SELECT id,  title, category, alt_name FROM " . PREFIX . "_post WHERE id < {$row['id']} AND category = '{$row['category']}' AND approve = '1' ORDER BY id DESC LIMIT 0,1" );
    if( $backlink ) {
        $backlink['category'] = intval( $backlink['category'] );
            if( strlen( $backlink['title'] ) > 70 ) $backlink['title'] = substr( $backlink['title'], 0, 70 ) . "...";
                if( $config['allow_alt_url'] ) {
                    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'] . "index.php?newsid=" . $backlink['id'];
                }
        } else {
            $back_link = "";
        }
        if( $back_link ) {
            $back_link = "<span>Ранее &raquo; <b><a href=\"" . $back_link . "\">" . stripslashes( $backlink['title'] ) . "</a></b></span>";
        }
        $db->free();
        create_cache( "backlink", $back_link, $row['id'] );
    }

// Следующая новость
if( $next_link === FALSE ) {
    $nextlink = $db->super_query( "SELECT id, title, category, alt_name FROM " . PREFIX . "_post WHERE id > {$row['id']} AND category = '{$row['category']}' AND approve = '1' ORDER BY id ASC LIMIT 0,1" );
    if ( $nextlink ) {
        $nextlink['category'] = intval( $nextlink['category'] );
            if( strlen( $nextlink['title'] ) > 70 ) $nextlink['title'] = substr( $nextlink['title'], 0, 70 ) . "...";
            if( $config['allow_alt_url'] ) {
                    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'] . "index.php?newsid=" . $nextlink['id'];
                }
            } else {
                $next_link = "";
            }
            if( $next_link ) {
                $next_link = "<span style=\"float:right\">&laquo; Далее <b><a href=\"" . $next_link . "\">" . stripslashes( $nextlink['title'] ) . "</a></b></span>";
            }
            $db->free();
            create_cache( "nextlink", $next_link, $row['id'] );
        }

// Сссылки
        $tpl->set( '{back-link}', $back_link );
        $tpl->set( '{next-link}', $next_link );

        if( $revert_cache ) $config['allow_cache'] = 0;
    }
// Конец: ссылки на следующую и предыдущую новости


В папке вашего шаблона dle найдите файл fullstory.tpl, откройте и после строки

{full-story}


Вставить:

<br/><br/>
{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}

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



Автор оригинала: Хз
Автор адаптации: SX2
Версия : проверено на DLE 10.4 будет работать на Dle 10.5

Внимание! ID может быть идти не по порядку! дело в том, что новости добавляются в разные категории! Поэтому ссылки на следующую и предыдущую новость, идут только в текущей категории! Если нужно чтобы выводились ссылки на все новости согласно очередностей публикаций, нужно убрать с запроса:

AND category = '{$row['category']}'





Скачать из категории хаки для dle, хак ссылки на следующую и предыдущую новости для DLE 10.4

Ssylki-na-sleduyuschuyu-i-predyduschuyu-novosti-dlya-DLE-10.4.rar [36,65 Kb] (cкачиваний: 123)
  • 80

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

Serg567 от 17 ноября 2018 18:32
все круто, но через предыдущая-следующая производится навигация и по неопубликованным новостям. Допустим у меня 20 новостей запланированны для публикации на определенные даты, но теперь юзеры могут их просматривать, листая через данную навигацию посты. Также они начинают индексироваться. Баг однако! Уж незнаю чей, движка или хака...
dle9.com от 19 апреля 2018 16:24
Цитата: Андрей
Подскажите пожалуйста как сделать что бы также выводилось превью статьи? Как в shortstory.



Придется дописать пару запросов, это надо искать похожие строчки в коде движка и пробовать, вот тут думаю вам быстрее помогут dle-faq . ru с решением вашего вопроса
Андрей от 18 апреля 2018 16:02
Подскажите пожалуйста как сделать что бы также выводилось превью статьи? Как в shortstory.
dle9.com от 14 апреля 2018 10:07
Цитата: qwer76
Здравствуйте, как вместо названия новости вписать свой текст в ссылках?

Здравствуйте,
Пример можно, это может быть дополнительный текст типа:
Ваш текст (следующая новость ссылка)

                $next_link = "<span style=\"float:right\">&laquo; Далее <b><a href=\"" . $next_link . "\">" . stripslashes( $nextlink['title'] ) . "</a></b></span>";


решения в этой строчке вместо слова (title) вписываете свое слово
qwer76 от 13 апреля 2018 16:53
Здравствуйте, как вместо названия новости вписать свой текст в ссылках?
qwer76 от 15 февраля 2018 22:58
Здравствуйте,
найти в строке кода выше

$config['allow_cache'] = 1;

и поменять на 1 на 0 , то есть выключить кеш


Спасибо!
dle9.com от 15 февраля 2018 11:59
Цитата: qwer76
Здравствуйте, а как в данном коде отключить кэш?


Здравствуйте,
найти в строке кода выше

$config['allow_cache'] = 1;

и поменять на 1 на 0 , то есть выключить кеш
qwer76 от 15 февраля 2018 00:59
Здравствуйте, а как в данном коде отключить кэш?
Саня от 10 февраля 2017 18:42
Как реализовать что бы перекидывало на следующую новость не по id а по рейтингу? Третий тип рейтинга.
diman707 от 18 января 2016 23:40
Админ спасибо тебе! Очень выручил, но код все равно пришлось немного доработать.
Добавить комментарий

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

    • 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