是否可以按内容类型预览 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;
}
}
}
不要这么认为,是否存在基于内容类型的节点预览的任何建议。
我认为这个做法是正确的。您能否输入路线检查以查看是否生成预览建议。就像下面这样
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();
}
}