Где найти исходный код хука?

Начал изучать LS, но никак не могу понять, кто такие хуки.
Прочитал в документации и искал по всему сайту, но до меня никак не доходит.

Например в шаблоне 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 комментариев

avatar
Хуки это места, где может быть запущен пользовательский код. Подробнее о хуках.
avatar
Он тут стоит не чтобы что-то делать ) А чтобы к нему привязваться, например в кастомных разработках
  • md5
  • 0
avatar
но никак не могу понять, кто такие хуки.
Во-первых они — существо неживое.

Хук — не обязательно сразу код — это возможность для вставки кода в указанное место. Т.е. там программно можно вставить свой код. Это относится к шаблонным хукам, хуки в модулях и екшенах — вызов пхп кода.
avatar
Все гениальное просто)Блин люблю ЭТО сообщество! )
avatar
ок, все равно не ясно :)

например, хук
{hook run='html_head_begin'}
вызывает какую-то часть кода, верно?
тогда где я ее могу определить или посмотреть какую часть кода он вызывает?
avatar
вызывает какую-то часть кода, верно?
да
тогда где я ее могу определить
в хука плагина (classes/hooks)
avatar
разобрался, спасибо!
avatar
пожалуйста
avatar
А я вот что-то не разобрался… в classes/hooks всего 3 файла и нигде внутри не нашел часть, которая отвечает за
{hook run='html_head_begin'}
Подскажите пожалуйста полный путь до файла, который отвечает за
{hook run='html_head_begin'}
в /templates/skin/new-jquery/header.tpl
avatar
Четко файл никто не покажет так как хуки вызываются в плагинах от сторонних разработчиков.
Благодаря хукам мы можем вывести какое то свое содержимое или добавить новый функционал.Хуки по мимо шаблонов так же существуют в классах livestreet'а
avatar
вот буквально чуть выше livestreet.ru/blog/8566.html#comment127766
avatar
хук, как бы вам уже 3-й раз перефразировать — это двери, через которые не обязательно нужно пускать людей, но они есть и есть возможность их открыть, двери в здание заложили строители, чтобы потом покупателям дома не пришлось орудовать кувалдой в попытках сделать проход.
avatar
Если я правильно понял суть хука, то это что то типа include, то есть метка, куда будет вставлен код из другого файла? Вот я установил плагин «Награды» и плагин «Стена», они вывелись один под другим. Выходит их местоположение в профиле определяется каким то хуком? А можно изменить этот хук, то есть для наград сделать один хук, а для стены другой? Мне нужно стену расположить вообще в сайдбаре, а награды оставить в основной части профиля.
avatar
Выходит их местоположение в профиле определяется каким то хуком?
Да. По порядку вывелись используя один хук.

А можно изменить этот хук, то есть для наград сделать один хук, а для стены другой?
Да, прописать свой хук в шаблоне и прописать его же в хуках шаблона.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.