Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Хаки Категория и lastnews

Категория и lastnews


     10.10.2012    Хаки    4196

вопрос
Последние новости отображаются по ссылке сайт.ру/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
4 | 4

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

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

ПафНутиЙ
1065

3396 | 2434

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

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

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

lexa21reg
4 | 4

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

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

lexa21reg
4 | 4

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
4 | 4

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
23 | 6

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

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

DanRacer
24 | 14

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
39

1479 | 390

dj-avtosh - 11 января 2013 07:45 - шашлычник

category<$IDcategory or category>$IDcategory


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

skype: elhan.isaev

DanRacer
24 | 14

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

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


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


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

Sander
1126

1637 | 1204

Sander - 11 января 2013 14:16 - Эксперт

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

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

ICQ: 404-037-556
Skype: Sander8804

DanRacer
24 | 14

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

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

ПафНутиЙ
1065

3396 | 2434

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

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

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

DanRacer
24 | 14

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

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

ПафНутиЙ
1065

3396 | 2434

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

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

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

Sander
1126

1637 | 1204

Sander - 13 января 2013 13:02 - Эксперт

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

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

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

ICQ: 404-037-556
Skype: Sander8804

ПафНутиЙ
1065

3396 | 2434

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

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

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

DanRacer
24 | 14

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

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

DanRacer
24 | 14

DanRacer - 13 января 2013 13:09 - Юзер

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

DanRacer
24 | 14

DanRacer - 13 января 2013 13:24 - Юзер

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

ПафНутиЙ
1065

3396 | 2434

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

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

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

DanRacer
24 | 14

DanRacer - 13 января 2013 13:35 - Юзер

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

ПафНутиЙ
1065

3396 | 2434

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

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

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

dvsnic
1

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

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

craf
8

craf - 27 июня 2013 16:47 - Юзер

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

posternakd
3 | 1

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

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

PiratMP3
1

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

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

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

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