Вставка блока(например, AdSense) в статью. Drupal 8.

Есть много способов осуществить вставку блока в любое место статьи(или страницы). Такой трюк может понадобиться, например, при добавлении рекламного блока AdSense в содержимое статьи. Наиболее простым способом сделать это для меня стал модуль Insert Block. Далее я опишу его настройку и патчинг(да, без патчинга для drupal 8 работать не будет). И затем, еще некоторые способы осуществить вставку рекламного блока в содержимое статьи.

1. Insert Block.

Качаем по вышеприведенной ссылку и устанавливаем. Я, для установки, воспользовался Composer :

composer require drupal/insert_block

Теперь нужно пропатчить модуль, иначе фильтр модуля не появится в настройках формата.

Возможно, когда вы будете использовать модуль исправления уже будут добавлены в сам модуль и патчинг будет не нужен. Поэтому проверяйте свежесть свежесть вашей версии модуля. В моем случае выпуск dev версии для drupal 8  от 2014-May-06 .

Для этого качаем патч отсюда. А по этой ссылке вы можете найти обсуждение данной проблемы. Для патчинга нужно выполнить следующую команду из корня этого модуля:

git apply your-patch.patch

Если у вас возникают трудности в этом вопросе вот краткая инструкция.

Настройка и использование модуля.

Для получения более подробной информации читайте файл README.txt  лежащий в корне модуля. А краткая инструкция такая:

Первым делом включите фильтр модуля. Для этого по адресу /admin/config/content/formats  выберете тот тип форматирования , в котором вы будете осуществлять вставку блока в статью( Обычно это "Полный HTML"). Кликните кнопку "настроить". Далее поставьте "галочку" напротив "insert block" как показано на следующем рисунке:

настройка insert block

Теперь создайте блок, который вы будете вставлять в статью( общие сведения можно взять отсюда). Запомните id блока.

В инструкции к модулю используется численный(порядковый) id блока для вставки в статью, такого формата [block:number], то есть если блок у вас имеет номер 5, то вставлять в текст статьи нужно следующее - [block:5]. У меня такой вариант не работал. А заработало только если я вставлял буквенный id блока, вот так [block:myblock].

Теперь, при создании новой статьи, вставьте такой код в нужное вам место статьи:

[block:id-block]

, где id-block либо численное значение id блока или , буквенное.

Также не забывайте создавать статью в том виде форматирования в который вы добавили фильтр "insert block" , в моем случае это "Полный HTML".

Также , насколько я понял из  документации, существует возможность настройки видимости для различных ролей данного блока. Но с этим я пока не разобрался.

 

2. Вставка рекламного блока в схему блоков.

Здесь все просто -  в любой теме можно вставить блок в область контент, на странице схемы блоков(/admin/structure/block)

вставка блока в контент

Этот метод весьма топорный, так как не позволяет вставить блок в саму статью, а только в конец(как на скриншоте) или в начало статьи(если "баннер в статью" поместить раньше "Содержимое статьи"). Причем при вставке в конец результат окажется малоподходящим, так как блок будет ниже тегов и комментариев, то есть совсем вне зоны видимости.

 

3. Другие способы(не знаю рабочего решения).

На сколько я понимаю существуют и другие способы решения данной задачи. Начиная, от совсем уж трудоемкого написания собственного модуля, заканчивая модулем Display Suite и/или вставкой поля в нужный вам тип материла.