| Salador |  | 
|---|---|
| Возникла ситуация добавить пункты меню из плагина. Вот так выглядит тег в шаблоне: 
<ul class="nav">    
{MENU_GENERAL}  
</ul>в плагине текст в меню добавляется вот так: 
$t->assign('MENU_GENERAL',$text_menu);но проблема в том, что если я добавляю ещё один плагин и в нем хочу вставить пункт меню, то он заменяет другие, а не добавляет. Также мне нужно было чтобы на главной странице каждый плагин добавлял свой блок. Решил я это так - в файл system/cotemplate.php после public function assign добавил почти аналогичную функцию : 
	public function assign_add($name, $val = NULL, $prefix = '')
	{
		if (is_array($name))
		{
			foreach ($name as $key => $val)
			{
				$this->vars[$prefix.$key] .= $val;
			}
		}
		else
		{
			$this->vars[$prefix.$name] .= $val;
		}
		return $this;
	}где просто добавил точки перед равно. Теперь данные в теги можно добавлять 
$t->assign_add('MENU_GENERAL',$text_menu);Это можно было решить штатными средствами по другому? | 
| Macik |  | 
|---|---|
| Метод `assign` подразумевает присвоение заданному тегу определенного значения. И естественно при повторном вызове переопределяет его. Это штатное поведение шаблонизатора.  Теперь о том, что можно сделать — Вариант 1. Расширить за счет доп. тегов (если число доп.плагинов конечно): 
<ul class="nav">    
{MENU_GENERAL}  
{MENU_ADDITION_PLUG1}  
{MENU_ADDITION_PLUG2}  
...
</ul>После чего в каждом плагине вызывать ф-ю присвоения для «своего тега»: 
$t->assign('MENU_ADDITION_PLUG1', $some_menu_items);
 Вариант 2. В основном плагине, который генерирует меню, перед вызовом метода присвоения (`assign`) вставить вызов хука, например: 
/* === Hook === */
foreach (cot_getextplugins('menu.assign.first') as $pl)
{
	include $pl;
}
/* ===== */
$t->assign('MENU_GENERAL',$text_menu);А остальные плагины (точнее ту их часть, которая генерит свое дополнение для меню) вызывать по указанному хуку, и в коде делать расширение переменной `$text_menu` : $text_menu .= '<тут код дополнительных пунктов меню>'; https://github.com/macik правильный хостинг — https://goo.gl/fjCa1F |