AltoCMS 0.9.7.1
Код виджета:
<?php
/**
* Обработка виджета карты
*
* @package widgets
* @since 1.0
*/
class WidgetYandexmap extends Widget {
/**
* Запуск обработки
*/
public function Exec() {
/**
* Получаем список топиков
*/
if ($aTopics = $this->Topic_GetTopicsForMap()) {
$oViewer = $this->Viewer_GetLocalViewer();
$oViewer->Assign('aMyTopics', $aTopics);
// * Формируем результат в виде шаблона и возвращаем
$sTextResult = $oViewer->FetchWidget('yandexmap.tpl');
$this->Viewer_Assign('sYandexmap', $sTextResult);
}
}
}
/**
* Возвращает список топиков для карты
*
* @return array
*/
public function GetTopicsForMap() {
$aFilter = array(
'topic_type' => 'need_help',
);
$aTopicsId = $this->oMapperTopic->GetAllTopics($aFilter);
if (!is_array($aTopicId)) {
$aTopicId = array($aTopicId);
}
$aTopicId = array_unique($aTopicId);
$aTopics = array();
$s = join(',', $aTopicId);
if (false === ($data = $this->Cache_Get("topic_id_for_map_{$s}"))) {
$data = $this->GetTopicsAdditionalData($aTopicsId);
foreach ($data as $oTopic) {
$aTopics[$oTopic->getId()] = $oTopic;
}
$this->Cache_Set($aTopics, "topic_id_for_map_{$s}", array(), 60 * 1);
return $aTopics;
}
return $data;
}
В логах sql я вижу, что данные в массиве $aTopics должны быть. (Как проверить сам массив не знаю).
В шаблоне
{$aMyTopics|@count}
Получаю значение 0.
Я не понял можно ли свои произвольные переменные передавать в шаблон?
UPD.
$this->Viewer_Assign('aMyTopics', $aTopics);
Не копируйте чужой код, если его не до конца поняли :)
И надеюсь вы ожидаете увидеть aMyTopics в шаблоне yandexmap.tpl.
Пробежавшись глаза вроде все правильно написано
Шаблон block.yandexmap.tpl в /templates/skin/bootstrap/blocks
Подключаю в widgets.php:
В основном шаблоне:
Под лого сейчас цифры 0 0 1