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

Шаблоны Pimcore

Введение

Шаблоны в Pimcore в основном располагаются по следующему пути: templates/[controller]/[action].html.twig, однако также доступны и пути в стиле Symfony (как для контроллера, так и для действия без их суффиксов).

Pimcore использует движок шаблонов Twig, и вы можете использовать Twig, как описано в документации:

Вы можете просто использовать атрибуты или напрямую рендерить представление с помощью 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_document
  • pimcore_document_by_path
  • pimcore_site
  • pimcore_asset
  • pimcore_asset_by_path
  • pimcore_object
  • pimcore_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_link
  • pimcore_head_meta
  • pimcore_head_script
  • pimcore_head_style
  • pimcore_head_title
  • pimcore_inline_script
  • pimcore_placeholder
  • pimcore_url
  • pimcore_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), переводы, кэш, глоссарий и т. д.
  • Миниатюры - узнайте, как включить изображения в шаблоны с использованием миниатюр.

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