Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Выборка по категориям (DLE 10.2)

Выборка по категориям (DLE 10.2)


     28.04.2014    dle, php, mysql    Общие вопросы по PHP, Хаки, MySQL    4169

вопрос
Существует хак Предыдущая - следующая новость [DLE 9.2 - 10.0], хорошо работает и на 10.2. Новости листает по всем категориям. Вопрос в следующем: как сделать выборку только по опледеленным категориям, а не по всем?

Ответил: ПафНутиЙ


linkenso помог.

12 комментариев

Attyla
Юзер

Attyla - 28 апреля 2014 23:26 -


$row_next = $db->get_row($db->query("SELECT id,title,alt_name,date,category FROM " . PREFIX . "_post WHERE `id`='$nextid' AND category=твоя категория"));
$row_prev = $db->get_row($db->query("SELECT id,title,alt_name,date,category FROM " . PREFIX . "_post WHERE `id`='$previd' AND category=твоя категория"));

maclay
Юзер

maclay - 28 апреля 2014 23:33 -

а если несколько категорий? через запятую не катит :)

Attyla
Юзер

Attyla - 28 апреля 2014 23:50 -

Передайте в скрипт текущую категорию

vitnet
PHP-developer

vitnet - 28 апреля 2014 23:50 -

В таком случае поиск (выбор) происходит строго только по отмеченным категориям, т.е.:
Фильм в кат. 1 отобразится только если вы будете просматривать такой-же фильм с такими-же кат. 1 и.т.д
Фильм в кат. 1,2 отобразится только если вы будете просматривать такой-же фильм с такими-же кат. 1,2 и.т.д
Фильм в кат. 1,2,3 отобразится только если вы будете просматривать такой-же фильм с такими-же кат. 1,2,3 и.т.д

В таком случае можно проделать следующее:
$allow_cat = explode ( ',', "1,2,3," ); // ID категорий через запятую

if( $config['allow_multi_category'] ) {
    $stop_list = "category regexp '[[:<:]](" . implode ( '|', $allow_cat ) . ")[[:>:]]' AND ";
} else {
    $stop_list = "category IN ('" . implode ( "','", $allow_cat ) . "') AND ";
}

/* Если будет ругаться, тогда оставить лишь --> $stop_list = "category IN ('" . implode ( "','", $allow_cat ) . "') AND "; */

$row_next = $db->get_row($db->query( "SELECT id, title, alt_name, date, category FROM " . PREFIX . "_post WHERE {$stop_list} `id`='$nextid'" ));
$row_prev = $db->get_row($db->query( "SELECT id, title, alt_name, date, category FROM " . PREFIX . "_post WHERE {$stop_list} `id`='$previd'" ));

vitnet
PHP-developer

vitnet - 28 апреля 2014 23:28 -

$db->query( "SELECT id, title, alt_name, date, category FROM " . PREFIX . "_post WHERE id = '$nextid' AND category = 'id категории'" );

vitnet
PHP-developer

vitnet - 28 апреля 2014 23:29 -

Attyla,
опередил :)

sadan
Юзер

sadan - 29 апреля 2014 07:03 -

Вот хак Ссылки на следующую и предыдущую новости для DLE 10.1
Подключение в fullstory.tpl:
{include file="engine/modules/nextpreviewnews.php"}

Можно делать так в fullstory.tpl:
[catlist=1,2]{include file="engine/modules/nextpreviewnews.php"}[/catlist]

Attyla
Юзер

Attyla - 29 апреля 2014 10:26 -

Боюсь, что для правильной работы надо будет сделать более глубокие изменения в коде. Причина: новость с id больше на 1 или меньше может быть из другой категории чем та которую вы просматриваете.

vitnet
PHP-developer

vitnet - 29 апреля 2014 11:42 -

;)
$db->query( "SELECT id, date, title, category, alt_name FROM " . PREFIX . "_post WHERE (`id` = (SELECT MAX(`id`) FROM " . PREFIX . "_post WHERE {$stop_list} `id` < " . $row['id'] . " AND approve = '1') OR `id` = (SELECT MIN(`id`) FROM " . PREFIX . "_post WHERE `id` > " . $row['id'] . " {$stop_list} AND approve = '1'))" );

maclay
Юзер

maclay - 29 апреля 2014 21:37 -

Думал тут все проще :) мне просто нужно, чтобы этот хак работал именно по определенным категориям. у меня с помощью этого мода картинки листаются (предыдущая/следующая), но есть категории без картинок, и выходит когда я на картинке нажимаю "следующая", то включается не следующая новость с картинкой как задумывалось, а следующая новость из другой категории, которая не является галереей... Специальный мод галлереи мне не подходит тоже..

В общем спасибо за попытку помочь) Буду дальше думать, что с этим делать

ПафНутиЙ
Админ

ПафНутиЙ - 30 апреля 2014 18:58 -

а Linkenso не пробовали?

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

maclay
Юзер

maclay - 30 апреля 2014 21:56 -

Вот спасибо большое за подсказку :) то, что надо!
Вопрос закрыт.

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

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

наверх