Перейти к основному содержимому

Areablock

Общая информация

Редактируемый элемент Areablock — это набор инструментов для создания контента в документах, предлагаемый Pimcore.

Admin panel preview 1

Admin panel preview 2

Интеграция Areablock в шаблон

Как и другие редактируемые элементы документов, Areablock можно интегрировать в любой шаблон представления документа следующим образом:

{{ pimcore_areablock("myAreablock") }}  

Расширенное использование с разрешенными областями:

{{ pimcore_areablock("myAreablock", {  
"allowed": ["iframe","googletagcloud","spacer","rssreader"],
"group": {
"First Group": ["iframe", "spacer"],
"Second Group": ["rssreader"]
},
"globalParams": {
"myGlobalParam": "Global param value"
},
"params": {
"iframe": {
"parameter1": "value1",
"parameter2": "value2"
},
"googletagcloud": {
"param1": "value1"
}
}
})
}}

Доступ к параметрам из файла Brick

Используйте значение параметра с именем "param1" для этого Brick:

{{ param1 }}  

Сортировка элементов в меню
{{ pimcore_areablock("content", {  
"allowed": ["image","video","wysiwyg"],
"sorting": ["wysiwyg","video","image"],
}) }}

Вы можете увидеть эффект ниже:

Admin panel preview - sroting areablocks

Конфигурация

ИмяТипОписание
allowedarrayМассив идентификаторов областей, разрешенных для этого тега. Порядок элементов в массиве также используется как сортировка по умолчанию, но, конечно, вы можете комбинировать эту конфигурацию с sorting
sortingarrayМассив идентификаторов областей в порядке, в котором вы хотите их отобразить в меню
paramsarrayОпциональный параметр, который также может содержать дополнительные настройки, специфичные для элемента Brick
globalParamsarrayТо же самое, что и params, но передается всем блокам независимо от типа
grouparrayМассив с конфигурацией групп (см. пример выше)
manualboolПринудительное включение ручного режима, который позволяет полную свободу реализации для Areablocks, например, использовать реальные элементы <table>. Пример см. ниже
reloadboolУстановите значение true, чтобы принудительно обновить в режиме редактирования после изменения порядка элементов (по умолчанию: false)
limitintОграничить количество элементов
limitsarrayМассив идентификаторов областей с количеством для ограничения определенного количества элементов, например: {"iframe": 1, "teasers": 2}
areablock_toolbararrayМассив с опциями, которые позволяют настраивать панель инструментов. Возможные опции: width, buttonWidth и buttonMaxCharacters
controlsAlignstringПоложение панели управления кнопками. Опции: top, right и left
controlsTriggerstringОпции: hover(по умолчанию) и fixed
classstringCSS-класс, который добавляется к окружающему контейнеру этого элемента в режиме редактирования
Пример
{{ pimcore_areablock("myArea") }}  

Методы

ИмяВозвращаетОписание
getCount()intвозвращает общее количество блоков
getCurrent()intвозвращает текущее количество блоков (полезно с Area Bricks)
getCurrentIndex()intполучает текущий индекс (индекс отличается от позиции, так как блок можно перемещать)
getElement()arrayполучает элемент из areabrick
renderIndex()-рендерит только один конкретный блок внутри Areablock

Как создать Brick для Areablock

О создании Brick можно прочитать в разделе Bricks.

Ограничение определенных Brick для Areablock

Вы можете ограничить определенные Brick для Areablock, используя конфигурацию limits.

Пример
{{ pimcore_areablock("myAreablock", {  
"allowed": ["iframe","teasers","wysiwyg"],
"limits": {
"iframe": 1,
"teasers": 2
},
"limit": 5
})
}}

Использование ручного режима

Ручной режим предоставляет вам возможность использовать Areablocks с пользовательским HTML, что, например, полезно при использовании таблиц:

{% set areaBlock = pimcore_areablock("myArea", {"manual":true}) %}  

{% do areaBlock.start() %}
<table>
{% for i in areaBlock.iterator %}
{% set info = areaBlock.buildInfoObject() %}
{% do areaBlock.blockConstruct() %}
<tr>
<td>
{% set templateParams = areaBlock.blockStart(info) %}
{% do areaBlock.content(info, templateParams) %}
{% do areaBlock.blockEnd() %}
</td>
</tr>
{% do areaBlock.blockDestruct() %}
{% endfor %}
</table>
{% do areaBlock.end() %}

Доступ к данным внутри элемента Areablock

См. Block для примера, как получать элементы из редактируемых элементов блоков и Areablock.


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.