<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Вызов функций из шаблона и шаблонные теги</title>
		<link>https://www.cotonti.com</link>
		<description>Last topic posts</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Thu, 09 Apr 2026 20:56:45 -0000</pubDate>

		<item>
			<title>Eugene</title>
			<description><![CDATA[<p>
	отлично!</p>
]]></description>
			<pubDate>Wed, 17 Oct 2012 08:03:32 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7160&d=0#post35829]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<p>
	Очень доходчего. Спасибо.</p>
<p>
	p.s. Полез смотреть куда можно разместить в документации этот кусок. Оказалось, что почти все уже расписано здесь: <a href="http://www.cotonti.com/docs/ext/themes/cotemplate_statements">http://www.cotonti.com/docs/ext/themes/cotemplate_statements</a></p>
<p>
	Но все равно, по-русски намного понятнее. И прояснило вопрос кеширования. :)</p>
<p>
	 </p>
]]></description>
			<pubDate>Tue, 16 Oct 2012 21:52:14 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7160&d=0#post35822]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[<p>
	Я, кажется, где-то уже отвечал, как работает кеширование CoTemplate. Повторю главное: CoTemplate кеширует структуру самого шаблона, а не отображаемые данные. О кешировании данных или же страниц целиком должен позаботиться контроллер.</p>
<p>
	Соответственно, ни один из перечисленных вариантов непосредственно на кеширование не влияет. Но различия в скорости работы и условиях применения есть.</p>
<p>
	<strong>{MY_TAG}</strong></p>
<p>
	Назначается контроллером для данного шаблона, шаблонизатором обрабатывается быстрее всего и из-за простоты конструкции, и из-за того, что поиск происходит по небольшому локальному массиву тегов.</p>
<p>
	Плюсы:</p>
<ul><li>
		Простота использования в шаблоне, скорость отрисовки.</li>
	<li>
		Полный контроль поведения в контроллере, конфликты и коллапсы маловероятны.</li>
</ul><p>
	Минусы:</p>
<ul><li>
		Назначается только для конкретных шаблонов и блоков. Чтобы расширить область действия, необходимо править код.</li>
</ul><p>
	<strong>{PHP.my_tag}</strong></p>
<p>
	Это глобальная переменная PHP. Работает медленнее, чем локальный тег, потому что поиск переменной происходит в (огромном) массиве $GLOBALS. Больше отличий по скорости нет.</p>
<p>
	Плюсы:</p>
<ul><li>
		Может быть виден из множества шаблонов и плагинов, в отличие от локальных тегов.</li>
	<li>
		Иногда проще использовать готовый тег из глобальной переменной, чем писать специально для этого контроллер.</li>
</ul><p>
	Минусы:</p>
<ul><li>
		Чуть медленнее, чем {MY_TAG}.</li>
	<li>
		Гораздо более подвержен конфликтам и случайным изменениям другими участками кода.</li>
</ul><p>
	<strong>{PHP|my_tag()}</strong></p>
<p>
	Это вызов функции со всеми вытекающими последствиями. Точнее, сначала соствление списка аргументов, а уж потом вызов функции. Так что работает такая конструкция медленнее обоих вышеперечисленных вариантов, но не слишком ощутимо.</p>
<p>
	Плюсы:</p>
<ul><li>
		Теги только выводят данные неизменно. Callback-функции могут не только выводить, но и изменять данные.</li>
	<li>
		Можно указывать параметры и получать более вариабельный результат.</li>
	<li>
		Глобальность области применения, как и у {PHP.my_tag}.</li>
</ul><p>
	Минусы:</p>
<ul><li>
		Это полновесная PHP-функция, так что она может, скажем, положить весь скрипт в случае ошибки. В целом, требует разумного применения.</li>
</ul><p>
	<strong>Краткое резюме:</strong></p>
<ul><li>
		используйте теги {MY_TAG} в большинстве случаев;</li>
	<li>
		используйте {PHP.my_tag}, если тег нужно выводить в неопределённом множестве локаций или если нет смысла писать плагин для вывода легко доступной переменной;</li>
	<li>
		используйте {PHP|my_tag()} и другие формы callback-функций для обработки данных или создания виджетов (виджет - это callback-функция, которая отображает целый шаблон согласно переданным ей параметрам).</li>
</ul>]]></description>
			<pubDate>Tue, 16 Oct 2012 12:11:47 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7160&d=0#post35816]]></link>
		</item>
		<item>
			<title>Eugene</title>
			<description><![CDATA[<p>
	полезный вопрос!</p>
<p>
	присоединяюсь к слушающим ответ. ))</p>
]]></description>
			<pubDate>Tue, 16 Oct 2012 06:12:43 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7160&d=0#post35811]]></link>
		</item>
		<item>
			<title>Macik</title>
			<description><![CDATA[<p>
	У меня вопрос возник - какой вариант лучше использовать с точки зрения кеширования (скорости работы):</p>
<ul><li>
		{MY_TAG}  </li>
	<li>
		{PHP.my_tag}  </li>
	<li>
		{PHP|my_tag()} </li>
</ul><p>
	 </p>
<p>
	Я так понимаю:</p>
<p>
	первый вариант наиболее предпочтительный, т.к. вешается на хук и вызывается только на соотв. странице, плюс хорошо кешируется.</p>
<p>
	второй вариант генерится заранее без привязки к конкретному вызову (тоже можно повесить на хук и вызывать только на целевой странице), как здесь с кешированием? </p>
<p>
	третий вариант генерируется только когда вызван, вопрос, опять же с кешированием.</p>
<p>
	 </p>
<p>
	Т.к. внутренние механизмы кеширования coTemplate (и Котонти в целом) мне малопонятны - хочется услышать комменнтарии от спецов на счет что лучше, что быстрее, что целесообразнее... </p>
<p>
	 </p>
]]></description>
			<pubDate>Mon, 15 Oct 2012 11:52:44 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=7160&d=0#post35803]]></link>
		</item>
	</channel>
</rss>