Skip to content

fourroses666/pagebuilder

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Page Builder for Evolution CMS

Other languages: English

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

Youtube review

Конфигурация для блоков берется из папки config. Для создания нового блока нужно создать в этой папке файл .php, который должен вернуть ассоциативный массив. Структура массива следующая:

КлючЗначение
titleНазвание блока, видимое менеджеру при заполнении
fields Ассоциативный массив используемых полей, в котором ключами являются идентификаторы полей, а значениями - массивы опций этих полей.

Возможные типы полей и опции приведены ниже.

show_in_templatesМассив идентификаторов шаблонов, для которых доступны редактирование и вывод блоков
hide_in_docsМассив идентификаторов документов, для которых редактирование и вывод недоступны
show_in_docsМассив идентификаторов документов, для которых доступны редактирование и вывод блоков.

Если этот параметр указан, то "hide_in_docs" не принимается во внимание.

Если не указан ни один из параметров, ограничивающих доступ, блоки будут доступны во всех документах.

templates Ассоциативный массив, содержащий шаблон для ключа "owner", а также шаблоны для каждой группы полей.

Описание методов создания шаблонов смотрите ниже

iconКласс иконки, который будет выводиться в секции для добавления нового блока, если в параметрах плагина значение &addType установлено в "icons"

Например, если задать класс fa fa-cogs, то в интерфейс будет выведено следующее:

<i class="fa fa-cogs"></i>
imageИзображение, которое будет выводиться в секции для добавления нового блока, если в параметрах плагина значение &addType установлено в "images".

Изображение будет обработано сниппетом phpthumb с параметром w=80

Шаблоны

Основной шаблон блока должен быть определен для ключа "owner". Помимо него, массив должен содержать шаблоны для каждой группы полей, и может содержать шаблоны для полей, у которых определено свойство "elements" (это поля типа "dropdown", "checkbox", "radio"). В таких шаблонах доступны выбранные значения свойства "elements".

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

'images' => '<img src="[+image+]" alt="[+title+]" class="slide">'

либо ассоциативный массив шаблонов:

'images' => [
  'item'  => '<img src="[+image+]" alt="[+title+]" class="slide">',
  'thumb' => '<div class="thumb" style="background-image: url([+image+])"></div>',
],

Во втором случае вывод этих элементов в родительском шаблоне можно использовать как [+images.item+] и [+images.thumb+].

Плейсхолдеры

В качестве плейсхолдеров могут использоваться имена полей (напр. [+title+]), имена групповых полей (напр. [+images+], [+images.thumb+]).

В шаблонах для полей выбора "dropdown", "checkbox", "radio" доступны плейсхолдеры [+value+] и [+title+].

Также в шаблоне 'owner' доступны плейсхолдеры [+index+] и [+iteration+], а в груповых полях и полях выбора - [+{имя_поля}_index+] и [+{имя_поля}_iteration+].

Источники шаблонов

Разметку можно указать в самом значении массива, как показано в примерах выше.

Возможно указание имени чанка, в котором находится нужный шаблон. Для этого нужно использовать привязку @CHUNK, например:

'checkbox' => '@CHUNK all_fields_checkboxes',

Также возможна подгрузка шаблона из файла, например:

'owner' => '@FILE pagebuilder/all_fields.tpl',

В этом примере файл шаблона будем загружен из MODX_BASE_PATH . "assets/templates/pagebuilder/all_fields.tpl". Вообще файл ищется в следующих директориях:

assets/tvs/
assets/chunks/
assets/templates/

Либо можно указать полный путь от корня сайта. Первый слеш не указывается.

Группы шаблонов

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

'templates' => [
  'owner'  => '@CHUNK full_owner',
  'images' => '@CHUNK full_images'

  'anchors' => [
    'owner' => '@CHUNK link_owner',
  ],
],

то вызов сниппета с параметром &templates, равным anchors, будет использовать для вывода шаблоны, которые определены в группе anchors:

[[PageBuilder? &templates=`anchors`]]

Поля

Структура массива для описания поля

КлючЗначение
captionНазвание поля, которое видит менеджер. Необязательно
typeТип поля, см. ниже
themeТема редактора для поля "richtext", доступные значения можно посмотреть в конфигурации Evolution CMS, на вкладке "Интерфейс"
optionsДополнительные опции для поля "richtext", значения можно посмотреть здесь
fieldsВложенные поля, для типа "group"
heightВысота поля, с указанием единиц измерения, например "150px". Доступно для типа поля "textarea".

Для полей "richtext" указывается в составе опций редактора, в ключе "options"

elementsВозможные значения для поля выбора. Доступны для полей "dropdown", "radio", "checkbox". Могут быть представлены в виде массива "ключ" => "значение", или в виде строки в доступном формате Evolution CMS (@SELECT и пр. работают).
layoutВид расположения вариантов для полей "radio" и "checkbox". Возможные значения - "vertical" (по умолчанию) и "horizontal"
defaultЗначение по умолчанию. Для типа поля "checkbox" может быть массивом значений.

Возможно указание в формате "1||2||3", и использование привязок @SELECT, @EVAL и пр.

Типы полей

ЗначениеОписание
textОднострочное текстовое поле
imageТекстовое поле с миниатюрой и кнопкой для выбора изображения
richtextТекстовый редактор TinyMCE 4
textareaМногострочное текстовое поле
dateТекстовое поле с выпадающим календарем для выбора даты
dropdownВыпадающий список
checkboxФлажки, позволяет выбрать несколько вариантов из представленных
radioПереключатели, позволяют выбрать только один вариант
groupГруппа полей, обязательно должны быть определены вложенные поля в ключе "fields"

Примеры конфигурации

Примеры конфигурации можно найти здесь. (Чтобы примеры блоков стали доступны для выбора, нужно переименовать файлы *.php.sample в *.php)

Сниппет PageBuilder

Для вывода заполненых блоков используется сниппет PageBuilder с параметрами:

Имя параметраЗначение по умолчаниюВозможные значения
docidТекущий документИдентификатор любого существующего документа, целое число
blocks*Список блоков через запятую, без пробелов. Берется имя файла конфигурации без расширения (Например, 'all_fields,groups'). Если указать '*', фильтрация по имени произведена не будет
templatesИдентификатор группы шаблонов, которые будут использоваться для вывода. Должен быть определен в конфигурации каждого выводимого блока
offset0Число пропускаемых блоков с начала вывода
limit0Число блоков для вывода, либо 0 - для вывода всех

Плагин PageBuilder

Плагин отвечает за вывод формы редактирования блоков и имеет следующие параметры:

Имя параметраЗначение по умолчаниюВозможные значения
tabNamePage BuilderНазвание вкладки на странице редактирования ресурса, в которой будет выводиться форма
addTypedropdownВид секции для добавления новых блоков, может иметь значения "dropdown", "icons", "images".

Для значения "icons" в конфигурации каждого блока должен быть определен ключ "icon", содержащий класс иконки.

Для значения "images" должен быть определен ключ "image", с адресом изображения (макс. 80х60)

placementtabРазмещение формы: tab - в отдельной вкладке, content - под содержимым ресурса

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 41.3%
  • PHP 32.3%
  • Smarty 15.9%
  • CSS 10.5%