Объясните пожалуйста, как вывести произвольный текст в произвольное место шаблона?

т.е. есть, к примеру, плагин или модуль и я хочу вывести результат работы какого-нить из его методов в шаблон
header_top.tpl
если есть возможность вызова методов не из плагина/модуля, то просветите тоже, если таковые имеются :)

p.s. вопрос навеян модулем «лента друзей», который тут в качестве примера предлагался, но не понятно, как мне зайдя в блоги сразу увидеть сколько у друзей прибавилось новых топиков не кликая по ним (не переходя в роут router.page.friends и не вызывая экшн)

заранее благодарен!:)

3 комментария

avatar
На сколько я понимаю это не противоречит концепции, на примере ленты друзей:

<?php
class PluginFriends extends Plugin {
 
        /**
         * Инициализация плагина
         * 
         * progit64: Этот метод срабатывает на каждой странице 
         * при инициализации плагина если он активен
         */
        public function Init() {

			//Помещаем информацию в шаблонную переменную, теперь мы ее можем использовать в любом шаблоне
			$this->Viewer_Assign('imTestText', $this->GetCountTopicsFriendsNew($sUserId));
        }

         /**
         * Получает число новых топиков в ленте друзей
         *
         * @return array
         */
        private function GetCountTopicsFriendsNew($sUserId) {
				/*
				  ****** 
				  Здесь идет код который получает необходимую информацию, 
				  например количество топиков
				 */
                return  $topicCount;
        }
}
?>

теперь можно в шаблоне, например в файле header_top.tpl, в любом месте написать {$imTestText}
avatar
проверил — при таком подходе метод GetCountTopicsFriendsNew будет вызываться для каждой страницы, даже если там эта информация не нужна (нет ссылки на ленту), а это лишняя нагрузка на сайт (если это запрос в бд).
avatar
можно проверять на какой странице вы находитесь в данный момент и вызывать либо нет этот метод, кроме того результат метода можно закэшировать как в исходном варианте ленты друзей и тогда вопрос с нагрузкой снимется. Еще вариант с хуком, если я правильно понял их назначение, к сожалению не использовал еще.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.