Datagor 31 Опубликовано: 2 августа 2019 Рассказать Опубликовано: 2 августа 2019 Привет! Есть ли какой-то параметр/условие у CUSTOM, чтобы сделать выбор (вывод) только тех новостей, у которых установлена галка «Публиковать на главной»? Например, с помощью {custom categoryexclude="10,59,60" limit="6" order="date" sort="desc" template="short-featured-main" cache="yes"} я вывожу 6 новейших статей из всех категорий, кроме 10, 59, 60. Как сделать тоже самое, но выводить только опубликованные на Главной? Благодарю за участие. Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 2 августа 2019 Рассказать Опубликовано: 2 августа 2019 Нет, такого стандартно нет. Вот вам плагин <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Добавляем параметр для custom - allow_main</name> <description>Добавляем параметр для вывода новостей которые только на главной или нет для тега custom. [ by https://lazydev.pro/ ]</description> <icon></icon> <version>1.0</version> <dleversion>13</dleversion> <versioncompare>greater</versioncompare> <upgradeurl></upgradeurl> <filedelete>0</filedelete> <needplugin></needplugin> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <phpinstall><![CDATA[]]></phpinstall> <phpupgrade><![CDATA[]]></phpupgrade> <phpenable><![CDATA[]]></phpenable> <phpdisable><![CDATA[]]></phpdisable> <phpdelete><![CDATA[]]></phpdelete> <file name="engine/modules/functions.php"> <operation action="after"> <searchcode><![CDATA[if( $config['allow_cache'] ) $short_news_cache = true; else $short_news_cache = false;]]></searchcode> <replacecode><![CDATA[if (preg_match("#allow_main=['\"](.+?)['\"]#i", $param_str, $match)) { if ($match[1] == "yes") { $where[] = "allow_main='1'"; } elseif ($match[1] == "no") { $where[] = "allow_main='0'"; } }]]></replacecode> </operation> </file> </dleplugin> allow_main="yes" - только те что разрешены на главной allow_main="no" - только те что не разрешены на главной 2 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 2 августа 2019 Рассказать Опубликовано: 2 августа 2019 Автор Gameer, премного благодарю! Проверено, работает. 👍 Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 6 августа 2019 Рассказать Опубликовано: 6 августа 2019 (изменено) Автор Подскажите ещё момент! На Главной странице кастомом выводятся 5 новейших статей (order="date"). И 5 обновлённых статей (order="editdate") — чтобы сразу были видны исправленные и дополненные материалы. Но получается так, что содержимое блоков полностью или частично совпадает. Статьи у меня объёмные и я сохраняю их несколько раз в процессе редактирования и публикации. Как с этим можно побороться? Самое простое, что в голову пришло: не пускать новые статьи в блок обновлённых статей в течение установленного срока (1-3-5 дней) с момента опубликования. Но, как я понял, штатных средств для этого снова нет. Изменено 6 августа 2019 пользователем Datagor Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 6 августа 2019 Рассказать Опубликовано: 6 августа 2019 2 часа назад, Datagor сказал: Подскажите ещё момент! На Главной странице кастомом выводятся 5 новейших статей (order="date"). И 5 обновлённых статей (order="editdate") — чтобы сразу были видны исправленные и дополненные материалы. Но получается так, что содержимое блоков полностью или частично совпадает. Статьи у меня объёмные и я сохраняю их несколько раз в процессе редактирования и публикации. Как с этим можно побороться? Самое простое, что в голову пришло: не пускать новые статьи в блок обновлённых статей в течение установленного срока (1-3-5 дней) с момента опубликования. Но, как я понял, штатных средств для этого снова нет. А custom у вас с датой редактирования идет до вывода custom по дате добавления или после него? Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 6 августа 2019 Рассказать Опубликовано: 6 августа 2019 @Datagor Уже не имеет значения (я о вопросе выше). Реализовал плагин для тега custom. Делает он следующее: Указываем нужному custom с которого нужно получить id новостей параметр set="X" Указываем второму custom в котором нужно скрыть эти id новостей с первого custom параметр get="X" Где X у обеих параметров должен быть один и тот же. Можно туда прописывать что угодно. Плагин делает так что бы custom с параметром get выполнялся всегда после custom с параметром set. Вот полный пример <b>По дате</b> {custom set="date" template="shortstory" available="global" navigation="no" from="0" limit="2" order="date" sort="desc"} <b>По дате редактирования</b> {custom get="date" template="shortstory" available="global" navigation="no" from="0" limit="3" order="editdate" sort="desc"} Если нужно еще то просто прописываете другое значение для параметров set и get других custom get параметр можно указывать нескольким custom и скрывать с них id новостей того custom который указан в параметре get и set. Сам плагин для DataLife Engine 13.0 - 13.2 <?xml version="1.0" encoding="utf-8"?> <dleplugin> <name>Плагин для скрытия ID с другого custom</name> <description>Плагин позволяет не выводить новости которые выводятся одним custom в другом. [ by https://lazydev.pro/ ]</description> <icon></icon> <version>1.0.0</version> <dleversion>13</dleversion> <versioncompare>greater</versioncompare> <upgradeurl></upgradeurl> <filedelete>0</filedelete> <needplugin></needplugin> <mysqlinstall><![CDATA[]]></mysqlinstall> <mysqlupgrade><![CDATA[]]></mysqlupgrade> <mysqlenable><![CDATA[]]></mysqlenable> <mysqldisable><![CDATA[]]></mysqldisable> <mysqldelete><![CDATA[]]></mysqldelete> <phpinstall><![CDATA[]]></phpinstall> <phpupgrade><![CDATA[]]></phpupgrade> <phpenable><![CDATA[]]></phpenable> <phpdisable><![CDATA[]]></phpdisable> <phpdelete><![CDATA[]]></phpdelete> <file name="engine/modules/main.php"> <operation action="before"> <searchcode><![CDATA[if (stripos ( $tpl->copy_template, "{custom" ) !== false) {]]></searchcode> <replacecode><![CDATA[if (stripos($tpl->copy_template, '{custom') !== false) { $tpl->copy_template = preg_replace_callback("#\\{custom(.+?)\\}#i", 'custom_print', $tpl->copy_template); }]]></replacecode> </operation> </file> <file name="engine/modules/functions.php"> <operation action="after"> <searchcode><![CDATA[$where[] = "approve=1";]]></searchcode> <replacecode><![CDATA[if (preg_match("#get=['\"](.+?)['\"]#i", $param_str, $match)) { $match[1] = strip_tags(stripslashes($match[1])); $notId = idExclude::get($match[1]); if ($notId === false) { return $matches[0]; } elseif ($notId) { $where[] = "id NOT IN ('" . implode("','", $notId) . "')"; } }]]></replacecode> </operation> <operation action="after"> <searchcode><![CDATA[include (DLEPlugins::Check(ENGINE_DIR . '/modules/show.custom.php'));]]></searchcode> <replacecode><![CDATA[if (preg_match("#set=['\"](.+?)['\"]#i", $param_str, $match)) { $match[1] = strip_tags(stripslashes($match[1])); idExclude::set($match[1], $attachments ?: 0); }]]></replacecode> </operation> <operation action="before"> <searchcode><![CDATA[class microTimer {]]></searchcode> <replacecode><![CDATA[class idExclude { private static $idArray = []; static function get($k) { return isset(self::$idArray[$k]) ? self::$idArray[$k] : false; } static function set($k, $v) { self::$idArray[$k] = $v; } }]]></replacecode> </operation> </file> </dleplugin> Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 7 августа 2019 Рассказать Опубликовано: 7 августа 2019 Автор 19 hours ago, Gameer said: А custom у вас с датой редактирования идет до вывода custom по дате добавления или после него? Первым по коду страницы идёт custom order="date". Следующим идёт блок custom order="editdate". Спасибо. Пытаюсь понять ваш новый плагин. Но уже ночь. Думаю, не осилю сегодня Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 7 августа 2019 Рассказать Опубликовано: 7 августа 2019 11 минут назад, Datagor сказал: Первым по коду страницы идёт custom order="date". Следующим идёт блок custom order="editdate". Спасибо. Пытаюсь понять ваш новый плагин. Но уже ночь. Думаю, не осилю сегодня Это уже не имеет значение какой по счету идет custom. Скиньте сюда два ваших custom я пропишу вам параметры что бы все работало Цитата Ссылка на сообщение Поделиться на других сайтах
Datagor 31 Опубликовано: 12 августа 2019 Рассказать Опубликовано: 12 августа 2019 Автор Gameer, здравствуйте. Новый плагин очень навороченный вышел. Можно пойти немного другим путём? Можно сделать «ручное управление» статусом «Отредактировано/Неотредактировано» для любой статьи? В админке в редакторе статей есть чекбокс «Выводить информацию о том что новость отредактирована». <input class="icheck" type="checkbox" id="view_edit" name="view_edit" value="1"> Можно сделать так, чтобы без установки (и при снятии) этой галки статья считалась в системе нередактированной? Цитата Ссылка на сообщение Поделиться на других сайтах
Gameer 311 Опубликовано: 12 августа 2019 Рассказать Опубликовано: 12 августа 2019 26 минут назад, Datagor сказал: Gameer, здравствуйте. Новый плагин очень навороченный вышел. Можно пойти немного другим путём? Можно сделать «ручное управление» статусом «Отредактировано/Неотредактировано» для любой статьи? В админке в редакторе статей есть чекбокс «Выводить информацию о том что новость отредактирована». <input class="icheck" type="checkbox" id="view_edit" name="view_edit" value="1"> Можно сделать так, чтобы без установки (и при снятии) этой галки статья считалась в системе нередактированной? В каком смысле навороченный? Там все просто. Ну ставите галочку на «Выводить информацию о том что новость отредактирована» или нет, а в custom задаете параметр. Только для этого нужно опять дописывать правки для custom. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.