Где найти исходный код хука?
Начал изучать LS, но никак не могу понять, кто такие хуки.
Прочитал в документации и искал по всему сайту, но до меня никак не доходит.
Например в шаблоне header.tpl буквально в пятой строчке есть вызов хука «html_head_begin»
а теперь внимание вопрос.
Где в исходных кодах можно найти, что делает этот хук? в каких папках и директориях копать?
если я где-то затупил — поправьте пожалуйста.
UPD: Та дам! Если кто-то еще не разобрался, что такое хуки, то вот вам колхозное определение.
Хук — это место в шаблоне, которое обозначается примерно так:
это значит, что вы можете написать функцию, которая будет запущена в месте, где этот хук расположен. Например так:
Т.е. мы говорим движку: «я хочу запустить эту белеберду в месте, где стоит хук „menu_topic_action_add_item“. Поэтому, если вы нашли в коде конструкцию
то не пугайтесь, это значит, что тут может запускаться некий код. А может и не запускаться :)
И не забывайте, что при регистрации хука шаблона надо вначале писать „template_“, т.е. если вы в шаблоне нашли
то определять его надо так:
Прочитал в документации и искал по всему сайту, но до меня никак не доходит.
Например в шаблоне header.tpl буквально в пятой строчке есть вызов хука «html_head_begin»
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ru">
<head>
{hook run='html_head_begin'}
<title>{$sHtmlTitle}</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="{$sHtmlDescription}" />
<meta name="keywords" content="{$sHtmlKeywords}" />
а теперь внимание вопрос.
Где в исходных кодах можно найти, что делает этот хук? в каких папках и директориях копать?
если я где-то затупил — поправьте пожалуйста.
UPD: Та дам! Если кто-то еще не разобрался, что такое хуки, то вот вам колхозное определение.
Хук — это место в шаблоне, которое обозначается примерно так:
{hook run='menu_topic_action_add_item'}
это значит, что вы можете написать функцию, которая будет запущена в месте, где этот хук расположен. Например так:
public function RegisterHook()
{
$this->AddHook('menu_topic_action_add_item', 'TopicEditAfter');
}
public function TopicEditAfter()
{
$aType = $this->PluginCategory_Category_GetType();
$this->Viewer_Assign('aType', $aType);
return $this->Viewer_Fetch(Plugin::GetTemplatePath('category') . 'menu.settings_category.tpl');
}
Т.е. мы говорим движку: «я хочу запустить эту белеберду в месте, где стоит хук „menu_topic_action_add_item“. Поэтому, если вы нашли в коде конструкцию
{hook run='menu_topic_action_add_item'}
то не пугайтесь, это значит, что тут может запускаться некий код. А может и не запускаться :)
И не забывайте, что при регистрации хука шаблона надо вначале писать „template_“, т.е. если вы в шаблоне нашли
{hook run="menu_topic_action_add_item"}
то определять его надо так:
public function RegisterHook()
{
$this->AddHook('tеmplate_menu_topic_action_add_item', 'TopicEditAfter');
}
}
14 комментариев
Хук — не обязательно сразу код — это возможность для вставки кода в указанное место. Т.е. там программно можно вставить свой код. Это относится к шаблонным хукам, хуки в модулях и екшенах — вызов пхп кода.
например, хук вызывает какую-то часть кода, верно?
тогда где я ее могу определить или посмотреть какую часть кода он вызывает?
в хука плагина (classes/hooks)
Благодаря хукам мы можем вывести какое то свое содержимое или добавить новый функционал.Хуки по мимо шаблонов так же существуют в классах livestreet'а
Да, прописать свой хук в шаблоне и прописать его же в хуках шаблона.