Drupal 8: Программное удаление и изменение мета-тегов

По мотивам вопроса http://dru.io/question/4777 ("Как переопределить META теги в head для Drupal 8?"), в котором автор вопроса решал задачу удаления ненужных ему мета-тегов в Drupal 8, решил написать этот небольшой сниппет. В Drupal 7 такая задача решалась в hook_html_head_alter(), которого в Drupal 8 уже нету.

Отладка Twig шаблонов

При отладке переменных в Twig шаблоне нужно учитывать некоторые особенности шаблонизатора. Во-первых, Twig не позволит вам вызывать php функции, которые вы могли использовать при отладке php шаблонов: var_dump(), print_r(), dpm() (функция модуля devel) и другие. Привычная отладка с помощью xdebug в файлах twig шаблонов тоже недоступна. Во-вторых, шаблоны Twig компилируются в php файлы, которые кешируются в файловой системе (в Drupal 8 файлы хранятся в каталоге sites/default/files/php/twig). И после установки Drupal 8 отладочные функции twig будут недоступны, также вы не увидите изменений сделанных в шаблоне до очистки кеша (кеш в Drupal 8 с помощью drush чистится командой drush cr).

Twig функции

Twig в своих шаблонах не позволяет вызывать php функции. Взамен этого шаблонизатор создает свои собственные функции. Как и в случае с Twig фильтрами, twig обладает определенным набором встроенных функций, к которым Drupal 8 добавляет свои специфичные Twig функции. Любой разработчик в случае необходимости может добавить свою собственную twig функцию. Для вызова функции в twig шаблоне ее достаточно обернуть в двойные фигурные скобки и передать в нее все необходимые аргументы:


{{ function(arg1, arg2, ...) }}

Twig фильтры

Для вывода переменной в Twig шаблоне ее достаточно заключить в двойные парные фигурные кавычки {{ var }}. Если же переменную перед выводом нужно изменить (модифицировать), то для этого предусмотрены Twig фильтры. Фильтры отделяются от переменной символом | и могут опционально принимать аргументы. К одной переменной можно применить несколько фильтров, которые будут применены последовательно в порядке их указания. Абстрактный пример применения фильтров выглядит так:


{{ var|filter1(arg1, arg2)|filter2 }}

Twig шаблонизатор имеет большой набор фильтров "на все случаи жизни", но и Drupal тоже добавляет свои специфичные фильтры.

Twig теги

В этой статье рассмотрим Twig теги - конструкции шаблонизатора, которые записываются в виде:


{% tag %} {% endtag %}

и выполняют разнообразные задачи, такие как: условные операторы, циклы, экранирование данных, создание макросов, использование наследования шаблонов, запись в переменные и многое другое.

Twig: Введение

В Drupal 8 на замену PHPTemplate пришел шаблонизатор Twig - "компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Armin Ronacher написал Twig в 2008 году для платформы блогов Chyrp. Он больше не возвращался к разработке и в большей степени занимался разработкой на Python. Синтаксис языка шаблонов Twig берёт начало от движков шаблонов Jinja и Django, первый из которых также создан Ронакером. Идею данного шаблонизатора развивает и поддерживает Fabien Potencier, ведущий разработчик и идеолог фреймворка Symfony, в котором Twig используется по умолчанию." (https://ru.wikipedia.org/wiki/Twig).

Uptolike share buttons - модуль социальных кнопок UpToLike

Суть сервиса UpToLike

UpToLike – модуль кастомизируемых социальных кнопок, которые собирают общую статистику посещаемости, а также статистику социальной активности пользователей на сайте. Всё, что можно делать с помощью UpToLike, для того, чтобы растить поток трафика на сайт из соцсетей, увеличивать социальную активность пользователей, укреплять социальные и поведенческие метрики сайта.

Entity cache и Display Cache — комплексное кеширование сущностей

В Drupal 7 одним из главных нововведений было появление новой концепции сущностей (Entity). К сущностям относятся: ноды, комментарии, пользователи, термины таксономии и другие. К сущностям также можно крепить любой набор полей. Но, наверняка, многие знают о проблемах с производительностью при загрузке объектов сущности и дальнейшем их рендеринге, отрисовке в html код для вывода на страницу. А в особенности, если выводится сразу много сущностей, да еще и если к ним прикреплено штук пару-пятнадцать полей.

Использование CKEditor в любых формах

Задача привязки CKEditor в Drupal 7 к текстовому полю любой формы решается довольно таки легко. Дело в том, что CKEditor инициализируется на элементах форм, которые имеют тип 'text_format'. Соответственно достаточно просто заменить существующий тип текстового поля textfield или textarea на text_format. При необходимости можно в свойстве поля #format указать машинное имя текстового формата.

Примеры выполнения HTTP запросов с помощью drupal_http_request()

Для выполнения HTTP запросов в Drupal API используется функция drupal_http_request(). Она позволяет выполнять GET, POST, PUT http запросы. В этом сниппете рассмотрим базовые примеры выполнения запросов с помощью этой функции. Данная функция актуальна для Drupal 6 и Drupal 7, так как в Drupal 8 запросы выполняются с помощью Guzzle.

Для начала выполним простой запрос к сервису яндекса для получения данных о погоде:

Страницы