Перейти к публикации

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


Рекомендованные сообщения

Здравствуйте, подскажите как сделать автоматом, чтобы в полной версии новости ставились ссылки на следующую и предыдущую новости из этой же категории

Ссылка на сообщение
Поделиться на других сайтах
1. Если ваша тема начинается с вопроса и вам нужна какая либо помощь, то в самой теме в обязательном порядке вы должны указывать ссылку на ваш сайт. Если ваш сайт находится в локальной сети и вы не можете предоставить ссылку то отправляйте персональное сообщение с вопросом в службу поддержки непосредственно с сайта http://dle-news.ru/, вам ответят на ваш вопрос в персональном порядке, в случае если пользуетесь легальной копией скрипта. Если вы не указали сайт, то ваша тема будет закрыта, а аккаунт на форуме заблокирован.
Ссылка на сообщение
Поделиться на других сайтах

помогите, очень нужно... уже неделю голову ломаю...

В скрипте такой возможности нет

Ссылка на сообщение
Поделиться на других сайтах

Жалко, тогда подскажите можно ли реализовать такую схему:

Создать два доп. поля "следующая" и "предыдущая" туда просто вписывать id статьи, но чтобы ссылка была с чпу?

Ссылка на сообщение
Поделиться на других сайтах

Создать два доп. поля "следующая" и "предыдущая" туда просто вписывать id статьи, но чтобы ссылка была с чпу?

вписывайте ссылку целиком, хотя непонятно как вы вообще собираетесь это делать, откуда вы будете брать ID или ссылку следующей новости или например предыдущая новость была удалена. Будете постоянно править соседние новости

Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, подскажите как сделать автоматом, чтобы в полной версии новости ставились ссылки на следующую и предыдущую новости из этой же категории

В файле 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 ) {

			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 ) {

			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

		$back_link = "<a href=\"" . $back_link . "\">" . stripslashes( $backlink['title'] ) . "</a>";

		$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} - следующая новость

Ссылка на сообщение
Поделиться на других сайтах

Дополнение.

После:

if( $backlink ) {
Добавить:
$backlink['date'] = strtotime( $backlink['date'] );

$backlink['category'] = intval( $backlink['category'] );

После:
if ( $nextlink ) {
Добавить:
$nextlink['date'] = strtotime( $nextlink['date'] );

$nextlink['category'] = intval( $nextlink['category'] );

Ссылка на сообщение
Поделиться на других сайтах

Дополнение:

Найти


$back_link = "<a href=\"" . $back_link . "\">" . stripslashes( $backlink['title'] ) . "</a>";

$next_link = "<a href=\"" . $next_link . "\">" . stripslashes( $nextlink['title'] ) . "</a>";

Заменить на:

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>";

}

Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, у меня вопрос про сортировку, у меня на сайте сортировка идет по названию, а тут она идет по дате добавления.

Так вот чтобы изменить сортировку ссылок хватит ли изменить код только в этом месте

" AND approve = 1 ORDER BY date ASC LIMIT 1"

заменить на

" AND approve = 1 ORDER BY title ASC LIMIT 1"

Изменено пользователем raspin
Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте, у меня вопрос про сортировку, у меня на сайте сортировка идет по названию, а тут она идет по дате добавления.

Так вот чтобы изменить сортировку ссылок хватит ли изменить код только в этом месте

" AND approve = 1 ORDER BY date ASC LIMIT 1"

заменить на

" AND approve = 1 ORDER BY title ASC LIMIT 1"

Нет.

Кстати, вот исправленный код, в старом были небольшие недоработки.

            // Back Link

            $backlink = $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 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, 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 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 );
А для того чтобы сортировка была по названию, попробуйте так:
            // Back Link

            $backlink = $db->super_query( "SELECT id, date, title, category, alt_name, flag FROM " . PREFIX . "_post WHERE title < '{$row['title']}' AND category = '{$row['category']}' AND approve = '1' ORDER BY title DESC 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, date, title, category, alt_name, flag FROM " . PREFIX . "_post WHERE title > '{$row['title']}' AND category = '{$row['category']}' AND approve = '1' ORDER BY title ASC 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 );

Код не проверял, но должен работать.

Ссылка на сообщение
Поделиться на других сайтах
  • 1 год спустя...
  • 2 года спустя...

Прошло 4 года, чтонибудь изменилось? Какие сейчас актуальные способы для реализации такой функции? или может можно уже стандартными средствами решить... в документации вроде нет описания.

Ссылка на сообщение
Поделиться на других сайтах
  • 6 месяцев спустя...

Прошло 4 года, чтонибудь изменилось? Какие сейчас актуальные способы для реализации такой функции? или может можно уже стандартными средствами решить... в документации вроде нет описания.

Присоединяюсь к вопросу. Есть ли рабочее решение поставить ссылки на следующею/предыдущею новости в категории?

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...