Суть задачи: есть файл block.blogs_top.tpl, который я хочу привести к такому виду
<ul class="block-blog-list">
{foreach from=$aBlogs item=oBlog}
<li {if $oBlog && $sEvent==$oBlog->getUrl()}style="background: #dbe1f1;"{/if}>
{strip}
<a href="{$oBlog->getUrlFull()}">{$oBlog->getTitle()|escape:'html'}</a>
<span style="color:#888; font-size: 0.9em;">({$oBlog->getCountTopic()})</span>
{/strip}
</li>
{/foreach}
</ul>
Проблема в том, что Event не передается. Я нашел, где рендерится шаблон (ActionAjax.class.php) и пытаюсь в этот код
/**
* Получаем список блогов и формируем ответ
*/
if ($aBlogs = $this->Blog_GetBlogsRatingJoin($this->oUserCurrent->getId(), Config::Get('block.blogs.row'))) {
$oViewer = $this->Viewer_GetLocalViewer();
$oViewer->Assign('aBlogs', $aBlogs);
// Рендерим шаблон виджета
$sTextResult = $oViewer->FetchWidget('blogs_top.tpl');
$this->Viewer_AssignAjax('sText', $sTextResult);
} else {
$this->Message_AddErrorSingle($this->Lang_Get('block_blogs_join_error'), $this->Lang_Get('attention'));
return;
}
сразу после
$oViewer->Assign('aBlogs', $aBlogs);
воткнуть это:$oViewer->Assign('sEvent',Router::GetActionEvent());
но все равно ничего не выходит. Прошу знающих людей помочь с решением проблемы!
12 комментариев
В переменную шаблона $sEvent значение передается без всяких дополнительных усилий — Router это делает. Только вот если виджет выводится классом ActionAjax, то экшен у него будет ajax и ивент тоже будет не тот, о котором Вы подумали (какой именно — в классе надо смотреть, на память не помню)
Т.е. получается, что я не могу выделить название блога, который смотрит юзер в блоке, т.к. у него в любом случае ивент будет 'top'?
а можете указать на строчку откуда этот текст взят? (на гитхабе к примеру)
61 строка (забыл, как сразу на строку ссылку давать)
т.к. это /blogs/ т.е. список всех блогов. Как ты можешь высветить «текущий блог» если ты находишься не в «блоге» а в «списке блогв» где по определению нет текущего
«Хочу привети к виду .......» — не катит
«Хочу чтобы выделялся красным текущий блог» — катит
текст: «kukuk::::kuku::::kukuku» — показывает в каком мы блоге.
идем в WidgetBlogs.class.php и там ставим $sEvent =…
а потом уже делаем то что надо
Огромное спасибо!