drupal主题开发

drupal8覆写主题(内容类型)- Custom Theme Suggestions in Drupal 8

日期:2017-03-03 阅读:5373

dmandwp系统 - wordpress系统和DM系统区块建站>>


进入网易云课堂播放
    |    更多视频教程>

drupal8有查看twig文件的机制,可看这节课。
关于覆写,drupal有自带的机制,如果没有的话,就需要自定义了,就是本节课的内容。

对于页面来说,只能覆盖这些:

如何覆写views,可以看这里>

如果要覆写某一个内容类型,就做不到。但我们可以这样:

/**
 * 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

<<点击返回

Drupal8主题开发视频教程 (进入专题>)