Я иногда отслеживаю частые запросы по OctoberCMS и один из них выглядит как «october cms добавить функцию php». Очень странный запрос, видимо, ищут новички, но всё равно хочу осветить этот момент.
Философия OctoberCMS предполагает абсолютную гибкость и масштабируемость, ведь под капотом нечто иное как сам Laravel. И саму эту CMS лично я рассматриваю, как гениальную админку для данного волшебного фреймворка, (именно волшебного, потому что php-волшебства там очень много) но некоторые вещи резонно были адаптированы для управления через окно браузера, и для быстрой разработки web-приложений из web-приложения 🙂 По этому я думаю был использован шаблонизатор twig, а не родной blade и много чего ещё, не буду заострять внимание.
Итак, в Laravel логически-видимый жизненный цикл запроса начинается с роута, а в OctoberCMS он начинается с компонента Page (Страница). Именно этот компонент принимает URL со всеми параметрами, и в нём удобно и быстро создавать самые изощрённые конструкции, используя partials и подключая плагины. Но если хочется просто написать какую-то функцию php делается это очень просто в закладке code, вот так:
1 2 3 4 5 6 7 8 9 |
function onStart() { $halloWorld = function() { return 'Hallo world!'; } $this['out'] = $halloWorld(); } |
Выглядит не очень православно с точки зрения php, но по другому не получится, только анонимная функция внутри функции onStart(). Всё дело в том, что код в секции code на самом деле подвергается парсингу, а функции onStart(), onEnd() и т.д. нечто иное как обёртки для стадий жизненного цикла запроса.
Официальная документация по компоненту Page https://octobercms.com/docs/cms/pages
Русскоязычная документация: https://octobercms.ru/docs/cms-pages.md