-0.05
Рейтинг
0.00
Сила

Не работают ссылки в хуке

Добавляю хук (из ActionIndex) в плагине:
$this->AddHook("topics_list_show", "Prepend");

Добавляю метод:
function Prepend($aTopics) {
    $a = $aTopics["aTopics"];
    $a[] = array_shift(array_values($a)); // типа первый элемент добавляем в конец
    $aTopics["aTopics"] = $a;
}

Никаких изменений. Может так:
function Prepend(&$aTopics) {
    $a = $aTopics["aTopics"];
    $a[] = array_shift(array_values($a)); // типа первый элемент добавляем в конец
    $aTopics["aTopics"] = $a;
}

нет, тоже самое. И даже так:
function Prepend($aTopics) {
    $aTopics["aTopics"] = "";
}

ничего не меняется. Но если в ActionIndex.class.php изменить:
$this->Hook_Run('topics_list_show',array('aTopics'=>$aTopics));

на:
$this->Hook_Run('topics_list_show',array('aTopics'=>&$aTopics));

то все работает (копия первого топика добавляется в конец)!

В чем подвох?

Языковой файл плагина

Интересно, а где находится информация о том что массив в языковом файле плагина не добавляется к общему массиву, а к элементу [«plugin»][«название плагина»] => array(«здесь то что в файле»)? И что в итоге в шаблоне надо подставлять {$aLang.plugin.названиеплагина.названиеключа}? Это как то совсем не очевидно. Я это понял только посмотрев содержимое docs.livestreetcms.com/api/1.0/ModuleLang#GetLangMsg-detail.

Похоже это появилось в версии 1.0.1 livestreet.ru/blog/11132.html#comment199625:
В ЛС 1.0.1 поменялся вывод языка из плагинов на такую конструкцию.