Cyrpheus 0 Опубликовано: 15 декабря 2017 Рассказать Опубликовано: 15 декабря 2017 (изменено) Нужно убрать вывод новостей из корневого раздела. Пример. Раздел 1. -- Раздел 1.2 --- Раздел 1.2.1 -- Раздел 1.2 Нужно убрать в Вывод новостей в разделе 1. Если поставить 0 в настройках раздела, то будут выводится дефолтовые настройки для всех, заданные в основных настройках. Есть 7 основных разделов, в которых нужно убрать вывод, и сделать уже своё оформление в этих страницах. Проще ведь где то прописать условия отображения, если разделы равны=....., то не выводить. Никто не подскажет? DLE 10.1 Изменено 15 декабря 2017 пользователем Cyrpheus Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 15 декабря 2017 Рассказать Опубликовано: 15 декабря 2017 В настройках скрипта в админпанели есть настройка: Цитата Выводить новости опубликованные в субкатегориях Eсли 'Включено', то новости опубликованные в субкатегориях будут показываться также при просмотре основной категории. В противном случае вам необходимо будет указывать несколько категорий при публикации новости. Цитата Ссылка на сообщение Поделиться на других сайтах
Cyrpheus 0 Опубликовано: 15 декабря 2017 Рассказать Опубликовано: 15 декабря 2017 (изменено) Автор Да, я в курсе. Спасибо. В разделе 1.2, должны выводится новости из раздела 1.2.1. А вот вся иерархия свыше Раздела 1 не должна выводится. То есть пустая. Если ставлю 1, то выводится 1, если 0, то дефолт. По этому и пришлось обратиться. Создать статическую не поможет решить вопрос. Изменено 15 декабря 2017 пользователем Cyrpheus Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 15 декабря 2017 Рассказать Опубликовано: 15 декабря 2017 В таком случае: 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 Цитата Ссылка на сообщение Поделиться на других сайтах
Cyrpheus 0 Опубликовано: 15 декабря 2017 Рассказать Опубликовано: 15 декабря 2017 Автор Не совсем понял. Если я поставлю 0 в количестве новостей в настройках категорий, то у меня будут выводится столько новостей, сколько я пропишу в: -------------------- Количество новостей на страницу Количество кратких новостей, которое будет выводиться на страницу -------------------- И проблему не решить. Отмечу, что категорий 519 штук. Из них только 7 корневых. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 15 декабря 2017 Рассказать Опубликовано: 15 декабря 2017 19 минут назад, Cyrpheus сказал: Если я поставлю 0 в количестве новостей в настройках категорий, то у меня будут выводится столько новостей, сколько я пропишу в: Точно, я маленько спутал. В данном случае тогда только category и not-category показывать или скрывать тег {content} из шаблона. Цитата Ссылка на сообщение Поделиться на других сайтах
Cyrpheus 0 Опубликовано: 15 декабря 2017 Рассказать Опубликовано: 15 декабря 2017 Автор Точно, вставил, все сработало. Цитата Ссылка на сообщение Поделиться на других сайтах
Cyrpheus 0 Опубликовано: 16 декабря 2017 Рассказать Опубликовано: 16 декабря 2017 Автор Возник конфликт. Если в новости присутствует эта категория, плюс ещё парочка, то вывод полной новости не происходит. То есть в shortstory в ленте есть, а вот fullstory становится пустотой. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 17 декабря 2017 Рассказать Опубликовано: 17 декабря 2017 11 час назад, Cyrpheus сказал: Возник конфликт. Если в новости присутствует эта категория, плюс ещё парочка, то вывод полной новости не происходит. То есть в shortstory в ленте есть, а вот fullstory становится пустотой. Для этого дополнительно существуют теги available и not-available https://dle-news.ru/extras/online/index.html?startnews.html Цитата Ссылка на сообщение Поделиться на других сайтах
Cyrpheus 0 Опубликовано: 28 декабря 2017 Рассказать Опубликовано: 28 декабря 2017 Автор К сожалению у меня 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] Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 28 декабря 2017 Рассказать Опубликовано: 28 декабря 2017 Потому что неправильно написали, зачем то их продублировали неправильно. Должно быть просто [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 категория. Если смотрим любой другой раздел сайта, кроме просмотра кратких новостей в категориях, то контент выводим в любом случае. Цитата Ссылка на сообщение Поделиться на других сайтах
Cyrpheus 0 Опубликовано: 28 декабря 2017 Рассказать Опубликовано: 28 декабря 2017 Автор К сожалению не прошло. Теперь лента в категории "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 Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 28 декабря 2017 Рассказать Опубликовано: 28 декабря 2017 У вас теги not-aviable вложены друг в друга, выше у вас not-aviable=main. Что на старых версиях невозможно. Вложенные друг в друга данные теги могут быть только в актуальных версиях скрипта Цитата Ссылка на сообщение Поделиться на других сайтах
Cyrpheus 0 Опубликовано: 28 декабря 2017 Рассказать Опубликовано: 28 декабря 2017 Автор Теперь понятно. Значит только программным методом только. Сможете дать условие на скрытие нескольких ID категорий, в которых не должна выводить лента и куда вствить? Если будет стоить какой то символической платы, то можете в личку сбросить сумму и номер карты сбера (по возможности)? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 28 декабря 2017 Рассказать Опубликовано: 28 декабря 2017 3 минуты назад, Cyrpheus сказал: Сможете дать условие на скрытие нескольких ID категорий, в которых не должна выводить лента и куда вствить? Выше же написано как в тегах перечеслять категории https://forum.dle-news.ru/topic/71993-убрать-вывод-новостей-из-корневого-раздела/?do=findComment&comment=359837 4 минуты назад, Cyrpheus сказал: Значит только программным методом только. С чего вдруг то. Что мешает ваши два not-aviable обьеденить в одно условие. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Cyrpheus 0 Опубликовано: 28 декабря 2017 Рассказать Опубликовано: 28 декабря 2017 Автор Все, в принципе оказалось легче чем думалось. Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 29 декабря 2017 Рассказать Опубликовано: 29 декабря 2017 В 15.12.2017 в 15:45, celsoft сказал: Точно, я маленько спутал. В данном случае тогда только category и not-category показывать или скрывать тег {content} из шаблона. Скрывать тег это хорошо, но запрос же останется. Планируете ли это решить в новой версии? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 29 декабря 2017 Рассказать Опубликовано: 29 декабря 2017 15 минут назад, Gameer сказал: Скрывать тег это хорошо, но запрос же останется. Планируете ли это решить в новой версии? Нет ничего меняться в данном вопросе не планируется. Все подобные вариации которых может быть тысячи не предусмотришь. Выводить публикации в категориях базовая функциональность скрипта, то что человек решил не выводить, это его право, но переписываться логика работы скрипта в данном случае не будет, подобные вещи делаются как правило персонально под конкретный сайт, а не в базовой функциональности. Цитата Ссылка на сообщение Поделиться на других сайтах
SKYNET74 315 Опубликовано: 4 января 2018 Рассказать Опубликовано: 4 января 2018 В 29.12.2017 в 16:43, celsoft сказал: Нет ничего меняться в данном вопросе не планируется. Все подобные вариации которых может быть тысячи не предусмотришь. Выводить публикации в категориях базовая функциональность скрипта, то что человек решил не выводить, это его право, но переписываться логика работы скрипта в данном случае не будет, подобные вещи делаются как правило персонально под конкретный сайт, а не в базовой функциональности. Если бы функциональность вывода новостей из подкатегорий работала бы на оборот (как я и предлагал давным давно), то данную проблему легко можно было бы решить. Суть в том что в настройках категории выбирается выводить ли новости из неё в выше стоящей категории, а не в том что бы выводить новости из ниже стоящих категорий. Примеров применения могу целую пачку показать, но в связи со сложностью реализации, перелопачивания пол движка, и проблем с обновлениями, пока не написал готового решения, но видимо придётся, т.к. этого очень не хватает. Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 5 января 2018 Рассказать Опубликовано: 5 января 2018 18 часов назад, SKYNET74 сказал: Суть в том что в настройках категории выбирается выводить ли новости из неё в выше стоящей категории, а не в том что бы выводить новости из ниже стоящих категорий. Может я что-то не пойму, но это одно и тоже. К примеру есть категории - Категория 1 -- Категория 1.2 --- Категория 1.2.1 -- Категория 1.2 При создании категории / редактировании выбираем в нужной не выводить из Подкатегории новости в этой категории. В итоге - Категория 1 - выводит новости только из своей категории -- Категория 1.2 - выводит новости только из своей категории --- Категория 1.2.1 - выводит новости только из своей категории Чем будет отличатся если сделать что бы не выводилось в выше стоящих? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 5 января 2018 Рассказать Опубликовано: 5 января 2018 18 часов назад, SKYNET74 сказал: Примеров применения могу целую пачку показать, но в связи со сложностью реализации, перелопачивания пол движка, и проблем с обновлениями, пока не написал готового решения, но видимо придётся, т.к. этого очень не хватает. Полная ерунда. Запрос стоит всего в одном месте в одном месте, все что нужно сделать, чтобы не было запросов в нужном месте, это нужно просто сделать break по условию, это решение в одну строчку. Делается менее чем за минуту, под конретные условия и под конретный сайт. В дистрибутиве этого нет, потому самих условий автор сайта может напридумывать миллион, которые все не предусмотреть, если это делать на условиях анализа шаблонва. Все эти утверждения про перелопачивание движка, это просто от незнания структуры его работы, и не знания кода. Если нужно избавится от запроса, это можно сделать за минуту, главное это определиться с условиями при которых его быть не должно. Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 5 января 2018 Рассказать Опубликовано: 5 января 2018 59 минут назад, celsoft сказал: Полная ерунда. Запрос стоит всего в одном месте в одном месте, все что нужно сделать, чтобы не было запросов в нужном месте, это нужно просто сделать break по условию, это решение в одну строчку. Делается менее чем за минуту, под конретные условия и под конретный сайт. В дистрибутиве этого нет, потому самих условий автор сайта может напридумывать миллион, которые все не предусмотреть, если это делать на условиях анализа шаблонва. Все эти утверждения про перелопачивание движка, это просто от незнания структуры его работы, и не знания кода. Если нужно избавится от запроса, это можно сделать за минуту, главное это определиться с условиями при которых его быть не должно. Он о реализации 19 часов назад, SKYNET74 сказал: настройках категории выбирается выводить ли новости из неё в выше стоящей категории А не запроса в базу данных. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 093 Опубликовано: 5 января 2018 Рассказать Опубликовано: 5 января 2018 3 минуты назад, Gameer сказал: Он о реализации 3 минуты назад, Gameer сказал: А не запроса в базу данных. Не знаю о чем он, но разговор шел именно о запросах к БД, и процитировал он текст при написании сообщения, именно из обсуждения этого вопроса. Цитата Ссылка на сообщение Поделиться на других сайтах
SKYNET74 315 Опубликовано: 6 января 2018 Рассказать Опубликовано: 6 января 2018 21 час назад, celsoft сказал: Не знаю о чем он, но разговор шел именно о запросах к БД, и процитировал он текст при написании сообщения, именно из обсуждения этого вопроса. Я имел ввиду о логике работы данной функции, что если сделать по моему, то у нас будет гораздо более гибкая возможность показа новостей в подкатегориях, приведу простой пример. Есть раздел новости на сайте, там подкатегории по тематикам, ЖКХ, криминал, социалка и т.д., есть ещё в этом же разделе есть подкатегории "В России" и "В мире", при этом в разделе новости нужно выводить только подкатегории по тематикам, а "В России" и "В мире" нужно выводить только в их категориях. Смысл задачи думаю понятен? Как реализовать это в текущих реалиях без костылей и с нормальным спидбаром? Это лишь очень простой вариант, в своей практике некоторые хотели более сложную иерархию, там где 3-5 уровней и опять же нужно выводить в вышестоящей категории новости не из всех подкатегорий. На нагрузке особо не скажется, т.к. запрос по сути останется таким же, нужно лишь чуть логику составления ID категорий в функциях усложнить. Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 22 января 2018 Рассказать Опубликовано: 22 января 2018 В 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; Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.