Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как в теге { content } запретить вывод новостей на ГЛАВНОЙ из определенной категории?

Как в теге { content } запретить вывод новостей на ГЛАВНОЙ из определенной категории?


     09.01.2014    Общие вопросы по PHP, Модули, Хаки    6768

вопрос
Как в теге { content } запретить вывод новостей на ГЛАВНОЙ из определенной категории?Или разрешить вывод новостей ТОЛЬКО из определенной категории? dle 10.1
Custom не катит

Ответил: Мефестофель


1.в обычном файле shortstory.tpl пишем в самом начале:
[catlist=id категории через запятую]
И в самом конце
[/catlist]

2.Создаем shortstory2.tpl БЕЗ [catlist]
и для каждой категории присваиваем шаблон короткой новости shortstory2.tpl

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

Tiger Woods
Юзер

Tiger Woods - 9 января 2014 14:17 -

Выделяешь новости, которые хочешь снять с главной и выбираешь пункт меню: Снять публикацию на главной.

Мефестофель
Юзер

Мефестофель - 9 января 2014 14:23 -

Tiger Woods,
Ммм для 300 новостей?

vitnet
PHP-developer

vitnet - 9 января 2014 15:23 -

А нах 2 шаба? Если можно обойтись одним.
shortstory.tpl
[catlist=id категории через запятую][not-aviable=main]
Тут все содержимое короткой новости
[/not-aviable][/catlist]
[not-catlist=id категории через запятую]
Тут все содержимое короткой новости
[/not-catlist]
или я ошибаюсь?

teleoperator27
Юзер

teleoperator27 - 9 января 2014 16:03 -

Можно обойтись одним классом, который прописывается в настройках категории, вместо иконки пишем например main, потом в short-story.tpl делаем
<div class="shortstory [aviable=main]{category-icon}[/aviable]">бла бла </div> 
а в css
.shortsotry.main {display:none;} 
только в /engine/modules/show.short.php надо найти и удалить:
 , "{THEME}/dleimages/no_icon.gif"

Sander
PHP-developer

Sander - 10 января 2014 03:10 -

У варианта предложенным Мефистофелем есть один недостаток.
Если на странице будут выведены все новости из "не желаемой" категории, то мы просто получим пустую страницу без контента вообще. И никаких ошибок не будет написано.

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

Telegram: @sandev
Skype: Sander8804

shamanim
Юзер

shamanim - 10 января 2014 10:11 -

почему не использовать {custom} для главной

compazitor3
Юзер

compazitor3 - 27 июня 2017 20:26 -

Например мне нужно, чтобы между короткими новостями выводились рекламные блоки

vitnet
PHP-developer

vitnet - 11 января 2014 15:26 -

[catlist=id категории через запятую][not-aviable=main]
Тут все содержимое короткой новости
[/not-aviable][/catlist]
[not-catlist=id категории через запятую]
Тут все содержимое короткой новости
[/not-catlist]


compazitor3
Юзер

compazitor3 - 27 июня 2017 20:25 -

Не работает ваше решение, почему-то

Maklay
Юзер

Maklay - 28 июня 2017 02:56 -

Полагаю Custom не катит потому что на DLE 10 еще не было возможности через Custom настроить categoryexclude для осуществления ваших требований.
Если я прав, добавить эту возможность можно за 1 минуту.
Открыть файл ./engine/modules/functions.php
Найти строку
if( preg_match( "#days=['\"](.+?)['\"]#i", $param_str, $match ) ) {

Перед ней вставить:
	if( preg_match( "#categoryexclude=['\"](.+?)['\"]#i", $param_str, $match ) ) {

		$temp_array = array();

		$match[1] = explode (',', $match[1]);

		foreach ($match[1] as $value) {

			if( count(explode('-', $value)) == 2 ) $temp_array[] = get_mass_cats($value);
			else $temp_array[] = intval($value);

		}


		$temp_array = implode(',', $temp_array);

		$custom_category = $db->safesql( trim(str_replace( ',', '|', $temp_array )) );

		if( $config['allow_multi_category'] ) {
			
			$where[] = "category NOT REGEXP '[[:<:]](" . $custom_category . ")[[:>:]]'";
		
		} else {
			
			$custom_category = str_replace( "|", "','", $custom_category );
			$where[] = "category NOT IN ('" . $custom_category . "')";
		
		}
	}

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

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

наверх