0

我为文章内容类型节点准备了两个不同的模板。我想使用首页中的一个模板(并将它们显示在视图中,作为未格式化的列表),并在站点的其余部分(视图之外)使用另一个模板。

我可以node--article.tpl.php为所有文章定义,但是当某些节点是视图的一部分时(或在首页内,我不关心用什么来区分两者),我不知道为某些节点定义另一个。

4

2 回答 2

0

我知道这是一个老问题,但由于它没有得到解答,我在搜索同样的问题时发现了它,我想给出一个快速的解决方案。

由于 drupal 7 模板是 php,因此您可以快速而肮脏地检查是否存在“父”视图并通过 if 条件分隔两个模板。

<?php
function is_current_node_inside_view() {
  return (isset($view) && is_object($view)) ? true : false;
}

if ( is_current_node_inside_view() ) {
  ?>
    <!-- unformatted list template goes here -->
  <?php
} else {
  ?>
    <!-- second template goes here -->
  <?php
}
?>

我认为 Drupal 的最佳实践是使用视图模式https://drupal.stackexchange.com/questions/37446/how-to-add-additional-displayview-mode-for-node

于 2018-09-14T10:51:14.437 回答
0

我终于学到了更多关于 Drupal 7 的知识,正确的做法是(无需任何代码,只需为模板文件使用正确的名称):

  • 用作node--article.tpl.php文章详细视图的模板名称。
  • node--view--[name-of-the-view].tpl.php当它们在视图中时,用作相同文章的替代视图的模板名称name-of-the-view。不管视图内部膨胀了什么样的节点,这个模板都是先于通用的。
于 2018-11-07T23:10:53.037 回答