按内容类型预览内容

问题描述 投票:0回答:1

是否可以按内容类型预览 Drupal 内容?目前预览模板选项是

page--node--preview--f7fd5df8-d58d-42f8-b274-8d224eddbb5a--full.html.twig
   ▪️ page--node--preview--f7fd5df8-d58d-42f8-b274-8d224eddbb5a.html.twig
   ✅ page--node--preview.html.twig
   ▪️ page--node.html.twig
   ▪️ page.html.twig

...但是是否有预处理功能或解决方案可以允许按内容类型进行预览,例如

page--node--preview--CONTENT-TYPE.html.twig

我在另一个论坛上尝试过,但没有成功:

function THEME_theme_suggestions_page_alter(array &$suggestions, array $variables) {
  $routeMatch = \Drupal::routeMatch();
  $node_preview = $routeMatch->getParameter('node_preview');
  if ($node_preview instanceof NodeInterface) {
    $suggestions[] = 'page__node__preview__' . $node_preview->bundle();
    if ($view_mode_id = $routeMatch->getParameter('view_mode_id')) {
      $suggestions[] = 'page__node__preview__' . $node_preview->bundle() . '__' . $view_mode_id;
    }
  }
}
drupal twig drupal-10
1个回答
0
投票

不要这么认为,是否存在基于内容类型的节点预览的任何建议。

我认为这个做法是正确的。您能否输入路线检查以查看是否生成预览建议。就像下面这样

function yourtheme_theme_suggestions_page_alter(array &$suggestions, array $variables) {
      
      if (\Drupal::routeMatch()->getRouteName() === 'entity.node.preview') {
        $node = \Drupal::routeMatch()->getParameter('node_preview'); 
        $suggestions[] = 'page__node__preview__' . $node->getType();
      }
 }
© www.soinside.com 2019 - 2024. All rights reserved.