Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Хаки » Категория и lastnews

Категория и lastnews


     10.10.2012    категория, lastnews    Все вопросы » Хаки    10046

вопрос
Последние новости отображаются по ссылке сайт.ру/lastnews, нужно чтобы при переходе по этой ссылке не отображалась одна категория, а при переходе по прямой ссылке на категорю отображались все новости этой категории?

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


Открываем engine/engine.php
Ищем:
// ################ Вывод всех последних новостей #################  

Ниже вставляем:
            $StopCat = "1,2,3"; //Если надо показать всё - закомментровать эту строку.
            if ($StopCat) {            
                $StopCat = explode(",",$StopCat);
                if ($config['allow_multi_category']) {                    
                    $stop_list = "NOT category regexp '[[:<:]](" . implode ( '|', $StopCat ) . ")[[:>:]]' AND ";                
                } else {                    
                    $stop_list = "NOT category IN ('" . implode ( "','", $StopCat ) . "') AND ";                
                }            
            }

Меняем 1,2,3 на ID категорий, которые надо скрыть.
Не проверял, но работать должно.
Отредактировал 13-01-2013, 13:36 - ПафНутиЙ
Причина: Подправил ответ

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

lexa21reg
Юзер

lexa21reg - 11 октября 2012 19:01 -

Сапасибо конечно, но гуглить я умею, и это я пробовал, не работает. dle 9.6

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

ПафНутиЙ - 11 октября 2012 21:25 -

а написать в вопросе об это религия не позволила?
Какую ошибку выдаёт?

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

lexa21reg
Юзер

lexa21reg - 12 октября 2012 07:36 -

Ошибки никакой не выдает, просто не работает, так же эта категория отображается.

lexa21reg
Юзер

lexa21reg - 16 октября 2012 23:17 -

Нашел решение, может кому пригодится!
Открываем engine/engine.php
Ищем:
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

Заменяем на:
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND category<$IDcategory or category>$IDcategory" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];

Перед этим вставляем:
$IDcategory=1;
где 1 это id категории!

lexa21reg
Юзер

lexa21reg - 16 октября 2012 23:23 -

Сори!
Поправка:
$sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND category<$IDcategory or category>$IDcategory" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];


В общем то что в предыдущем сообщении выделено тегами
[b] и [/b]
, то и нужно вставлять в ваш engine/engine.php в соответствующее место.
Работает dle 9.7

revived
Юзер

revived - 20 ноября 2012 15:28 -

lexa21reg А можно теперь опять нормально написать что заменить и что добавить, чет разобраться не могу. Я заменил и ничего не произошло. А когда выше добавляю $IDcategory=1,2,5; то выдаёт ошибку.

DanRacer
Юзер

DanRacer - 11 января 2013 07:43 -

Открываем engine/engine.php
Найти:
$sql_select = "SELECT id, autor, date, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, votes, approve, flag, editdate, editor, reason, view_edit, tags FROM " . PREFIX . "_post WHERE {$stop_list}approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];


Заменить на:
$sql_select = "SELECT id, autor, date, short_story, SUBSTRING(full_story, 1, 15) as full_story, xfields, title, category, alt_name, comm_num, allow_comm, allow_rate, rating, vote_num, news_read, votes, approve, flag, editdate, editor, reason, view_edit, tags FROM " . PREFIX . "_post WHERE {$stop_list}approve=1 AND category<$IDcategory or category>$IDcategory" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];


Выше добавить:
$IDcategory=1;
Где 1 указываем id категории которой нужно скрыть, если таких несколько, указываем через запятую.
Проверено на DLE 9.4

dj-avtosh
PHP-developer

dj-avtosh - 11 января 2013 07:45 -

category<$IDcategory or category>$IDcategory


ой как плохо с синтаксисом...

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

DanRacer
Юзер

DanRacer - 11 января 2013 08:19 -

Цитата: dj-avtosh
category<$IDcategory or category>$IDcategory


ой как плохо с синтаксисом...


C php не дружу вообще, мой пост это просто более внятное пояснение автора вопроса lexa21reg

Sander
PHP-developer

Sander - 11 января 2013 14:16 -

Не используйте код вышеприведенный в комментариях!

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

DanRacer
Юзер

DanRacer - 13 января 2013 09:32 -

Подскажите тогда какой код правильнее использовать дабы скрыть вывод не нужной категории в lastnews и заодно уж и в newposts. Вариант от ПафНутиЙ на 9.4 не завёлся.

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

ПафНутиЙ - 13 января 2013 11:47 -

А какую ошибку оказывает?

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

DanRacer
Юзер

DanRacer - 13 января 2013 12:27 -

Да в том то и дело что никакую, всё работает, только указанные категории не исчезают

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

ПафНутиЙ - 13 января 2013 12:40 -

значит не там правите, либо новости находятся в нескольких категориях.

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

Sander
PHP-developer

Sander - 13 января 2013 13:02 -

В коде не хватало строки:
$StopCat = explode(",",$StopCat);

Данные задаются в виде строки, а далее обрабатываются как массив.

SanDev.pro - мой блог.

Telegram: @sandev
Skype: Sander8804

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

ПафНутиЙ - 13 января 2013 13:23 -

Спасибо, поправил ответ.

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

DanRacer
Юзер

DanRacer - 13 января 2013 12:50 -

Помилуйте ПафНутиЙ, я конечно нуб в php, но файл engine/engine.php открыть могу и найти строчку // ################ Вывод всех последних новостей ################# тоже труда не составляет, тем более что она там одна, вставляю приведённый вами код ниже этой надписи. Вписываю id категорий будь она одна или несколько не важно, не работает и всё тут.
Все новости строго в своей категории ибо я против дублирования контента )))

DanRacer
Юзер

DanRacer - 13 января 2013 13:09 -

Спасибо огромное заработало. Не подскажете заодно что где под шаманить чтобы и в newposts не отображались не нужные категории, из одной оперы в принципе.

DanRacer
Юзер

DanRacer - 13 января 2013 13:24 -

Sander,
Подскажите правильно ли будет если данный код добавить и после // ################ Вывод непрочитанных новостей ################# в engine.php?
Попробовал в принципе работает.

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

ПафНутиЙ - 13 января 2013 13:26 -

да, правильно.

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

DanRacer
Юзер

DanRacer - 13 января 2013 13:35 -

ПафНутиЙ в ответе дублируется 2 раза строчка
$StopCat = explode(",",$StopCat);

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

ПафНутиЙ - 13 января 2013 13:37 -

Спасибо, проправил.
Чтото я сегодня совсем не внимательный. Пойду отдыхать, выходной же )

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

dvsnic
Юзер

dvsnic - 4 апреля 2013 16:19 -

Сделал все по инструкции, добавил нужный код в engine.php и ничего не произошло. Категория как выводилась - так и выводится. Что нужно сделать чтоб убрать не нужную категорию в /lastnews ? Версия движка 9.7

craf
Юзер

craf - 27 июня 2013 16:47 -

спасибо за код. мне как раз пригодился.

posternakd
Юзер

posternakd - 28 апреля 2014 01:17 -

У меня первый вариант от Пафнутия отлично работает, версия DLE - 10.1

PiratMP3
Юзер

PiratMP3 - 22 января 2015 20:18 -

Ребята, а как изменить количество новостей только в lastnews ? Ни как не могу найти..(

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

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

наверх