Передо мной стоит задача вывести в шапке сайта (до вывода контента)

Передо мной стоит задача вывести в шапке сайта (до вывода контента), если мы находимся в блоге или сообществе, наименование блога (# «Блог пользователя XXX»). Скажите как это организовать, столько всего перепробовал?

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

avatar
до вывода контента

— это где?
В header-top вставляй все что нужно.
avatar
В шаблонах header_light.tpl и header.tpl находится лишь переменная {$htmlTitle}
Она устанавливается через $this->Viewer_AddHtmlTitle($param) в файле ActionBlog.class.php — находите необходимый вам экшен (их там много, на все случаи жизни), и меняйте на то, что надо.
avatar
Стоит модуль субдоменов и по этому ковыряюсь в файле ActionSubdomain.class.php. Здесь гдето мне необходимо получить название блога, что бы его вывести в header_top.tpl например вот так: $oBlog->getTitle() или $oTopic->getBlogTitle().

С подключенными субдоменами имеем URLы вида dima.livestreet.ru, как только мы перешли по этому адресу в header_top.tpl надо высветить «Блог пользователя — dima», т.е. заголовок Блога.

Покажите пожалуйста на примере. Никак не могу вникнуть в принципы движка.
avatar
Такого модуля у меня нет, поэтому мне сложно сказать, о том, что именно вам использовать в его связке. Но в общих чертах:
в обычном случае просмотр персонального блога юзера происходит через экшен ActionMy, и там достаточно в функции EventTopics поставить перед строкой

  $this->SetTemplateAction('blog');

следующее:

$oBlog = new BlogEntity_Blog();
$oBlog = $this->Blog_GetPersonalBlogByUserId($this->oUserProfile->getId());
$this->Viewer_SetHtmlTitle($oBlog->getTitle());

avatar
chorry, спасибо большое, с этим разобрался, вставил в экшен ActionSubdomain и немного поправил, то что и надо было.

Последний вопрос, если не затруднит:
Надо переименовать заголовок блога, для это сделал дополнительную страницу для авторизованных пользователей — Настройки профиля | блога | сайта. На странице настроек блога один текстовый инпут куда подтягивается Заголовок блога пользователя.
В экшене дописал функцию:

protected function EventBlog() {
$this->sMenuItemSelect='settings';
$this->sMenuSubItemSelect='blog';

$oBlog = new BlogEntity_Blog();
$oBlog = $this->Blog_GetPersonalBlogByUserId($this->oUserCurrent->getId());
$this->Viewer_Assign('BlgTitEd',$oBlog->getTitle());
$this->Viewer_AddHtmlTitle($this->Lang_Get('settings_menu_blog'));
if (isset($_REQUEST['submit_settings_blog'])) {
$this->Security_ValidateSendForm();
$bError=false;
if (func_check(getRequest('blog_name'),'text',10,35)) {

//$this->oUserCurrent->setTitle(getRequest('blog_name'));
} else {
//echo 'нет';
}
}
}

она подставляет имя блога в текстовое поле и обрабатывает информация для сохранения. Что необходимо прописать до строки (вместо неё)
$this->oUserCurrent->setTitle(getRequest('blog_name'));
чтобы происходила запись в базу?
avatar
Возможно событие EventBlog необходимо где то ещё прописать, кроме как зарегистрировать в RegisterEvent

protected function RegisterEvent() {		
		$this->AddEvent('profile','EventProfile');		
		$this->AddEvent('invite','EventInvite');	
		$this->AddEvent('tuning','EventTuning');		
		$this->AddEvent('blog','EventBlog');	
	}
avatar
Это уже немного сложнее, тут вам придется самому работать напрямую с базой. Смотрите Blog.mapper.class.php — вам придется либо немного допилить функцию UpdateBlog, или добавить ее дубликат (какую-нибудь UpdateBlogTitle), но принимающую в качестве параметра новое имя блога, волшебная строчка начинается так:

if ($this->oDb->query($sql,$oBlog->getTitle(),$oBlog->getDescription(),$oBlog->getType(),$oBlog->getDateEdit(),$oBlog->getRating(),.....
    return true;

и вместо $oBlog->getTitle() подставляете необходимый вам параметр, который вы передаете. Проверка на слеши, эскейпы и прочее — само собою.
Потом добавляете в Blog.class.php новый метод с ссылкой на метод маппера, и вызываете его из своего экшена. Как-то так.
avatar
chorry, я разобрался, сделал, всё замечательно получилось.
Большое спасибо за помощь.
avatar
Вы не работали с модулем редактирования комментариев. Возможно подскажете: в ActionBlog в файле comment.tpl для редактирования коммента есть условие
{if $aComment.edit or ($oUserCurrent and $oUserCurrent->isAdministrator())}

по выполнении которого возле комментария появится ссылка на редактирование и будет доступна в течении 15 минут.
Никак не могу найти текст условия
if $aComment.edit
, убираю его и редактирование доступно всегда. Если возможно, подскажите пожалуйста, где искать
$aComment.edit
?
avatar
Стоит модуль субдоменов и по этому ковыряюсь в файле ActionSubdomain.class.php. Здесь мне необходимо в функции protected function ShowTopicPersonal($iTopicId) получить название блога, что бы его вывести в header_top.tpl например вот так: $oBlog->getTitle() или $oTopic->getBlogTitle().
Покажите пожалуйста на примере. Никак не могу вникнуть в принципы движка.
avatar
Возможно вносить изменения в protected function ShowTopicPersonal($iTopicId) нет необходимости. С подключенными субдоменами имеем URLы вида dima.livestreet.ru, как только мы перешли по этому адресу в header_top.tpl надо высветить «Блог пользователя — dima», т.е. заголовок Блога.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.