ALite CMS 43.11
О системе > Новости
Язык: 
ALite CMS

Новости

Как использовать данные модуля «Компания»

06.07.2024 18:22, рейтинг: 470

Появились вопросы "Как использовать данные модуля «Компания»?".

Проще всего это сделать через хэштеги (аналогично Wordpress) и хук alc_hook_content.

Создаём записи в модуле «Компания» с идентификаторами, например name, adress, phone и т.д.

В любом месте страницы (статический текст, текст из базы данных и т.п.) вставляем хэштег в произвольном формате, например, [company:name], где name идетификатор данных, которые нужно вывести на страницу. Определённого формата хэштега нет, но пример приведён именно для такого формата.

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

Пример:

// проверка, что система корректно инициализирована
if (!isset($alc_admin_part)) die('Access denied '.basename(__FILE__));
if (!isset($alc_controller)) die('Failed to load controller. Work program aborted '.basename(__FILE__));

// код хука
alc_common_add_hook('alc_hook_content', 'my_company');

function my_company(&$content) {
    global $alc_controller;
    $content = preg_replace_callback('!\[company:([^\]]+)\]!sui', 'my_get_company_data', $content);
}

function my_get_company_data($matches) {
    global $alc_controller;
    $res = '';
    /*
    параметры:
    'company' - имя модуля;
    'get_attribute' - метод модуля;
    $matches[1] - условный идентификатор;
    true - получить только значения.
    */

    $attr = $alc_controller->module_func_exec('company', 'get_attribute', $matches[1], true);
    if (is_array($attr)) {
        foreach ($attr as $v) {
            $v = trim($v);
            if ($v) {
                if ($res) $res .= ', ';
                $res .= $v;
            }
        }
    }
    return $res;
}

Пример выполнения для тестового атрибута [company:test]:
Значение атрибута "Тест" модуля "Компания"

Примечания:
1. Модуль перемещён в раздел "Информационные модули".
2. Доступ к данным модуля может быть ограничен в настройках для групп пользователей.

RSS  RSS