Перейти к публикации

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


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

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

Пример.

Раздел 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

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

К сожалению у меня 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 обьеденить в одно условие.

Ссылка на сообщение
Поделиться на других сайтах
В 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 категорий в функциях усложнить.

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...
В 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;

 

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

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...