Hook системата позволява на темите и модулите да вмъкват динамично код (CSS, HTML, JS и PHP логика) в различни части от шаблона, без да се променя основната CMS логика.
Hook-овете се регистрират чрез $o_page->add_hook($name, $callback) и се изпълняват с $o_page->hook($name).
Файлът functions.php на темата се зарежда автоматично преди темплейта, за да регистрира собствени hook-ове.
Методът hook_renderBlocks() автоматично добавя hook-ове за css, html и js, базирани на активните блокове от базата.
Примерен functions.php на тема
<?php// Templates/my-theme/functions.php
// Добавя глобални стилове в <head>$o_page->add_hook('beforeRender', function() { echo '<link rel="stylesheet" href="/Templates/my-theme/assets/style.css">';});
// Добавя съдържание след основния <main>$o_page->add_hook('afterRender', function() { echo '<footer>© ' . date('Y') . ' Maksoft CMS</footer>';});
// Добавя аналитичен JavaScript в края на <body>$o_page->add_hook('js', function() { echo '<script>console.log("Analytics loaded");</script>';});
Примерен HTML темплейт с hook точки
<!DOCTYPE html><html lang="bg"><head> <meta charset="utf-8"> <title><?php echo htmlspecialchars($o_page->title); ?></title> <?php $o_page->hook('beforeRender'); ?> <?php $o_page->hook('css'); ?></head><body>
<header><?php include 'header.php'; ?></header>
<main> <?php $o_page->hook('html'); ?></main>
<?php $o_page->hook('js'); ?><?php $o_page->hook('afterRender'); ?>
</body></html>
add_hook() – регистрира функция за дадено име.
hook() – изпълнява всички закачени функции по ред.
hook_renderBlocks() – генерира css, html, js hook-ове от съдържанието на страницата.
→ Резултатът е гъвкав темплейт, който може да вмъква блокове, стилове и скриптове динамично.