CMS DataLife Engine - Система управления сайтами

Авторизация  
Cyrpheus

Убрать вывод новостей из корневого раздела.

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

Нужно убрать вывод новостей из корневого раздела.

Пример.

Раздел 1.

-- Раздел 1.2

--- Раздел 1.2.1

-- Раздел 1.2

 

Нужно убрать в Вывод новостей в разделе 1.

Если поставить 0 в настройках раздела, то будут выводится дефолтовые настройки для всех, заданные в основных настройках.

Есть 7 основных разделов, в которых нужно убрать вывод, и сделать уже своё оформление в этих страницах.

Проще ведь где то прописать условия отображения, если разделы равны=....., то не выводить. Никто не подскажет?

DLE 10.1

Изменено пользователем Cyrpheus

Поделиться сообщением


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

В настройках скрипта в админпанели есть настройка:

Цитата
Выводить новости опубликованные в субкатегориях

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

 

Поделиться сообщением


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

Да, я в курсе. Спасибо. В разделе 1.2, должны выводится новости из раздела 1.2.1. А вот вся иерархия свыше Раздела 1 не должна выводится. То есть пустая. Если ставлю 1, то выводится 1, если 0, то дефолт. По этому и пришлось обратиться. Создать статическую не поможет решить вопрос.

Изменено пользователем Cyrpheus

Поделиться сообщением


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

В таком случае:

1 час назад, Cyrpheus сказал:

Проще ведь где то прописать условия отображения, если разделы равны=....., то не выводить. Никто не подскажет?

Не проще. Задавайте 0 в количестве новостей в настройках категории, либо убирайте вывод тега {content} со страниц этих категорий при помощи тегов [category=1,2,3,7-10] текст [/category] и [not-category=1,2,3,7-10] текст [/not-category] https://dle-news.ru/extras/online/index.html?startnews.html

Поделиться сообщением


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

Не совсем понял.

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

--------------------

Количество новостей на страницу
Количество кратких новостей, которое будет выводиться на страницу

--------------------

И проблему не решить. Отмечу, что категорий 519 штук. Из них только 7 корневых.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
19 минут назад, Cyrpheus сказал:

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

Точно, я маленько спутал. В данном случае тогда только category и not-category показывать или скрывать тег {content} из шаблона.

Поделиться сообщением


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

Возник конфликт. Если в новости присутствует эта категория, плюс ещё парочка, то вывод полной новости не происходит. То есть в shortstory в ленте есть, а вот fullstory становится пустотой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 час назад, Cyrpheus сказал:

Возник конфликт. Если в новости присутствует эта категория, плюс ещё парочка, то вывод полной новости не происходит. То есть в shortstory в ленте есть, а вот fullstory становится пустотой.

Для этого дополнительно существуют теги available и not-available https://dle-news.ru/extras/online/index.html?startnews.html

Поделиться сообщением


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

К сожалению у меня 10.1, так немного другие теги, вижу изменили под версии выше.

Пытаюсь скрыть отображение ленты в разделе категории 6, но если эта категория фигурирует в новости, то новость должна вывестись. Если логически выставить цепочку, то мы должны заблокировать блокировку вывода в полной новости. Но

[not-aviable=showfull][not-category=6][/not-aviable]
{content}
[not-aviable=showfull][/not-category][/not-aviable]

 

Если вводить эти данные, то всё получается, но выводит лишняя тех инфа.

В категории 6 лента исчезает, за место неё остаётся.: 

[not-aviable=showfull]
[/not-aviable]

 

В полной новости:

[not-aviable=showfull][not-category=6]

 

Поделиться сообщением


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

Потому что неправильно написали, зачем то их продублировали неправильно. Должно быть просто 

[not-aviable=showfull]
[not-category=6]{content}[/not-category]
[/not-aviable]

Хотя это вообще какая то неправильная конструкция, потому как, как вы вообще собираетесь смотреть полные новости из любой категории, если вы убрали отображение новостей в полных публикациях вообще тегом not-aviable=showfull.

 

Правильно должно быть примерно следующее:

[aviable=cat]
  [not-category=6]{content}[/not-category]
[/aviable]
[not-aviable=cat]{content}[/not-aviable]

Что в переводе с логики на русский звучит как: Если смотрим краткие новости в разделе просмотра категорий, то выводим контент только если не 6 категория. Если смотрим любой другой раздел сайта, кроме просмотра кратких новостей в категориях, то контент выводим в любом случае.

Поделиться сообщением


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

К сожалению не прошло. Теперь лента в категории "6" открыта.

Подправил в окончании закрытие тега 

[/not-aviable]

Что в полной новости,  что в категории -  выводятся остаточные теги в начале и в конце 

[not-aviable=cat] и [/not-aviable]

Пример вывода: http://dl3.joxi.net/drive/2017/12/28/0011/3883/741163/63/b7820b883e.png

Данные, которые фигурируют в шаблоне: http://dl3.joxi.net/drive/2017/12/28/0011/3883/741163/63/2ea4cb758b.jpg

Поделиться сообщением


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

У вас теги not-aviable вложены друг в друга, выше у вас not-aviable=main. Что на старых версиях невозможно. Вложенные друг в друга данные теги могут быть только в актуальных версиях скрипта

Поделиться сообщением


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

Теперь понятно. Значит только программным методом только.

Сможете дать условие на скрытие нескольких ID категорий, в которых не должна выводить лента и куда вствить?

Если будет стоить какой то символической платы, то можете в личку сбросить сумму и номер карты сбера (по возможности)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Cyrpheus сказал:

Сможете дать условие на скрытие нескольких ID категорий, в которых не должна выводить лента и куда вствить?

Выше же написано как в тегах перечеслять категории https://forum.dle-news.ru/topic/71993-убрать-вывод-новостей-из-корневого-раздела/?do=findComment&comment=359837

 

4 минуты назад, Cyrpheus сказал:

Значит только программным методом только.

С чего вдруг то. Что мешает ваши два not-aviable обьеденить в одно условие.

  • Спасибо 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 15.12.2017 в 15:45, celsoft сказал:

Точно, я маленько спутал. В данном случае тогда только category и not-category показывать или скрывать тег {content} из шаблона.

Скрывать тег это хорошо, но запрос же останется. Планируете ли это решить в новой версии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 минут назад, Gameer сказал:

Скрывать тег это хорошо, но запрос же останется. Планируете ли это решить в новой версии?

Нет ничего меняться в данном вопросе не планируется. Все подобные вариации которых может быть тысячи не предусмотришь. Выводить публикации в категориях базовая функциональность скрипта, то что человек решил не выводить, это его право, но переписываться логика работы скрипта в данном случае не будет, подобные вещи делаются как правило персонально под конкретный сайт, а не в базовой функциональности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 29.12.2017 в 16:43, celsoft сказал:

Нет ничего меняться в данном вопросе не планируется. Все подобные вариации которых может быть тысячи не предусмотришь. Выводить публикации в категориях базовая функциональность скрипта, то что человек решил не выводить, это его право, но переписываться логика работы скрипта в данном случае не будет, подобные вещи делаются как правило персонально под конкретный сайт, а не в базовой функциональности.

Если бы функциональность вывода новостей из подкатегорий работала бы на оборот (как я и предлагал давным давно), то данную проблему легко можно было бы решить.
Суть в том что в настройках категории выбирается выводить ли новости из неё в выше стоящей категории, а не в том что бы выводить новости из ниже стоящих категорий.

Примеров применения могу целую пачку показать, но в связи со сложностью реализации, перелопачивания пол движка, и проблем с обновлениями, пока не написал готового решения, но видимо придётся, т.к. этого очень не хватает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
18 часов назад, SKYNET74 сказал:

Суть в том что в настройках категории выбирается выводить ли новости из неё в выше стоящей категории, а не в том что бы выводить новости из ниже стоящих категорий.

Может я что-то не пойму, но это одно и тоже.

К примеру есть категории

- Категория 1

-- Категория 1.2

--- Категория 1.2.1

-- Категория 1.2

 

При создании категории / редактировании выбираем в нужной не выводить из Подкатегории новости в этой категории.

 

В итоге

- Категория 1 - выводит новости только из своей категории

-- Категория 1.2 - выводит новости только из своей категории

--- Категория 1.2.1 - выводит новости только из своей категории

 

Чем будет отличатся если сделать что бы не выводилось в выше стоящих?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
18 часов назад, SKYNET74 сказал:

Примеров применения могу целую пачку показать, но в связи со сложностью реализации, перелопачивания пол движка, и проблем с обновлениями, пока не написал готового решения, но видимо придётся, т.к. этого очень не хватает.

Полная ерунда. Запрос стоит всего в одном месте в одном месте, все что нужно сделать, чтобы не было запросов в нужном месте, это нужно просто сделать break по условию, это решение в одну строчку. Делается менее чем за минуту, под конретные условия и под конретный сайт. В дистрибутиве этого нет, потому самих условий автор сайта может напридумывать миллион, которые все не предусмотреть, если это делать на условиях анализа шаблонва. Все эти утверждения про перелопачивание движка, это просто от незнания структуры его работы, и не знания кода. Если нужно избавится от запроса, это можно сделать за минуту, главное это определиться с условиями при которых его быть не должно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
59 минут назад, celsoft сказал:

Полная ерунда. Запрос стоит всего в одном месте в одном месте, все что нужно сделать, чтобы не было запросов в нужном месте, это нужно просто сделать break по условию, это решение в одну строчку. Делается менее чем за минуту, под конретные условия и под конретный сайт. В дистрибутиве этого нет, потому самих условий автор сайта может напридумывать миллион, которые все не предусмотреть, если это делать на условиях анализа шаблонва. Все эти утверждения про перелопачивание движка, это просто от незнания структуры его работы, и не знания кода. Если нужно избавится от запроса, это можно сделать за минуту, главное это определиться с условиями при которых его быть не должно.

Он о реализации 

19 часов назад, SKYNET74 сказал:

настройках категории выбирается выводить ли новости из неё в выше стоящей категории

А не запроса в базу данных.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Gameer сказал:

Он о реализации 

 

3 минуты назад, Gameer сказал:

А не запроса в базу данных.

Не знаю о чем он, но разговор шел именно о запросах к БД, и процитировал он текст при написании сообщения, именно из обсуждения этого вопроса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
21 час назад, celsoft сказал:

 

Не знаю о чем он, но разговор шел именно о запросах к БД, и процитировал он текст при написании сообщения, именно из обсуждения этого вопроса.

Я имел ввиду о логике работы данной функции, что если сделать по моему, то у нас будет гораздо более гибкая возможность показа новостей в подкатегориях, приведу простой пример.
Есть раздел новости на сайте, там подкатегории по тематикам, ЖКХ, криминал, социалка и т.д., есть ещё в этом же разделе есть подкатегории "В России" и "В мире", при этом в разделе новости нужно выводить только подкатегории по тематикам, а "В России" и "В мире" нужно выводить только в их категориях. Смысл задачи думаю понятен? Как реализовать это в текущих реалиях без костылей и с нормальным спидбаром?

Это лишь очень простой вариант, в своей практике некоторые хотели более сложную иерархию, там где 3-5 уровней и опять же нужно выводить в вышестоящей категории новости не из всех подкатегорий.

На нагрузке особо не скажется, т.к. запрос по сути останется таким же, нужно лишь чуть логику составления ID категорий в функциях усложнить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 06.01.2018 в 12:10, SKYNET74 сказал:

Я имел ввиду о логике работы данной функции, что если сделать по моему, то у нас будет гораздо более гибкая возможность показа новостей в подкатегориях, приведу простой пример.
Есть раздел новости на сайте, там подкатегории по тематикам, ЖКХ, криминал, социалка и т.д., есть ещё в этом же разделе есть подкатегории "В России" и "В мире", при этом в разделе новости нужно выводить только подкатегории по тематикам, а "В России" и "В мире" нужно выводить только в их категориях. Смысл задачи думаю понятен? Как реализовать это в текущих реалиях без костылей и с нормальным спидбаром?

Это лишь очень простой вариант, в своей практике некоторые хотели более сложную иерархию, там где 3-5 уровней и опять же нужно выводить в вышестоящей категории новости не из всех подкатегорий.

На нагрузке особо не скажется, т.к. запрос по сути останется таким же, нужно лишь чуть логику составления ID категорий в функциях усложнить.

Держите

Выполнить SQL запрос

ALTER TABLE `dle_category` ADD `show_parent` TINYINT(1) NOT NULL DEFAULT '1' AFTER `show_sub`;

Открыть /engine/inc/category.php найти (2 раза)

$show_sub = intval($_POST['show_sub']);

Ниже вставить (2 раза)

$show_parent = intval($_POST['show_parent']);

Далее найти

show_sub, allow_rss,

Заменить на

show_sub, show_parent, allow_rss,

Далее найти

'$show_sub', '$allow_rss',

Заменить на

'$show_sub', '$show_parent', '$allow_rss',

Далее найти

$row['show_sub'] = makeDropDown( array ("0" => $lang['sys_global'], "1" => $lang['opt_sys_yes'], "2" => $lang['opt_sys_no'] ), "show_sub", $row['show_sub'] );

Ниже вставить

$row['show_parent'] = makeDropDown( array ("1" => $lang['opt_sys_yes'], "0" => $lang['opt_sys_no']), "show_parent", $row['show_parent'] );

Далее найти

<div class="form-group">
<label class="control-label col-md-2 col-sm-3">{$lang['opt_sys_sub']}</label>
<div class="col-md-10 col-sm-9">
{$row['show_sub']}
</div>
</div>

Ниже вставить

<div class="form-group">
<label class="control-label col-md-2 col-sm-3">Показывать новости в родительской категории</label>
<div class="col-md-10 col-sm-9">
{$row['show_parent']}
</div>
</div>

Далее найти

show_sub='$show_sub',

Заменить на

show_sub='$show_sub', show_parent='$show_parent',

Далее найти

<div class="form-group">
    <div class="row">
        <div class="col-sm-12">
            <label>{$lang['meta_keys']}</label>
            <textarea name="keywords" class="classic" style="width:100%;" rows="3"></textarea>
        </div>
    </div>
</div>

Ниже вставить

<div class="form-group">
    <div class="row">
        <div class="col-sm-12">
            <label>Показывать новости в родительской категории</label>
            <select class="uniform" name="show_parent" data-width="100%"><option value="1" selected>{$lang['opt_sys_yes']}</option><option value="0">{$lang['opt_sys_no']}</option></select>
        </div>
    </div>
</div>

Открыть /engine/modules/functions.php найти

function get_sub_cats($id, $subcategory = '') {

Выше вставить

function get_not_sub_cats($id, $subcategory = array()) {
    global $cat_info;
    $subfound = array();

    foreach($cat_info as $cats) {
        if($cats['parentid'] == $id && $cats['show_parent'] == 0) {
            $subfound[] = $cats['id'];
        }
    }
    
    foreach($subfound as $parentid) {
        $subcategory[] = $parentid;
        $subcategory = get_not_sub_cats($parentid, $subcategory );
    }
    
    return $subcategory;
}

Открыть /engine/engine.php найти

if ($config['allow_multi_category']) {
                
    $where_category = "category regexp '[[:<:]](" . $get_cats . ")[[:>:]]'";

} else {
    
    if ( $allow_sub_cats ) {
        
        $get_cats = str_replace ( "|", "','", $get_cats );
        $where_category = "category IN ('" . $get_cats . "')";
    
    } else {
        
        $where_category = "category = '{$get_cats}'";
    
    }

}

Ниже вставить

$result_parent_cats = get_not_sub_cats($category_id);
if(count($result_parent_cats)) {
    $not_show_cat = array();
    foreach($result_parent_cats as $key => $array_cat) {
        if($array_cat['id'])
            $not_show_cat[] = $array_cat['id'];
    }
    if($config['allow_multi_category']) {
        $where_category .= " AND category NOT regexp '[[:<:]](" . implode("|", $not_show_cat) . ")[[:>:]]'";
    }
    else {
        $where_category .= " AND category NOT IN ('" . implode("','", $not_show_cat) . "')";
    }
}

Открыть /engine/init.php найти

$temp_parent = $cat_info[$value]['parentid'];

Ниже вставить

if($cat_info[$value]['show_parent'] == 0)
    continue;

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация