<?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, 16 Apr 2026 23:26:49 -0000</pubDate>

		<item>
			<title>Macik</title>
			<description><![CDATA[<p>Метод `assign` подразумевает присвоение заданному тегу определенного значения. И естественно при повторном вызове переопределяет его. Это штатное поведение шаблонизатора. <br /><span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:14px;">Если у вас есть плагин (строку из которого вы привели `</span><code class="php variable" style="font-size:13.5px;background-color:rgb(250,250,250);white-space:pre;margin-right:0px;margin-left:0px;padding:0px;border-width:0px;background-image:none;font-family:Monaco, Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;color:rgb(0,134,179);float:none;height:auto;line-height:1.3em;width:auto;">$t</code><code class="php plain" style="font-size:13.5px;background-color:rgb(250,250,250);white-space:pre;margin-right:0px;margin-left:0px;padding:0px;border-width:0px;background-image:none;font-family:Monaco, Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;color:rgb(51,51,51);float:none;height:auto;line-height:1.3em;width:auto;">-&gt;assign(</code><code class="php string" style="font-size:13.5px;background-color:rgb(250,250,250);white-space:pre;margin-right:0px;margin-left:0px;padding:0px;border-width:0px;background-image:none;font-family:Monaco, Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;color:rgb(234,124,30);float:none;height:auto;line-height:1.3em;width:auto;">'MENU_GENERAL'</code><code class="php plain" style="font-size:13.5px;background-color:rgb(250,250,250);white-space:pre;margin-right:0px;margin-left:0px;padding:0px;border-width:0px;background-image:none;font-family:Monaco, Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;color:rgb(51,51,51);float:none;height:auto;line-height:1.3em;width:auto;">,</code><code class="php variable" style="font-size:13.5px;background-color:rgb(250,250,250);white-space:pre;margin-right:0px;margin-left:0px;padding:0px;border-width:0px;background-image:none;font-family:Monaco, Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;color:rgb(0,134,179);float:none;height:auto;line-height:1.3em;width:auto;">$text_menu</code><code class="php plain" style="font-size:13.5px;background-color:rgb(250,250,250);white-space:pre;margin-right:0px;margin-left:0px;padding:0px;border-width:0px;background-image:none;font-family:Monaco, Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;color:rgb(51,51,51);float:none;height:auto;line-height:1.3em;width:auto;">);</code><span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:14px;">`</span><span style="font-family:'Open Sans', 'Helvetica Neue', Helvetica, sans-serif;font-size:14px;">), то по логике он, и только он определяет, что должно быть в меню.</span></p>

<p>Теперь о том, что можно сделать —</p>

<p>Вариант 1. Расширить за счет доп. тегов (если число доп.плагинов конечно): </p>

<pre class="brush:xml;gutter:false;toolbar:false;">
&lt;ul class="nav"&gt;    
{MENU_GENERAL}  
{MENU_ADDITION_PLUG1}  
{MENU_ADDITION_PLUG2}  
...
&lt;/ul&gt;</pre>

<p>После чего в каждом плагине вызывать ф-ю присвоения для «своего тега»:<br />
 </p>

<pre class="brush:php;gutter:false;toolbar:false;">
$t-&gt;assign('MENU_ADDITION_PLUG1', $some_menu_items);</pre>

<p> </p>

<p>Вариант 2. В основном плагине, который генерирует меню, перед вызовом метода присвоения (`assign`) вставить вызов хука, например:</p>

<pre class="brush:php;gutter:false;toolbar:false;">
/* === Hook === */
foreach (cot_getextplugins('menu.assign.first') as $pl)
{
	include $pl;
}
/* ===== */

$t-&gt;assign('MENU_GENERAL',$text_menu);</pre>

<p>А остальные плагины (точнее ту их часть, которая генерит свое дополнение для меню) вызывать по указанному хуку, и в коде делать расширение переменной `<span style="color:rgb(0,134,179);font-family:Monaco, Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;font-size:13.5px;white-space:pre;background-color:rgb(250,250,250);">$text_menu</span>` : </p>

<pre class="brush:php;gutter:false;toolbar:false;">
$text_menu .= '&lt;тут код дополнительных пунктов меню&gt;';</pre>

<div class="line number1 index0 alt2" style="font-size:13.5px;background-color:rgb(250,250,250);font-family:Monaco, Menlo, Consolas, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;padding-right:1em;padding-left:0em;background-image:none;float:none;height:auto;line-height:1.3em;width:auto;white-space:pre;"> </div>
]]></description>
			<pubDate>Wed, 21 Jun 2017 19:13:46 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=8410&d=0#post42914]]></link>
		</item>
		<item>
			<title>Salador</title>
			<description><![CDATA[<p>Возникла ситуация добавить пункты меню из плагина.</p>

<p>Вот так выглядит тег в шаблоне:</p>

<pre class="brush:php;gutter:false;toolbar:false;">
&lt;ul class="nav"&gt;    
{MENU_GENERAL}  
&lt;/ul&gt;</pre>

<p>в плагине текст в меню добавляется вот так:</p>

<pre class="brush:php;gutter:false;toolbar:false;">
$t-&gt;assign('MENU_GENERAL',$text_menu);</pre>

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

<p>Также мне нужно было чтобы на главной странице каждый плагин добавлял свой блок.</p>

<p>Решил я это так - в файл system/cotemplate.php после <strong>public function assign </strong>добавил почти аналогичную функцию :</p>

<pre class="brush:php;gutter:false;toolbar:false;">
	public function assign_add($name, $val = NULL, $prefix = '')
	{
		if (is_array($name))
		{
			foreach ($name as $key =&gt; $val)
			{
				$this-&gt;vars[$prefix.$key] .= $val;
			}
		}
		else
		{
			$this-&gt;vars[$prefix.$name] .= $val;
		}
		return $this;
	}</pre>

<p>где просто добавил точки перед равно.</p>

<p>Теперь данные в теги можно добавлять</p>

<pre class="brush:php;gutter:false;toolbar:false;">
$t-&gt;assign_add('MENU_GENERAL',$text_menu);</pre>

<p>Это можно было решить штатными средствами по другому?</p>
]]></description>
			<pubDate>Fri, 09 Jun 2017 14:22:14 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/forums?m=posts&q=8410&d=0#post42902]]></link>
		</item>
	</channel>
</rss>