Hooks
Attention! We strongly recommend first to learn more about Sites module REST documentation to understand how the module functions (with REST available in Bitrix24 Self-hosted editions). View this documentation as useful source when working with Bitrix24 Self-hosted editions and find out more details about API and only REST is not enough.
Presently, system does not support hooks extensions, creataed by third-party developers. This information is for reference only.
Sites and pages have several settings described in chapters dedicated to additional fields of sites and pages. However, how does the system processes the data? For example, does it prints a corresponding analytics counter code, having only counter ID on input?
It is implemented via the hooks system. These are classes in the namespace Bitrix\Landing\Hook\Page
. Single hook = single class = single file.
Each class consists minimum of three required methods:
getMap()
. Returns hook map outlining display sequence for settings fields.enabled()
. This specific method defines hook triggering for an entity. For example, the above mentioned counter may be specified in settings, but "use counter" field (the same hook field) is not checkmarked.
When the same hook is enabled for both a site and its page (enabled returns true), the page hook has the priority and it will be triggered first.exec()
. Main executing method. It is triggered, when enabled returns true.
The data used for hook is stored in the linear table with hook's each field binded to the page/site.
Hook execution event
Set of hooks cannot be expanded yet, but hooks can be redefined.
Example:
$eventManager = \Bitrix\Main\EventManager::getInstance(); $eventManager->addEventHandler('landing', 'onHookExec', function(\Bitrix\Main\Event $event) { $result = new \Bitrix\Main\Entity\EventResult; $result->modifyFields([ 'METAOG' => function(/** @var \Bitrix\Landing\Hook\Page $hook */ $hook) { \Bitrix\Landing\Manager::setPageView( 'MetaOG', '<meta property="og:image" content="/my/og/picture.png" />' ); // get array of all hook fields $fields = $hook->getFields(); // get current value for specific field $fields['DESCRIPTION']->getValue(); //must return true, when NOT required to execute system return true; } ]); return $result; } );
Example shows how to redefine the "Social network page" hook, or simply, og tags. Your event must return the array via modifyFields, where keys are hook codes which you want to redefine (a single code to be redefined in this case). Values are anonymous functions which will be called when executing a corresponding hook. Hook codes are listed below.
Attention!. Some system hooks can be disabled (for example, via interface option "Use"). However, after registering your handler, the system always registers it, because the system assigns handler execution to you.
Anonymous function receives a $hook instance of class \Bitrix\Landing\Hook\Page
that can be used to handle all hook fields and their current data.
So, what hook codes do exist to be redefined?
Code | Name |
---|---|
B24BUTTON | Site widget |
BACKGROUND | Page background |
FAVICON | Favicon |
GACOUNTER | Google Analytics |
GMAP | Google Map |
GTM | Google Tag Manager |
HEADBLOCK | Custom HTML and CSS |
METAMAIN | Page meta tags |
METAOG | Page display in social networks |
METAROBOTS | Search engine indexing |
PIXELFB | Facebook pixel location |
PIXELVK | Vkontakte pixel indexing |
UP | "Up" button |
VIEW | View type |
YACOUNTER | Yandex.Metrics |
You can find how system hooks operate in the hook's namespace Bitrix\Landing\Hook\Page
.