(статья периодически обновляется)
Кеширование
Отключение кеширования на время разработки - https://www.drupal.org/node/1903374 (при добавлении шаблонов в тему кеш все равно нужно сбрасывать, очистка кеша иногда занимает до минуты, поэтому сразу добавляйте по несколько шаблонов).
Темизация
Хорошее руководство по темизации Drupal 8 - http://sqndr.github.io/d8-theming-guide/index.html.
Подключение CSS/JS в теме - https://www.drupal.org/theme-guide/8/assets.
Добавление регионов - https://www.drupal.org/theme-guide/8/adding-regions.
Хуки темы, preprocess-функции в восьмерке добавляем в файл THEME.theme (аналог семерочного template.php).
Создание шаблона страницы для определенного типа материала
Добавление плейсхолдера в поле ввода формы поиска
* Implements hook_form_alter()
*/
function THEME_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
if ('search_block_form' == $form_id) {
$form['keys']['#attributes']['placeholder'][] = t('Search');
}
}
Добавление заголовка страницы в хлебные крошки
$request = \Drupal::request();
$route_match = \Drupal::routeMatch();
$page_title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
$variables['breadcrumb'][] = array(
'text' => $page_title
);
}
Добавление названия сайта в переменную для шаблона страницы
$variables['site_name'] = \Drupal::config('system.site')->get('name');
}
Создание шаблона для кастомного типа блока
if (isset($variables['elements']['content']['#block_content'])) {
array_splice($suggestions, 1, 0, 'block__bundle__' . $variables['elements']['content']['#block_content']->bundle());
}
}
Пример создания опций темы
// Work-around for a core bug affecting admin themes. See issue #943212.
if (isset($form_id)) {
return;
}
$form['custom_setting'] = array(
'#type' => 'textfield',
'#title' => t('Custom setting'),
'#default_value' => theme_get_setting('custom_setting'),
);
}
Twig
Краткая справка по Twig - https://github.com/vito/chyrp/wiki/Twig-Reference.
Путь к папке с темой - {{ base_path ~ directory }}
.