Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Создание расширенных настроек темы

05/05/2020, by maria

В разделе администрирования Drupal каждая тема имеет свою собственную страницу настроек по адресу admin/Appeance/Settings/themeName. Эта страница имеет форму со стандартными настройками, такими как «Настройки изображения логотипа» и «Настройки значка ярлыка».

В Drupal 8 темы могут изменять всю форму настроек темы, добавляя функцию PHP либо в файл THEMENAME.theme, либо в файл theme-settings.php. В одном из этих файлов тема должна использовать функцию подключения THEMENAME_form_system_theme_settings_alter(&$form, $form_state). См. «API форм в Drupal 8» и полный список элементов Form и render, а также документацию hook_form_FORM_ID_alter() docs, чтобы узнать о полной гибкости API форм.

Вот пример, если у вас есть тема «foo» и вы хотите добавить текстовое поле со значением по умолчанию «blue bikeshed». Добавьте следующее в файл foo/foo.theme или в файл foo/theme-settings.php:

function foo_form_system_theme_settings_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id = NULL) {
  // Work-around for a core bug affecting admin themes. See issue #943212.
  if (isset($form_id)) {
    return;
  }

  $form['foo_example'] = array(
    '#type'          => 'textfield',
    '#title'         => t('Widget'),
    '#default_value' => theme_get_setting('foo_example'),
    '#description'   => t("Place this text in the widget spot on your site."),
  );
}

Чтобы установить значение по умолчанию для любого добавляемого элемента формы, вам нужно добавить файл config/install/THEME.settings.yml простой строкой: SETTING_NAME: DEFAULT_VALUE. Для нашей темы foo вам нужно отредактировать файл foo/config/install/foo.settings.yml и добавить следующую строку:

foo_example: blue bikeshed

В любом из PHP-файлов вашей темы вы можете получить значение, заданное пользователем, вызвав:

$foo_example = theme_get_setting('foo_example');

Обратите внимание, что авторы тем могут создавать сложные динамические формы, используя расширенный API форм (автозаполнение, складные наборы полей).

Получение значений настроек в файлах вашей темы

Чтобы использовать параметр в файле Twig, вам необходимо добавить новую переменную в файл Twig, добавив ее с помощью функции предварительной обработки в файле THEMENAME.theme

$variables['varname'] = theme_get_setting('varname')

Например, чтобы добавить наш параметр foo_example в файл node.html.twig, добавьте его в файл foo.theme:

<?php
function foo_preprocess_node(&$variables) {
  $variables['foo_example'] = theme_get_setting('foo_example');
}

Затем в файле node.html.twig вы можете получить доступ к foo_example, как к любой обычной переменной Twig:

{{foo_example}}

Больше информации

Смотрите запись изменений для Drupal 8: https://www.drupal.org/node/2382645

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.