Drupal 7 - как отключить работу модуля Context в определенной теме оформления

Категория: Drupal
Дата публикации: 10 марта, 2018 - 17:58
Последнее изменение: 10 марта, 2018 - 17:58

Модуль Context - шикарный модуль, который позволяет гибко управлять блоками (выводить их в нужном порядке на нужных страницах, повторно использовать одни и теже блоки для разных страниц и т.д.) С ним удобно строить сложные страницы для лендинго-подобных сайтов.

Из коробки модуль влияет на все темы оформления сайта. То есть при переключении темы на сайте, блоки так же будут выводиться согласно правилам, указанным в Context'те. Сложно придумать случай, когда это было бы оправданно - в других темах нет стилей, описывающих внешний вид блоков, страниц, нет никаких js скриптов, без которых блоки могут не работать...
Для сайтов, которые настраивают у себя amp-страницы для гугла так же придется отключать работу правил Context. Вот как это можно сделать при помощи своего модуля:

function CUSTOMMODULE_context_load_alter(&$context)
{
    global $theme;
    if($theme == 'themename'){
        $context->conditions = [];
        $context->reactions = [];
    }   
}

При желании условие if($theme == 'themename'){ легко переписать так, чтобы Context работал ТОЛЬКО для одной темы, не затрагивая остальные.

Добавить комментарий