Как в Alto передать Event в шаблон блока? [РЕШЕНО]

Здравствуйте!

Суть задачи: есть файл 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());

но все равно ничего не выходит. Прошу знающих людей помочь с решением проблемы!

Похожие статьи

  • Переименовать event возможно?
    Имеем http://example.com/people/country/149/ Необходимо иметь http://example.com/people/strana/russia/ С переименованием ID страны в её имя проблем нет. А вот есть ли возможность изменить имя ивента?
  • Не работает виджет для ивента add
    Делаю шаблонный виджет. Пишу в конфиге: … 'action' => array( 'content' => array('add', 'edit'), ), … У меня в шаблоне своя группа виджетов {wgroup}, по...

12 комментариев

0
{debug} что говорит?
0
Если значение переменной не соответствует ожидаемому, то это не значит, что переменной вообще нет.

В переменную шаблона $sEvent значение передается без всяких дополнительных усилий — Router это делает. Только вот если виджет выводится классом ActionAjax, то экшен у него будет ajax и ивент тоже будет не тот, о котором Вы подумали (какой именно — в классе надо смотреть, на память не помню)
0
$this->AddEventPreg('/^blogs$/i','/^top$/','EventBlogsTop');

Т.е. получается, что я не могу выделить название блога, который смотрит юзер в блоке, т.к. у него в любом случае ивент будет 'top'?
0
<code>$this->AddEventPreg('/^blogs$/i','/^top$/','EventBlogsTop');</code>
ну по этому запросу — точно
а можете указать на строчку откуда этот текст взят? (на гитхабе к примеру)
Отредактирован:
0
https://github.com/altocms/altocms/blob/master/classes/actions/ActionAjax.class.php
61 строка (забыл, как сразу на строку ссылку давать)
0
Шото мне подсказывает что там того sEvent-а вообще не будет.
т.к. это /blogs/ т.е. список всех блогов. Как ты можешь высветить «текущий блог» если ты находишься не в «блоге» а в «списке блогв» где по определению нет текущего
0
Ну или тогда более детально надо поставить задачу.
«Хочу привети к виду .......» — не катит
«Хочу чтобы выделялся красным текущий блог» — катит
0
В общем списке блогов ничего и не должно выделяться. Должен выделяться блог в блоке top, когда юзер смотрит список топиков этого блога.
+2
см. сюда: alto.goloskarpat.info/blog/kuku/
текст: «kukuk::::kuku::::kukuku» — показывает в каком мы блоге.
идем в WidgetBlogs.class.php и там ставим $sEvent =…
а потом уже делаем то что надо
0
слона-то я и не заметил… не увидел, что виджет в WidgetBlogs.class.php формируется...

Огромное спасибо!
0
В ЛС можно вызвать блок передав в него параметры, но это вызов блока из экшена, а не из кофигов $this->Viewer_AddBlock('right','indexmatches',array('plugin'=>'vs', 'oBlog'=>$oBlog),150);
0
мне не блок надо вызывать (он вызван). Мне нужно, чтобы в блоке название блога подсвечивалось фоном, когда юзер смотрит этот блог.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.