Служебные методы

Набор методов платформы, которые не относятся ни к шаблонизатору, ни к базе данных, но нужны в коде модуля время от времени: узнать, кто выполняется сейчас, вызвать функцию своего модуля, собрать путь к загруженному файлу, оборвать страницу и отдать вместо неё другую.

Сведения о текущем модуле

UnitName() — имя выполняющегося модуля. Может пригодиться в библиотечных функциях, которым нужно знать, кто их вызвал (например, чтобы загрузить языковые теги именно этого модуля):

$tags = MELBIS_INC_LANGS_tags($tpl, MELBIS()->UnitName());

UnitParam() — объявленные входные параметры всех загруженных модулей, массивом «имя модуля → список объявлений». Инструмент интроспекции: нужен служебным и отладочным модулям, которые строят карту проекта, а не обычному коду витрины.

Вызов функции своего модуля

UnitFunc($mName, ...$mParams) вызывает вспомогательную функцию текущего модуля по короткому имени: движок сам добавляет префикс модуля, принятый соглашением об именовании (см. «Принятые обозначения»).

// Внутри модуля melbis_store_card вызовет MELBIS_STORE_CARD_price()
$price = MELBIS()->UnitFunc('price', $store, $currency);

Смысл не в экономии символов, а в том, что имя функции перестаёт зависеть от имени модуля: переименовали модуль — переименовали функции, а вызовы остались прежними. Если функции с таким именем нет, разбор останавливается с ошибкой.

Путь к загруженным файлам

FilePath($mUploadTime, $mFileName = '') строит путь к файлу по дате его загрузки — картинки и вложения раскладываются по каталогам вида files/2026/07_22/14_30/:

$url = MELBIS()->FilePath($image['upload_time'], $image['file_name']);

Без имени файла вернёт путь к каталогу, со слешем на конце — в этом виде метод повторяет шаблонный модификатор |path. Если передать null вместо даты, метод переключается на каталог текущей группы шаблонов: так адресуются статические файлы оформления.

С именем файла добавляется проверка WebP. Для .jpg, .jpeg и .png метод смотрит, есть ли уже готовая WebP-версия в кеше, и если есть — возвращает путь к ней, а если нет — к оригиналу. Важно, что FilePath ничего не конвертирует: он только пользуется тем, что уже сконвертировано. Создают кеш модификаторы |webp и |text:webp — они делают преобразование на ходу, при первом же выводе картинки (см. «Модификаторы»). Поэтому путь от FilePath ведёт на WebP только для файлов, которые витрина уже хоть раз показывала.

В вёрстке пользуйтесь модификаторами; метод нужен, когда путь участвует в логике модуля — например, при проверке существования файла или при сборке ссылки для внешней выгрузки.

Аварийное завершение

Модуль, прерывающий работу нештатно, обязан снять служебную блокировку компиляции кеша — это делают методы Stop() и Halt(). Они описаны в разделе «Журналы, ошибки и метрики».

Отдать другую страницу вместо текущей

Иногда модуль посреди работы выясняет, что показывать нечего: товар удалён, раздел закрыт, ссылка устарела. Вместо того чтобы возвращать пустой фрагмент в уже собираемую страницу, её можно оборвать и отдать браузеру другую целиком.

function MELBIS_INC_404()
{
    MELBIS()->Stop();

    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
    MELBIS()->Run('melbis_base_404', []);

    header('Content-type: text/html; charset='.MELBIS_CHARSET);
    echo MELBIS()->Fetch();

    exit;
}

По строкам:

Приём удобно держать в библиотеке (inc) и вызывать из любого модуля, которому понадобилось прервать страницу.