<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : Проверка функции в шаблонизаторе</title>
		<link>https://www.cotonti.com</link>
		<description>Останні повідомлення в темі</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Sat, 11 Apr 2026 23:28:52 -0000</pubDate>

		<item>
			<title>Kort</title>
			<description><![CDATA[<p>Если с правильно оформленным условием достаточно одной проверки, меня это устраивает))</p>
]]></description>
			<pubDate>Вт, 02 Лип 2024 05:04:45 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/ua/forums?m=posts&q=9360&d=0#post48076]]></link>
		</item>
		<item>
			<title>Alex300</title>
			<description><![CDATA[<p>Проблема как раз в том, что если функция не существует ее вызов <code>{PHP|check_exists}</code> возвращает сам тег <code>{PHP|check_exists}</code> в виде строки. Так уж сложилось. А при неаявном приведении к boolean непустая строка приводится к <code>TRUE</code>.</p>

<p>Может правильнее все таки, если функция не существует, выбрасывать исключение, как это делает PHP. В исключении указывать какой тег вызвал несуществующию функцию. А в шаблонах, если функция может быть неопределена, писать:</p>

<pre class="brush:xml;">
&lt;!-- IF {PHP|function_exists('check_exists')} AND {PHP|check_exists} --&gt;
...
</pre>

<p>Так на этапе разработки такие ошибки легче отлавливать.</p>

<p>Надо подумать, и поставить тикет :)</p>
]]></description>
			<pubDate>Пн, 01 Лип 2024 13:59:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/ua/forums?m=posts&q=9360&d=0#post48075]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<p>Так речь не про проверку активности расширения -- для этого есть cot_plugin_active() Речь про то, что если плагин на паузе, то и функция недоступна. А если так, то почему проверка</p>

<pre class="brush:xml;">
&lt;!-- IF {PHP|check_exists} --&gt;
...</pre>

<p>отрабатывает. Но "полный" вариант</p>

<pre class="brush:xml;">
&lt;!-- IF {PHP|check_exists} === true --&gt;
...</pre>

<p>да, подошел)</p>
]]></description>
			<pubDate>Нд, 30 Чер 2024 18:05:52 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/ua/forums?m=posts&q=9360&d=0#post48074]]></link>
		</item>
		<item>
			<title>Alex300</title>
			<description><![CDATA[<p>Шаблонизатор не делает проверок на то, активно ли расширение или нет. Если функция определена - просто выполняет ее. Если функция не определена, то, если не ошибаюсь, возвращает тег <code class="xml comments">{PHP|check_exists}</code> как есть. Как вариант можно попробовать:</p>

<pre class="brush:xml;">
&lt;!-- IF {PHP|check_exists} === true --&gt;
{PHP|render}
&lt;!-- ENDIF --&gt;</pre>

<p>Тогда, если тег вернет значение, отличное от <strong>true, </strong>блок не должен выполниться</p>
]]></description>
			<pubDate>Нд, 30 Чер 2024 16:09:35 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/ua/forums?m=posts&q=9360&d=0#post48073]]></link>
		</item>
		<item>
			<title>Kort</title>
			<description><![CDATA[<p dir="ltr" id="docs-internal-guid-32d326e5-7fff-6706-bcd2-1ee02c3af50f">Есть плагин, который с помощью двух функций выводит блок на странице. Примерно так:</p>

<pre class="brush:xml;">
&lt;!-- IF {PHP|check_exists} --&gt;
{PHP|render}
&lt;!-- ENDIF --&gt;</pre>

<p dir="ltr">Возник вопрос как всю эту историю ставить на паузу. Если я приостанавливаю работу плагина, то проверка check_exists() в шаблоне по идее должна отдавать false, потому что функция не определена. Но в результате отдается true, и в блоке выводится в виде текста {PHP|render}.</p>

<p dir="ltr">Решить все это можно, но правильно ли в данном случае работает шаблонизатор?</p>
]]></description>
			<pubDate>Сб, 29 Чер 2024 10:07:23 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/ua/forums?m=posts&q=9360&d=0#post48072]]></link>
		</item>
	</channel>
</rss>