Временами очень хочется колется поменять что-нибудь на "заводской" теме Drupal. Вроде все устраивает, а оказывается, что все-таки не все.
Тут подтянуть, тут уменьшить в размере, тут удалить, тут добавить... а здесь вообще css класс изменить. Хочешь не хочешь, а приходится погружаться в код и сообразно велению вебмастерской души там все реформировать.
И часто нам, друпалерам нужно удалить какой-нибудь регион темы, например, сайдбар.
У меня в курсе "Сайт на Drupal 8" есть парочку видео-уроков по теме добавления регионов и сайдбаров на сайт. Приложу ссылки внизу статьи.
Сейчас же мы рассмотрим несколько способов удаления региона сайдбар.
Первый способ: Выключение через файл темы
В файле темы .theme в папке темы есть раздел посвященный проверки регионов на наличие в данный момент на странице.
Например:
// Add information about the number of sidebars.
if (!empty($variables['page']['sidebar_first']) && !empty($variables['page']['sidebar_second']) && !empty($variables['page']['sidebar_widget'])) {
$variables['sidebarwidget'] = 'col-md-2';
$variables['contentlayout'] = 'col-md-5';
$variables['sidebarfirst'] = 'col-md-2';
$variables['sidebarsecond'] = 'col-md-3';
}
В данном отрезке файла темы drupal поочередно проверяет все комбинации из регионов контента и сайдбаров и выводит тот вариант, в котором наличиствуют все указанные регионы. Можно настроить отображение переменной, например, $variables['sidebarfirst']. Выбрать условие и убрать sidebar из отображения. То есть тогда он не будет учитываться при проверке вывода и фактически отображаться на странице не будет.
Стоит заметить, что этот способ не удаляет сам сайдбар из темы. Он по-прежнему будет присутствовать в файлах шаблонах типа page.html.twig и его можно будет вывести посредством того же twig, если будет необходимость. Но естественно, он выведется, как обособленный регион, так как проверку мы отключаем кодом выше.
Второй способ: Выключение из файла шаблона
В качестве второго способа удаления сайдбара можно настроить проверку наличия содержимого в регионе сайдбара в файле page.html.twig.
Например:
{% if page.sidebar is not empty %}
{{ page.sidebar }}
{% else %}
{{ page.content }}
{% endif %}
То есть здесь мы выполним проверку: если в регионе сайдбара есть содержимое, то переменная региона будет выведена, а значит он будет отображен. Если же содержимого нет, то drupal исключит его из отображения на странице и покажет регион контента на сайте без него.
Третий способ: Удаление из файла шаблона
Ну и, конечно же, не могу обойти без внимания мой любимый способ - удаление содержимого региона на корню. Смысл прост - заходит в файл-шаблон page.html.twig или другой переопределенный шаблон и удаляем от туда "руками" строки кода сайдбара.
Обычно они начинаются чем-то вроде:
<!--- Start Left SideBar -->
{% if page.sidebar_first %}
<div class="sidebar" >
<div class = {{sidebarfirst}} >
{{ page.sidebar_first }}
</div>
</div>
{% endif %}
<!---End Left SideBar -->
Это все, что качается удаления сайдбара. Надеюсь, материал был Вам полезен. Если так, то не забудьте поделиться им в своих соцсетях.
Приложения к статье: