Менеджер блоков в Cs-cart 3.0 достаточно сложная штука. И я хотел бы сделать попытку объяснить как все таки с ним работать.
Файлы
- block_cache_properties.php — глобальные апдейт хендлеры для кеша блоков;
- dispatch_descriptions.php — список диспатчей и соответсвтующих лангвар. Нужно только для генерации списка для поля Dispatch при добавлении/редактировании локации;
- blocks.php – основная схема блоков;
- dynamic_objects.php — описание динамических объектов;
- fillings.php — дополнительные параметры для филингов;
- templates.php — дополнительные параметры лдя шаблонов.
Основая схема
1 2 3 4 5 6 7 8 |
|
а) Сам блок может иметь настройки которые будут задаваться на странице редактирования блока в панели администрирования на вкладке settings, так же настройки могут иметь шаблоны и филлинги. на странице редактирвоания блока они все отображаются в разных местах, но в итоге хранятся в массиве properties блока и к ним можно получить доступ из шаблона. Так же они передаются в функцию получения списка элементов для перечисляемого типа.
Список настроек предсьтавляет сабой набор пар типа ключ => значение, где ключём будет имя настройки. Оответсвтенно этому имени должна быть определена языковая переменная которая определяет название при выводе этой настройки.
Значемнием будет массив параметров определяющих эту настройку:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Типы настроек:
- checkbox — гuалочка;
- input — поле ввода;
- input_long — поле ввода с классом input-text-long;
- multiple_checkboxes — список галочек;
- text — поле ввода текса типа WYSIWYG;
- simple_text — обычное поле ввода текста без WYSIWYG;
- picker — пикер;
- template — шаблон. Вместо сеттинги будет тоображаться тот шаблон, который указан в параметре template;
- enum — перечесление объектов. Используется только в секци content
б) Список шаблонов может быть:
1 2 3 4 5 6 |
|
Всё что есть в параметре ‘template’ в схеме блоков будет объединено с параметрами заданными в схеме templates.php, при генерации схемы, ключём является путь к шаблону.
Соответственно по ключу ‘template’ в схеме блоков может быть:
- А) Список путей к шаблонам с непосредственно полным переченем параметров, в таком случае не потребуется ничего писать в templates.php;
- Б) Список путей к шаблонам, а все параметры по соотвествующим ключам указаны в templates.php;
- В) Путь к папке с шаблонами, а все параметры по соотвествующим ключам указаны в templates.php;
- Г) Название функции которая возвращает список шаблонов, а все параметры по соотвествующим ключам указаны в templates.php или так же возвращаются функцией.
в) В новом блок менеджере любой блок может содержать произвольное колличество переменных которые затем передадуться в шаблон, например имея такой блок:
1 2 3 4 5 6 7 |
|
В настроках блока в панели администрирования появится поле ввода в которое можно ввести
значение. При отображении блока в кастомерке в шаблоне этого блока будет доступна
переменная {$some_value}
значение которой задано в админке.
В качестве элемента контента может быть любая настройка (см. пункт натсроек), специальный
тип перечисление (enum
), функция.
С настройками всё просто, то что пользователь сохранит в админке то и пойдёт в шаблон.
Тип перечисление нужен для того чтобы определять списки элементов с различными видами
заполнения (fililng
), например список продуктов или категорий.
Параметры типа enum
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
Для неручного филлинга можно задать секцию params в которой будет список теъх параметров который в итоге будет передан в функцию генерации элементов, так же для филлинга можно задать список настроек по ключу settings, аналогично шаблонам или самим блокам.
Если в качестве элемента контента используется функция, то значение этой переменной будет равно результату который вернёт эта функция. Формат определяни таков:
1 2 3 4 |
|
г) В параметре wrapeprs как и в шаблонах может быть либо список враперов, либо путь к папке с ними. дополнительные настройки у них отсутствуют.
д) Если блок должен быть кешируемым то нужно определить ему свойство cache в схеме. В котором по ключу update_handlers перечислить список таблиц, при обновлении которых будет обновляться кэш.
В новом менеджере блоков все те статические блоки объединены в так называемый блок template у коготорого есть только одно свойство template в котором можно выбрать какой-либо шаблон для отображения из папки blocks/static_templates. Если вам нужно именно такой блок, то в аддоне достаточно создать папку blocks/static_templates и разместить там свой шаблон, который автоматичнски добавится к остальным. В принципе этот способ распространяется для всех основных блоков карты, расширить список их шаблонов можно по средствам добавления соотвествующей папки в аддоне.