Расширение HeadLink
Расширение шаблонизации HeadLink расширяет Placeholder
HTML-элемент <link> все чаще используется для связывания различных ресурсов для вашего сайта: таблицы стилей, фиды, фавиконы, обратные ссылки и многое другое. Хелпер HeadLink предоставляет простой интерфейс для создания и агрегации этих элементов для последующего извлечения и вывода в вашем скрипте макета.
Хелпер HeadLink имеет специальные методы для добавления ссылок на таблицы стилей в свой стек:
appendStylesheet($href, $media, $conditionalStylesheet, $extras)offsetSetStylesheet($index, $href, $media, $conditionalStylesheet, $extras)prependStylesheet($href, $media, $conditionalStylesheet, $extras)setStylesheet($href, $media, $conditionalStylesheet, $extras)
Значение $media по умолчанию равно screen, но может быть любом допустимом значении медиа.
$conditionalStylesheet представляет собой строку или логическое значение FALSE, и будет использоваться во время рендеринга для определения, следует ли включать специальные комментарии, чтобы предотвратить загрузку таблицы стилей на определенных платформах.
$extras — это массив любых дополнительных значений, которые вы хотите добавить в тег.
Кроме того, хелпер HeadLink имеет специальные методы для добавления 'альтернативных' ссылок в свой стек:
appendAlternate($href, $type, $title, $extras)offsetSetAlternate($index, $href, $type, $title, $extras)prependAlternate($href, $type, $title, $extras)setAlternate($href, $type, $title, $extras)
Метод-помощник headLink() позволяет указывать все атрибуты, необходимые для элемента <link>, и также позволяет указывать размещение — заменяет ли новый элемент все остальные, добавляется ли в начало (в верхнюю часть стека) или в конец стека.
Основное использование
Вы можете указать ссылку в любое время. Обычно вы будете указывать глобальные ссылки в вашем скрипте макета, а специфические для приложения ссылки — в ваших скриптах представлений приложения. В вашем скрипте макета, в секции <head>, вы затем выведете хелпер для его отображения.
{# установка ссылок в скрипте представления: #}
{% do pimcore_head_link().appendStylesheet('/styles/basic.css') %}
{% do pimcore_head_link({rel: 'icon', href: '/img/favicon.ico'}, 'PREPEND').prependStylesheet('/styles/moz.css', 'screen', true, {id: 'my_stylesheet'}) %}
{# rendering the links: #}
{{ pimcore_head_link() }}
Поддержка HTTP/2 Push
Хелперы HeadLink и HeadScript имеют внутреннюю поддержку для компонента WebLink. Хотя вы можете напрямую вызывать $this->webLink()->preload('/path/to/file.css', ['as' => 'style']) в ваших шаблонах, хелперы HeadLink и HeadScript заботятся о добавлении ссылки с учётом кэша вместо не префиксированного пути файла. Поддержка Push в настоящее время является опциональной — чтобы сделать так, чтобы хелперы автоматически включали ссылки на предлагаемые ресурсы, либо активируйте это на глобальном уровне для хелпера, либо индивидуально для каждого элемента.
{# включить веб-ссылки для каждого элемента #}
{% do pimcore_head_link().enableWebLinks() %}
{# установить атрибуты веб-ссылки, передаваемые каждому элементу #}
{% do pimcore_head_link().setWebLinkAttributes({as: 'style'}) %}
{# включить веб-ссылки на уровне элемента #}
{# элемент будет добавлен, даже если enableWebLinks() не был вызван #}
{% do pimcore_head_link().setWebLinkAttributes({as: 'style'}) %}
{# отключить веб-ссылки на уровне элемента #}
{# элемент не будет добавлен, даже если enableWebLinks() был вызван #}
{% do pimcore_head_link().appendStylesheet('/static/css/styles.css', 'screen', false, {webLink: {as: 'style'}}) %}
{# переопределить используемый метод (по умолчанию preload()) #}
{% do pimcore_head_link().appendStylesheet('/static/css/styles.css', 'screen', false, {'webLink': {method: 'prefetch'}}) %}
Добавленные ссылки будут обрабатываться компонентом веб-ссылок и внедряться в ответ. Убедитесь, что Symfony правильно настроен (эта настройка включена по умолчанию из конфигурации ядра Pimcore):
# config.yaml
framework:
web_links:
enabled: true
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.