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

DLE 13.2 - вопросы про custom


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

Привет!

Есть ли какой-то параметр/условие у CUSTOM, чтобы сделать выбор (вывод) только тех новостей,

у которых установлена галка «Публиковать на главной»?

 

Например, с помощью

{custom categoryexclude="10,59,60" limit="6" order="date" sort="desc" template="short-featured-main" cache="yes"} 

я вывожу 6 новейших статей из всех категорий, кроме 10, 59, 60.

 

Как сделать тоже самое, но выводить только опубликованные на Главной?

Благодарю за участие.

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

Нет, такого стандартно нет. Вот вам плагин

<?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" - только те что не разрешены на главной

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

Подскажите ещё момент!

 

На Главной странице кастомом выводятся 5 новейших статей (order="date").

И 5 обновлённых статей (order="editdate") — чтобы сразу были видны исправленные и дополненные материалы.

Но получается так, что содержимое блоков полностью или частично совпадает. Статьи у меня объёмные и я сохраняю их несколько раз в процессе редактирования и публикации.

 

Как с этим можно побороться?

 

Самое простое, что в голову пришло: не пускать новые статьи в блок обновлённых статей в течение установленного срока (1-3-5 дней) с момента опубликования.

Но, как я понял, штатных средств для этого снова нет.

:huh:

Изменено пользователем Datagor
Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Datagor сказал:

Подскажите ещё момент!

 

На Главной странице кастомом выводятся 5 новейших статей (order="date").

И 5 обновлённых статей (order="editdate") — чтобы сразу были видны исправленные и дополненные материалы.

Но получается так, что содержимое блоков полностью или частично совпадает. Статьи у меня объёмные и я сохраняю их несколько раз в процессе редактирования и публикации.

 

Как с этим можно побороться?

 

Самое простое, что в голову пришло: не пускать новые статьи в блок обновлённых статей в течение установленного срока (1-3-5 дней) с момента опубликования.

Но, как я понял, штатных средств для этого снова нет.

:huh:

А custom у вас с датой редактирования идет до вывода custom по дате добавления или после него?

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

@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>

 

Ссылка на сообщение
Поделиться на других сайтах
19 hours ago, Gameer said:

А custom у вас с датой редактирования идет до вывода custom по дате добавления или после него?

Первым по коду страницы идёт custom order="date".

Следующим идёт блок custom  order="editdate".

 

Спасибо.

Пытаюсь понять ваш новый плагин. Но уже ночь. Думаю, не осилю сегодня :D

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

Первым по коду страницы идёт custom order="date".

Следующим идёт блок custom  order="editdate".

 

Спасибо.

Пытаюсь понять ваш новый плагин. Но уже ночь. Думаю, не осилю сегодня :D

Это уже не имеет значение какой по счету идет custom. Скиньте сюда два ваших custom я пропишу вам параметры что бы все работало :)

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

Gameer, здравствуйте.

Новый плагин очень навороченный вышел.

 

Можно пойти немного другим путём?

Можно сделать «ручное управление» статусом «Отредактировано/Неотредактировано» для любой статьи?

 

В админке в редакторе статей есть чекбокс «Выводить информацию о том что новость отредактирована».

<input class="icheck" type="checkbox" id="view_edit" name="view_edit" value="1">

 

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

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

Gameer, здравствуйте.

Новый плагин очень навороченный вышел.

 

Можно пойти немного другим путём?

Можно сделать «ручное управление» статусом «Отредактировано/Неотредактировано» для любой статьи?

 

В админке в редакторе статей есть чекбокс «Выводить информацию о том что новость отредактирована».


<input class="icheck" type="checkbox" id="view_edit" name="view_edit" value="1">

 

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

В каком смысле навороченный? Там все просто.

Ну ставите галочку на «Выводить информацию о том что новость отредактирована» или нет, а в custom задаете параметр. Только для этого нужно опять дописывать правки для custom.

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

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

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

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

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

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

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

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

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

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