Разработка сайтов на UMI.CMS
Знать UMI.CMS в совершенстве невозможно.
Даже сами разработчики знают о ней не все...

UMi

Ursa Minor

Класс templater

Описание:

Класс templater обеспечивает обработку шаблонов UMI.CMS, вызов макросов и логику взаимодействия шаблонизатора с CMS.
Сторонним разработчикам предоставляется только несколько методов.

Шаблоны - набор правил, по которым выводится какие-либо данные.

Данный класс является классом-одиночкой (singleton). Экземпляр данного класса можно получить следующим образом: templater::getInstance()

 

Методы

static (void) templater :: pushEditable ( (string) $module , (string) $method , (string) $element_id )

Описание:

Метод сообщает системе, что на на текущей странице косвенно выведена некая страница из дереве сайта, к которой нужно предоставить быстрый доступ для редактирование.

$module, $method - сообщяет о принадлежности страницы определенному модулю/методу.

$element_id - id страницы в иерархии (umiHierarchyElement).

Для того, чтобы предоставить возможность быстрого редактирования элемента необходимо сделать следующее: Зарегистрировать элемент для возможности быстрого редактирования Для возможности быстрого редактирования в модуле - обработчике быть переопределен метод def_module::getEditLink() Интерфейсы быстрого редактирования должны подключаться в шаблонах дизайна страницы следующим образом: После того, как блок зарегистрирован для возможности быстрого редактирования и корректно переопределен метод getEditLink(), блок появится в интерфейсах быстрого редактирования (всплывающее меню Shift + D и панель быстрого редактирования).

Пример кода:

<?php
    // Зарегистрируем элемент для возможности быстрого редактирования:
    // получаем id текущей страницы
    $element_id = cmsController::getInstance()->getCurrentElementId();
    // ...
    // регистрируем объект каталога с идентификатором $element_id для возможности быстрого редактирования
    templater::pushEditable("catalog", "object", $element_id);
    // выводим объект каталога
    return self::parseTemplate($template_line, $line_arr, $element_id);
    // ...
?>

Пример 2:

<?php
    // В модуле - обработчике переопределим метод def_module::getEditLink()
    // получаем id текущей страницы
    $element_id = cmsController::getInstance()->getCurrentElementId();
    // ...
    class myModule extends def_module {
        // ...
        // Метод getEditLink определен в def_module.php и может быть переопределен
        // этот метод вызывается системой для формирования интерфейсов быстрого редактирования
        // метод должен вернуть список из двух элементов - ссылка на добавление (либо false) и ссылка на редактирование (либо false)

        public function getEditLink($element_id, $element_type) {
            // получаем элемент
            $element = umiHierarchy::getInstance()->getElement($element_id);
            if ($element instanceof umiHierarchyElement) {
                $parent_id = $element->getParentId();
                //прочитать в соответствие с типом возвращаем ссылки на добавление и редактирование элемента
                switch($element_type) {
                    case "category": {
                        $link_add = $this->pre_lang . "/admin/catalog/tree_object_add/{$element_id}/";
                        $link_edit = $this->pre_lang . "/admin/catalog/tree_section_edit/{$parent_id}/{$element_id}/";

                        return Array($link_add, $link_edit);
                        break;
                    }
                   
                        case "object": {
                        $link_edit = $this->pre_lang . "/admin/catalog/tree_object_edit/{$parent_id}/{$element_id}/";
                   
                        return Array(false, $link_edit);
                        break;
                    }

                    default: {
                        // тип элемента не указан
                        return false;
                    }
            }
        }
    }

// ...
}
?>

 

 

 

 

(string) $result templater :: parseInput ( (string) $htmlInput )

Описание:

В результате работы метода вызовы макросов в строке $htmlInput заменяются на результаты работы этих макросов.
Этот метод может быть полезен для промежуточной обработки результатов.

Пример кода:

<?php
    $template = templater::getInstance();
    $str = <<<END
        %content insert('/about/')%
END;
    echo $template->parseInput($str); //Вернет результат работы макроса %content insert(...)%
?>

 

 

Новости

30.10.2016

Обновлено описание макроса для вывода всех элементов справочника UMI.CMS с учетом версии 14.

 

21.07.2015

Памятка по обновлению до debian 8.1. Приятно вкусить все плюшки PHP 5.6

11.11.2014

Как выполнить SQL-запрос из bash-скрипта. Памятка

11.11.2014

Как отследить нагрузку сайта на сервер.

06.11.2014

Заготовка для галереи изображений с прокруткой. Не знаю, когда дойдут руки довести ее до вида плагина, поэтому открываю как есть. Можно доработать.

05.11.2014

Выкладываю как заготовку свой слайдер изображений на mootools

Все обновления