视图内部和外部内容类型的不同模板
Different templates for a content type inside and outside a view
我为文章内容类型节点准备了两个不同的模板。我想在首页中使用其中一个模板(并将它们显示在视图中,作为未格式化的列表),并在网站的其余部分(在视图外)使用另一个模板。
我可以为所有文章定义 node--article.tpl.php
,但我不知道为某些节点定义另一个,当它们是视图的一部分时(或在首页内,我不知道不管用什么来区分两者)。
我知道这是一个老问题,但由于没有得到解答,我在搜索相同问题时发现了它,所以我想给出一个快速的解决方案。
由于 drupal 7 模板是 php,您可以快速检查是否有 "parent" 视图并通过 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
我终于学到了很多关于 Drupal 7 的知识,正确的方法是(没有任何代码,只是使用模板文件的专有名称):
- 使用
node--article.tpl.php
作为文章详细视图的模板名称。
- 使用
node--view--[name-of-the-view].tpl.php
作为相同文章在 name-of-the-view
视图中的替代视图的模板名称。无论视图内部填充什么样的节点,此模板都在一般模板之前使用。
我为文章内容类型节点准备了两个不同的模板。我想在首页中使用其中一个模板(并将它们显示在视图中,作为未格式化的列表),并在网站的其余部分(在视图外)使用另一个模板。
我可以为所有文章定义 node--article.tpl.php
,但我不知道为某些节点定义另一个,当它们是视图的一部分时(或在首页内,我不知道不管用什么来区分两者)。
我知道这是一个老问题,但由于没有得到解答,我在搜索相同问题时发现了它,所以我想给出一个快速的解决方案。
由于 drupal 7 模板是 php,您可以快速检查是否有 "parent" 视图并通过 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
我终于学到了很多关于 Drupal 7 的知识,正确的方法是(没有任何代码,只是使用模板文件的专有名称):
- 使用
node--article.tpl.php
作为文章详细视图的模板名称。 - 使用
node--view--[name-of-the-view].tpl.php
作为相同文章在name-of-the-view
视图中的替代视图的模板名称。无论视图内部填充什么样的节点,此模板都在一般模板之前使用。