Контентные блоки используются для избежания дублирования повторяющихся блоков или элементов в контенте или представлениях сайта.
Аналогичный функционал в MODX называется чанками(chunks), а в WordPress - шорткодами(shortcodes).
Для определения контентного блока - создайте соответствующую запись в разделе “Контентные блоки” панели администрирования:
Контентный блок может принимать дополнительные параметры, например:
Это простой блок, который сейчас выведет отформатированный параметр
[[+paramName:format,format_attribute1,'format_attribute_n']].
А здесь мы просто выведем значение параметра как есть [[+anotherParam]].
Здесь:
В контенте вставляете оператор вызова блока, который имеет следующий формат:
[[$contentBlockKey paramName='paramValue' anotherParam=3.14]]
Здесь:
Допускается в контентном блоке вызывать другой контентный блок. Его вызов должен осуществляться точно таким же образом, как и вызов в контенте страницы. При этом будут обработаны все переданные параметры и другие контентные блоки, если они содержатся во вложенных контентных блоках.
Недопустимо вызывать контентный блок внутри себя, а так же вызывать родительский контентный блок внутри вызываемого дочернего!
Хорошим тоном считается вынесение всей текстовой информации, включая статичные блоки верстки, из шаблонов в контентные блоки. Это позволит контент-менеджерам сайта гораздо проще и нагляднее редактировать эту информацию. Для вывода контентных блоков в шаблонах необходимо вызвать специальный хелпер-метод:
<?= \app\modules\core\helpers\ContentBlockHelper::getChunk($key, $params = [], yii\base\Model $model = null) ?>
Он принимает в качестве параметров 3 значения:
Обязательным является только первый параметр - ключ чанка. В этом случае, минимальный вызов метода будет выглядеть так:
<?= \app\modules\core\helpers\ContentBlockHelper::getChunk('chunkKey') ?>
Если в вызываемом контентном блоке имеются плейсхолдеры, которые необходимо заменить реальными значениями, то необходимо вторым параметром передать ассоциативный массив вида:
[
'paramName' => 'string param value',
'param2Name' => 3.14,
]
В качетсве третьего необязательного параметра в метод передается модель (Product, Category, Page), в чьем view файле вызывается хелпер-метод. Она будет использована для кеширования результатов рендера чанка. Модель имеет смысл передавать только если обрабатывается чанк с параметрами, причем значения параметров зависят от конкретной страницы, в противном случае этот параметр можно опустить. Полный вызов метода выглядит следующим образом:
<?= \app\modules\core\helpers\ContentBlockHelper::getChunk(
'chunkKey',
['paramName' => 'string param value','param2Name' => 3.14,],
$model
) ?>
Если в вызываемом чанке вызываются другие чанки, то они также будут отрендерены.
По аналогии с контентными блоками в контенте можно вызывать созданные в административной части сайта формы. Минимальный вызов выгладит так:
[[%3]]
где:
[[%3#form-id]]
Вызовет форму, установив в качестве id - form-id Вызов вида:
[[%3#form-id;isModal]]
Отрендерит модальную форму с идентификатором form-id
В контенте, анонсе (страниц, категорий, продуктов, динамического контента) и внутри чанков можно получать ссылки на страницы, продукты и категории
Работает так: [[~page#2]] [[~product#2]] [[~category#1]]
Или так:
Чанк на странице [[$test page=2]]
Код чанка:
<a href="[[~page#[[+page]]]]">ссылка на страницу с параметром</a>
<a href="[[~category#3]]">Категория</a>
<a href="[[~product#20]]">продукт</a>
По аналогии с формами в контенте можно вывести карточку(ки) товара по идентификатору или по артикулу. Вывести карточку товара можно следующими способами:
[[*product sku='артикул']]
- выводит карточку по артикулу. Артикул должен быть уникальным.
[[*product#id]]
- выводит карточку по идентификатору.
Помимо одной карточки товара, можно вывести так же список карточек:
[[*productList список параметров]]
Список доступных параметров:
categoryId='id'
- выбирает карточки из категории по ее идентификаторуlimit='число'
- ограничивает выборкуproperty='key:value'
- выбирает карточки с установленными значениями свойств, где key
- ключ свойства, а value
- его значение.Также из админки можно настроить представление по умолчанию для вывода карточки и списка карточек. Для этого прейдите в Настройки админки - пункт Конфигурации - вкладка Магазин.
Для выбора представлений в конкретном случае передайте в вызов параметр itemView='@app/path/to/item/view'
для карточки и listView='@app/path/to/list/view'
для списка карточек.