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

Вернуться   Бормотухи.НЕТ > Web-мастеру > DataLife Engine > Модули, Хаки, Примочки для DLE
Расширенный поиск

Модули, Хаки, Примочки для DLE Тут собираются темы с модулями, хаками и разными примочками для движка DataLife Engine

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2012, 12:59 Вверх   #1
Грамотный форумчанин
 
Аватар для jakal
jakal вне форума
Доп. информация
По умолчанию Ссылки на предыдущую и следующую новости в полной новости

Всем привет!

Вот нашел на просторах 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
}
Вот эти две кнопочки

Ну свои конечно же никто не запрещает нарисовать)

После того как Вы сделали изменения в 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>
В общем, если найдете еще какие то баги, или как то усовершенствуете этот хак, буду благодарен если поделитесь своими доработками!)

Последний раз редактировалось Serberg; 16.09.2012 в 13:19..
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
Старый 17.09.2012, 01:41 Вверх   #2
Знаток
 
Аватар для apelisin
apelisin вне форума
Доп. информация
По умолчанию

спасибо!)Полезная штука!)подходит для любого сайта!)вот только муторно устанавливать,но это не проблема для тех кому это необходимо!))
  Ответить с цитированием
Старый 17.09.2012, 02:18 Вверх   #3
Грамотный форумчанин
 
Аватар для jakal
jakal вне форума
Доп. информация
По умолчанию

Ничего там муторного нет) Ставится легко, максимум 2 минуты Вашего времени и все!
И можно листать новости, не выходя из просмотра полной новости.
  Ответить с цитированием
Старый 31.03.2013, 22:59 Вверх   #4
Зам. администратора
 
Аватар для Алёнка
Алёнка вне форума
Доп. информация
По умолчанию

Помогите советом этому пользователю 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 а если идти по меню сайта то ссылка выглядит вполне нормально, то есть не по дате а по номеру новости и получается что на каждую новость ведут два вида ссылок и так же видят их и поисковики, тем более ссылки по дате стали быстрее индекситься и страницы теперь то двоятся то выпадают с поиска.
Единственное что ещё было, в первом случае запросов к базе ни каких давать не пришлось, всё сразу заработала а во втором делали запрос, но могло ли это быть из-за этого?
Пробовал даже там где разные чуть были файлы, прсото копировать с одного домена на другой, ни чего не изменялось.
Алёна, если можно, не можешь тогда это запостить в эту тему
У меня сайт в плохое положение попадает из-за этого)
  Ответить с цитированием
Старый 01.04.2013, 00:04 Вверх   #5
Пользователь
 
Аватар для AndreyTs
AndreyTs вне форума
Доп. информация
По умолчанию

Алёнка, Спасибо Алёна
  Ответить с цитированием
Старый 05.04.2013, 17:39 Вверх   #6
Грамотный форумчанин
 
Аватар для jakal
jakal вне форума
Доп. информация
По умолчанию

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

Надеюсь я Вас правильно понял. Удачи!)
  Ответить с цитированием
Старый 06.04.2013, 00:23 Вверх   #7
Пользователь
 
Аватар для AndreyTs
AndreyTs вне форума
Доп. информация
По умолчанию

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

Метки
fullstory, image, next-link, prev-link, title

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


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


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

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