Шаблоны Pimcore
Введение
Шаблоны в Pimcore в основном располагаются по следующему пути: templates/[controller]/[action].html.twig, однако также доступны и пути в стиле Symfony (как для контроллера, так и для действия без их суффиксов).
Pimcore использует движок шаблонов Twig, и вы можете использовать Twig, как описано в документации:
- Документация Twig
- Документация по шаблонам Symfony
- Ознакомьтесь также с нашим Demo в качестве отправной точки.
Вы можете просто использовать атрибуты или напрямую рендерить представление с помощью Twig следующим образом:
<?php
namespace App\Controller;
use Pimcore\Controller\FrontendController;
use Symfony\Bridge\Twig\Attribute\Template;
use Symfony\Component\HttpFoundation\Response;
class MyController extends FrontendController
{
/**
* Указание представления с помощью атрибута
*/
#[Template('content/default.html.twig', vars: ['param1' => 'value1'])]
public function attributeAction(): void
{
}
public function directRenderAction(): Response
{
return $this->render('my/custom/action.html.twig', ['param1' => 'value1']);
}
}
Конечно, вы также можете установить пользовательский шаблон для документов Pimcore в административном интерфейсе, и этот шаблон будет использоваться для автоматического рендеринга, когда контроллер не возвращает ответ.
Справочник по Twig
Чтобы сделать функции Pimcore доступными в шаблонах Twig, Pimcore реализует набор расширений. Пожалуйста, посмотрите наше демо в качестве справки, как использовать Pimcore с Twig.
Вы можете ознакомиться с реализациями для получения более подробной информации. Обратите внимание, что все расширения Twig в Pimcore имеют префикс pimcore для предотвращения конфликтов имен.
Редактируемые элементы Pimcore (Editables)
<h1>{{ pimcore_input('headline') }}</h1>
{{ pimcore_wysiwyg('content') }}
{{ pimcore_select('type', { reload: true, store: [["video","video"], ["image","image"]] }) }}
Обратите внимание, что если вы сохраните редактируемый элемент в переменной, вам нужно будет обработать его через фильтр raw при выводе, если он генерирует HTML, иначе HTML будет экранирован Twig.
{% set content = pimcore_wysiwyg('content') %}
{# this will be escaped HTML #}
{{ content }}
{# HTML will be rendered #}
{{ content|raw }}
Функции
Загрузка объектов
Следующие функции могут быть использованы для загрузки элементов Pimcore из шаблона:
pimcore_documentpimcore_document_by_pathpimcore_sitepimcore_assetpimcore_asset_by_pathpimcore_objectpimcore_object_by_path
Примеры использования:
{% set myObject = pimcore_object(123) %}
{{ myObject.getTitle() }}
или
{% set myObject = pimcore_object_by_path("/path/to/my/object") %}
{{ myObject.title }}
Для документов Pimcore также предоставляется функция для обработки жестких ссылок через метод pimcore_document_wrap_hardlink.
Подробнее PimcoreObjectExtension.
Подзапросы
{# подключить другой документ #}
{{ pimcore_inc('/snippets/foo') }}
Смотрите подробнее в разделе Расширения шаблонов.
Расширения шаблонов
Следующие расширения могут быть использованы непосредственно в Twig. См. Расширения шаблонов для подробного описания каждого хелпера:
Функции:
pimcore_head_linkpimcore_head_metapimcore_head_scriptpimcore_head_stylepimcore_head_titlepimcore_inline_scriptpimcore_placeholderpimcore_urlpimcore_cache(устарело)
Теги:
pimcorecache
Блочные элементы
Поскольку Twig не предоставляет структуры управления циклами while, необходимых для итерации редактируемого блока, мы ввели функцию под названием pimcore_iterate_block, чтобы позволить проходить через каждый элемент блока:
{% pimcoreblock "contentblock" %}
<h2>{{ pimcore_input("subline") }}</h2>
{{ pimcore_wysiwyg("content") }}
{% endpimcoreblock %}
Тесты
instanceof
Используется для проверки, является ли объект экземпляром заданного класса.
{% if image is instanceof('\\Pimcore\\Model\\Asset\\Image') %}
{# ... #}
{% endif %}
Особенности Pimcore
Pimcore предоставляет несколько специальных функций, которые делают шаблоны еще более эффективными. Эти функции рассматриваются в следующих подразделах:
- Наследование шаблонов и макеты - Используйте макеты и наследование шаблонов для определения всего, что повторяется на странице.
- Расширения шаблонов - используйте расширения twig для таких вещей, как включения (include), переводы, кэш, глоссарий и т. д.
- Миниатюры - узнайте, как включить изображения в шаблоны с использованием миниатюр.
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.