日期:2017-03-03 阅读:5373
dmandwp系统 - wordpress系统和DM系统区块建站>>
drupal8有查看twig文件的机制,可看这节课。
关于覆写,drupal有自带的机制,如果没有的话,就需要自定义了,就是本节课的内容。
对于页面来说,只能覆盖这些:
如果要覆写某一个内容类型,就做不到。但我们可以这样:
/** * Implements hook_theme_suggestions_HOOK_alter(). */ function THEME_NAME_theme_suggestions_page_alter(array &$suggestions, array $variables) { if ($node = \Drupal::routeMatch()->getParameter('node')) { $content_type = $node->bundle(); $suggestions[] = 'page__'.$content_type; } }
清下缓存后,就可以看到:
来自: https://www.drupal.org/node/2521876
----------------------------
如果要覆写views相关的,可以这样:
Views exposed filter element from a <select> list into a series of <checkboxes>
在views的exposed filter里,要把select改成checkboxes。
那我们要找到 select.html.twig,并覆写它。
因为是views,那应该是这样的: select--VIEW_ID_HERE.html.twig
问题就是要跟踪到这个views_id
首先要开启 Devel and Kint()功能
然后通过这样
function silo_theme_suggestions_select_alter(&$suggestions, &$vars) {
$request = \Drupal::routeMatch();
kint($request);
}
最后定位 $request = \Drupal::routeMatch()->getRouteObject()->getDefault('view_id');
即:
function silo_theme_suggestions_select_alter(&$suggestions, &$vars) {
$request = \Drupal::routeMatch()->getRouteObject()->getDefault('view_id');
kint($request);
}
发现,这个views_id是 example_select
最后这样即可以覆写了:
function silo_theme_suggestions_select_alter(&$suggestions, &$vars, $hook) {
$request = \Drupal::routeMatch()->getRouteObject()->getDefault('view_id');
if (!empty($request)) {
$suggestions[] = 'select__' . $request;
}
}
如果模板里有select--example-select.html.twig这个文件,这样就可以改它了。
----------------
来自
https://www.chapterthree.com/blog/how-to-create-custom-theme-suggestions-drupal-8