<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Новый хук для pages</title>
		<link>https://www.cotonti.com</link>
		<description>Last topic posts</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Sat, 11 Apr 2026 19:43:49 -0000</pubDate>

		<item>
			<title>Roffun</title>
			<description><![CDATA[<p>Понял, спасибо, у меня изначально и было реализовано экстраполями, просто хотел вынести в отдельный плагин. Значит попробую поработать с хуками которые Булат подсказал.</p>
<p class="updated"><strong>Добавлено 15 часов спустя:</strong></p><blockquote class="fp"><a href="https://www.cotonti.com/forums?m=posts&amp;q=8157&amp;d=1#41899">#41899</a> <strong>Yusupov: </strong>
<p>Есть же хуки page.add.add.import и page.edit.update.import.</p>
</blockquote>

<p>Вопрос решен, спасибо.</p>
]]></description>
			<pubDate>Thu, 07 Jul 2016 17:13:04 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=8157&d=0#post41902]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<p>На мой взгляд это проще реализовать добавлением экстра-полей (естественно не ручным, а внутри твоего плагина — смотри <a href="https://www.cotonti.com/reference/api%20-%20extrafields/package-summary.html">API экстаполей</a>). Это позволит автоматом системе их обрабатывать как на вывод, так и на импорт (без дополнительного кода). </p>

<p>С чем мы можем дополнительно столкнуться в данном варианте:</p>

<ol><li>Доп.поля не стандартных типов. Решение: используем <span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:15px;line-height:24px;">приведенные Булатом хуки, с помощью которых можно дополнительно провести выборочную обработку полей после импорта. Тоже самое для вывода, используя `</span>pagetags.main<span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:15px;line-height:24px;">`.</span></li>
	<li>Если мы не хотим «светить» наши экстаполя в интерфейсе Админки. Решение: удалить их из списка вывода используя хук `admin.extrafields.loop`.</li>
</ol>]]></description>
			<pubDate>Thu, 07 Jul 2016 11:21:17 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=8157&d=0#post41901]]></link>
		</item>
		<item>
			<title>Roffun</title>
			<description><![CDATA[<blockquote class="fp"><a href="https://www.cotonti.com/forums?m=posts&amp;q=8157&amp;d=1#41898">#41898</a> <strong>Macik:</strong>
<ol><li>Хочу услышать подробней про сценарий использования, что будет вызываться по хуку (имею в виду алгоритм той части что будет вызвана в конкретно вашем случае). </li>
</ol></blockquote>

<p>Задача была следующая:</p>

<p>Написать плагин, который после установки создает N количество дополнительных ячеек в таблице cot_pages, на данный момент их 4, потом будет больше 10. Содержимое должно заполняться в добавлении, правиться в редактировании, выводиться на страницах модуля page. В приоритете использовать по максимуму возможности движка, а дописывать по минимуму. Плагин будет расширяться по мере развития. С содержимым потом будут работать функции, например слаживать результат вывода 2 полей и выводить готовый параметр и тд. </p>

<p>Добавление проблем не вызвало, в setup папке файлы install и uninstall своё дело сделали, в Hooks=page.add.tags  создались теги.</p>

<p>Редактирование тоже проблем не вызвало Hooks=page.edit.tags.</p>

<p>Вывод на страницу тоже проблем не вызывает <span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:15px;line-height:24px;">Hooks=</span>page.tags.</p>

<p>Для того чтобы всё вышеперечисленное работало, осталось параметры скидывать в нужном направлении. Просмотрел весь код файла page.functions.php, код аналогичных модулей / плагинов, и пришел к выводу что во многих функциях есть хуки, а в этой нет. Так как в функцию нужно передать идентичные данные , например:</p>

<p>$rpage['page_myone'] = (int)cot_import('rpage_<span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:15px;line-height:24px;">page_myone</span>', $source, 'INT');</p>

<p><span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:15px;line-height:24px;">$rpage['page_mytwo</span><span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:15px;line-height:24px;">'] = (int)cot_import('rpage_</span><span style="font-size:15px;font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;line-height:24px;">page_mytwo</span><span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:15px;line-height:24px;">', $source, 'INT');</span></p>

<p> </p>

<p>Попробовал вариант с добавлением хука, и всё стало работать как часики. Если есть более продвинутые варианты решения подобной задачи, с удовольствием почерпну опыт, пригодится не один раз еще, и другим будет полезно почитать.</p>

<p> </p>

<blockquote class="fp"><a href="https://www.cotonti.com/forums?m=posts&amp;q=8157&amp;d=1#41898">#41898</a> <strong>Macik:   </strong><span style="font-size:15px;line-height:1.6em;">Мое мнение таково, что расширение функций хуками не очень хорошая практика (не смотря на то, что много где используется в нашем движке). </span></blockquote>

<p>Если есть более оптимальный способ решения подобных задач, то можно конечно и без этого хука обойтись, просто я исходил из того, что в других подобных функциях он есть.</p>
]]></description>
			<pubDate>Thu, 07 Jul 2016 08:00:22 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=8157&d=0#post41900]]></link>
		</item>
		<item>
			<title>Yusupov</title>
			<description><![CDATA[<p>Есть же хуки page.add.add.import и page.edit.update.import.</p>
]]></description>
			<pubDate>Thu, 07 Jul 2016 07:23:25 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=8157&d=0#post41899]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<p>Есть несколько вопросов и замечаний...</p>

<ol><li>Хочу услышать подробней про сценарий использования, что будет вызываться по хуку (имею в виду алгоритм той части что будет вызвана в конкретно вашем случае). Потому, как изменять импортированные данные или добавлять дополнительные в `$rpage` можно и во вне функции.</li>
	<li>Слово `query ` здесь в названии хука лишнее, и используется в случаях когда хук призван изменять значения строк составляющих будущий SQL запрос. Логичнее назвать его `page.import.main` по аналогии с другими частями. Или если четко следовать букве <a href="https://www.cotonti.com/docs/ext/extensions/ext_hooks#ch2.2">правил именования</a>, то `page.functions.import.main`</li>
	<li>Мое мнение таково, что расширение функций хуками не очень хорошая практика (не смотря на то, что много где используется в нашем движке). Поясню — функция как программный блок и часть API  должна быть максимально понятной, атомарной, детерминированной. Если мы внедряем внутрь хук мы теряем эти свойства. Плюс несколько усложняем отладку.</li>
</ol><p> </p>

<p> </p>
]]></description>
			<pubDate>Wed, 06 Jul 2016 23:25:10 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=8157&d=0#post41898]]></link>
		</item>
		<item>
			<title>Roffun</title>
			<description><![CDATA[<p>Добрый вечер, уважаемые разработчики.</p>

<p>При разработке плагина расширяющего возможности pages, столкнулся с необходимостью работы с функцией cot_page_import. Заметил что в некоторых функциях хуки есть, а в некоторых нет.</p>

<p>Как насчет того чтобы добавить хук  <em>page.import.query</em> в функцию <span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:15px;line-height:24px;">cot_page_import перед </span>  $parser_list = cot_get_parsers();  чтобы можно было коннектиться сторонними плагинами.</p>

<p> </p>

<pre class="brush:php;gutter:false;toolbar:false;">
   	/* === Hook === */
	foreach (cot_getextplugins('page.import.query') as $pl)
	{
		include $pl;
	}
	/* ===== */   
</pre>
]]></description>
			<pubDate>Wed, 06 Jul 2016 17:18:42 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=8157&d=0#post41897]]></link>
		</item>
	</channel>
</rss>