Бормотухи.НЕТ

Бормотухи.НЕТ (http://www.bormotuhi.net/index.php)
-   Модули, Хаки, Примочки для DLE (http://www.bormotuhi.net/forumdisplay.php?f=177)
-   -   [Инструкция] Ссылки на предыдущую и следующую новости в полной новости (http://www.bormotuhi.net/showthread.php?t=16971)

jakal 16.09.2012 11:59

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

Вот нашел на просторах Internet-а, такой хак который в fullstory.tpl добавляет ссылки prev-link и next-link (хак был немного не доработан, но его помогли доработать и усовершенствовать -=MaD_DoG=- и SaD)

Вот сам хак и его описание:

Данный хак позволяет добавлять ссылки на следующую и предыдущую новости в просмотре полной новости для той же категории что и новость. Это дополнительно поможет в перелинковке внутренних страниц.

Возможности:
- Отображает ссылки на следующую и предыдущую новости в той же категории что и просматриваемая новость.
- В случае отсутствия новости, ссылка не отображается.
- Ссылки выводятся относительно даты просматриваемой новости.
- Простая установка (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'] ) {
но у меня на 9.6 такая строка была
Код:

if( $config['related_news'] AND $view_template != "print"  AND strpos( $tpl->copy_template, "{related-news}" ) !== false) {
выше вставить:
Нажми для просмотра
Код:

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 Link
if( $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 Link
if( $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 в том месте, где надо отображать ссылки
вставить:
Код:

{prev-link} - предыдущая новость
{next-link} - следующая новость

5. В админке в разделе "Настройки системы" -> "Новости" не забудьте поставить "Показывать предыдущую и следующую новость?" - "Да"

6. Если у Вас нету в БД в таблице dle_post такой ячейки flag, то надо сделать такой запрос в Вашу Базу Данных
Код:

ALTER TABLE `dle_post` ADD `flag` VARCHAR (3) NOT NULL
p.s. Если Вы хотите что бы у Вас вместо предыдущей и следующей новости выводилось не название этих новостей, а например картинки (стрелочки, по которым кликаешь и переходишь на след. или предыдущую новость), то нужно найти в файле engine/modules/show.full.php

такую строку:
Код:

$prev_link = "<a href=". $prev_link .">" . stripslashes( $prevlink['title'] ) . "</a>";
и заменить ее на такую:
Код:

$prev_link = "<a  class='myLinkprev' href='". $prev_link ."'>" . stripslashes( $prevlink['title'] ) . "</a>";
далее, найти такую:
Код:

$next_link = "<a href=" . $next_link . ">" . stripslashes( $nextlink['title'] ) . "</a>";
и заменить ее на такую:
Код:

$next_link = "<a  class='myLinknext' href='". $next_link ."'>" . stripslashes( $nextlink['title'] ) . "</a>";
далее в Ваш style.css, добавить в самый низ такое
Код:

.myLinkprev {
        background:url(../images/left_st.png) no-repeat left center;
        DISPLAY: inline-block;
        MARGIN: 0px 6px 6px 0px;
        WIDTH: 142px;
        HEIGHT: 150px;
        outline: none;
        text-indent:-666px;
        overflow:hidden;
}
.myLinknext {
        background:url(../images/right_st.png) no-repeat left center;
        DISPLAY: inline-block;
        MARGIN: 0px 6px 6px 0px;
        WIDTH: 142px;
        HEIGHT: 150px;
        outline: none;
        text-indent:-666px;
        overflow:hidden;
}
.sageata:hover {
BACKGROUND-COLOR: #e5e5e5
}

Вот эти две кнопочки
http://www.bormotuhi.net/imagehostin...5996a417d2.pnghttp://www.bormotuhi.net/imagehostin...5993ec56b0.png
Ну свои конечно же никто не запрещает нарисовать)

После того как Вы сделали изменения в fullstory.tpl, должно получится примерно так:
Код:

{prev-link}{full-story}{next-link}
что бы более-менее украсить надо сделать следущее:
у меня к примеру тег {full-story} в "моем" шаблоне был заключен в такой блок:
Код:

  <div class="short5">
    <div id="news-id-169" style="display:inline;">
          {full-story}
    </div>   
  </div>

то есть сейчас создав таблицу, нам нужно будет оставить весь этот блок, в нужной ячейки таблицы, так как этот блок сохраняет стили Вашего {fullstory}, по этому вместо того блока что я показал выше, я сделал такое

Код:

    <TABLE width="100%">

        <TBODY>
        <TR>
        <TD class=sageata width=64>
                <SPAN onmouseover=this.style.opacity=1;this.filters.alpha.opacity=100 style="FILTER: alpha(opacity=20); opacity: 0.7" onmouseout=this.style.opacity=0.7;this.filters.alpha.opacity=20>
        {prev-link}
        </SPAN>
                </TD>
                 
        <TD>
            <CENTER>
            <div class="short5">
            <div id="news-id-169" style="display:inline;">
          {full-story}
            </div>   
            </div>
                        </CENTER>
                </TD>
                 
        <TD class=sageata width=64> 
                  <SPAN onmouseover=this.style.opacity=1;this.filters.alpha.opacity=100 style="FILTER: alpha(opacity=20); opacity: 0.7" onmouseout=this.style.opacity=0.7;this.filters.alpha.opacity=20>
          {next-link}
          </SPAN>
                </TD>
               
                </TR>
                </TBODY>
        </TABLE>

В общем, если найдете еще какие то баги, или как то усовершенствуете этот хак, буду благодарен если поделитесь своими доработками!)

apelisin 17.09.2012 00:41

спасибо!)Полезная штука!)подходит для любого сайта!)вот только муторно устанавливать,но это не проблема для тех кому это необходимо!))

jakal 17.09.2012 01:18

Ничего там муторного нет) Ставится легко, максимум 2 минуты Вашего времени и все!
И можно листать новости, не выходя из просмотра полной новости.

Алёнка 31.03.2013 21:59

Помогите советом этому пользователю AndreyTs, вот его просьба
Цитата:

Сообщение от AndreyTs
Делал этот хак на двух сайтах, все изменения производил полностью идентично. Настройки скрипта один в один в админке.
Из разницы только в версиях на удачном примере версия 9.5 там где чуть вышло не так как ожидал версия 9.7
В чём суть разницы, на версии 9.5 получилось всё замечательно и ссылки на новость выглядят
148-новость
а в 9.7
2013_03_24_новость
а если идти по меню сайта то ссылка выглядит вполне нормально, то есть не по дате а по номеру новости и получается что на каждую новость ведут два вида ссылок и так же видят их и поисковики, тем более ссылки по дате стали быстрее индекситься и страницы теперь то двоятся то выпадают с поиска.
Единственное что ещё было, в первом случае запросов к базе ни каких давать не пришлось, всё сразу заработала а во втором делали запрос, но могло ли это быть из-за этого?
Пробовал даже там где разные чуть были файлы, прсото копировать с одного домена на другой, ни чего не изменялось.
Но выдаёт всё ту же ошибку, первоначально пробовал в таком виде, но ведь даже и там как нет ссылки.

Очень прошу оказать помощь по возможности.
Делал этот хак на двух сайтах, все изменения производил полностью идентично. Настройки скрипта один в один в админке.
Из разницы только в версиях на удачном примере версия 9.5 там где чуть вышло не так как ожидал версия 9.7
В чём суть разницы, на версии 9.5 получилось всё замечательно и ссылки на новость выглядят
_//сайт.ru/каталог/подкаталог/148-новость.html
а в 9.7
_//сайт.ru/2013/03/24/новость.html а если идти по меню сайта то ссылка выглядит вполне нормально, то есть не по дате а по номеру новости и получается что на каждую новость ведут два вида ссылок и так же видят их и поисковики, тем более ссылки по дате стали быстрее индекситься и страницы теперь то двоятся то выпадают с поиска.
Единственное что ещё было, в первом случае запросов к базе ни каких давать не пришлось, всё сразу заработала а во втором делали запрос, но могло ли это быть из-за этого?
Пробовал даже там где разные чуть были файлы, прсото копировать с одного домена на другой, ни чего не изменялось.
Алёна, если можно, не можешь тогда это запостить в эту тему
У меня сайт в плохое положение попадает из-за этого)


AndreyTs 31.03.2013 23:04

Алёнка, Спасибо Алёна

jakal 05.04.2013 16:39

Насколько я понял, то Вас интересует почему, на сайтах ссылки имеют разный вид:
1. 148-новость
2. 2013_03_24_новость
если это все что Вас не устраивает, то вся причина в виде ЧПУ, смените вид ЧПУ и все будет ок)
p.s.в Админке Настройка системы => Включить ЧПУ: ДА/НЕТ
и ниже
Тип ЧПУ:Тип 2
где Тип 2, ссылки на полную новость будут иметь вид http://site.ru/категория/подкатегория/id-имя новости.html

Надеюсь я Вас правильно понял. Удачи!)

AndreyTs 05.04.2013 23:23

jakal, Доброй ночи. Но у меня именно так и включено, но обоих сайтах совершенно одинаковые настройки в админках, один в один. И включено именно ЧПУ тип 2.
Из-за того что в первом случае в базе не пришлось создавать таблицу а во втором пришлось, не думаю что это повлияло, это ведь от движка идёт а не от базы...
Но в чём дело совсем не понимаю, а Яша уже очень часто выдаёт страницы именно по датам, видимо те ссылки хорошо индексирует да и они с хорошим анкором получаются, ну почти с хорошим)


Текущее время: 20:10. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot

Время генерации страницы 0.04866 секунды с 8 запросами