Добрый день. Имеется хук, возвращающий в качестве результата массив.
class PluginLive_HookLive extends Hook
{
public function RegisterHook()
{
$this->AddHook('template_header_banner_begin', 'GoGoGo');
}
public function GoGoGo()
{
return array('foo'=>'bar');
}
}
Вызываю в шаблоне:
{hook run='header_banner_begin' assign='aResult'}
Ожидаю, что в $aResult окажется «ассоциативный» массив, т.е. {$aResult.foo} вернет «bar». Но в результате возвращается массив вида array(0=>'A', 1=>'r', 1=>'r', 1=>'a', 1=>'y', 1=>'(' и так далее.
Помогите, пожалуйста, как корректно передать массив из хука в шаблон?
UPD: По-быстрому сделал костыльный вариант для одноуровневого массива. Буду рад предложениям как это сделать «академически верно» :)
class PluginLive_HookLive extends Hook
{
public function RegisterHook()
{
$this->AddHook('template_header_banner_begin', 'Countdown');
}
public function Countdown()
{
r = array('foo'=>'bar', 'foo2'=>'bar2');
ksort($r);
return implode(',',$r);
}
}
В шаблоне:
{assign var="aLive" value=","|explode:$aLive}
{assign var="sVar1" value=$aLive[0]}
{assign var="sVar2" value=$aLive[1]}