我希望有两个不同的节点预告片显示,具体取决于它在网站上的位置。
单独更改块的.tpl是不够的,因为我需要显示一个单独的图像缓存图像。
是否有方法可以添加其他显示类型?或者更改节点显示类型接收的字段(即:显示图像缓存图像)?
答案 0 :(得分:5)
在Drupal 7中,可以通过实现hook_entity_info_alter()
:
/**
* Implements hook_entity_info_alter().
*/
function MYMODULE_entity_info_alter(&$entity_info) {
$entity_info['node']['view modes']['another_teaser'] = array(
'label' => t('Another teaser'),
'custom settings' => TRUE,
);
}
这会将一个名为“Another teaser”的新视图模式添加到您的视图模式列表中,您可以像任何其他视图模式(如默认或 Teaser )一样进行配置
See: Drupal 7 custom node view modes (Juha Niemi, Mearra)
或者您可以使用模块Display Suite,但最初可能会有点压倒性。
答案 1 :(得分:3)
正如其他人所指出的那样,你有点不清楚你在做什么,但听起来你使用节点视图来创建一个块,然后使用块模板来标记块的内容。这种块的关键内容将由节点模板生成。默认节点模板determines its markup based on a $teaser variable设置为TRUE或FALSE。 $ teaser的值基于视图中的完整节点/预告片区别。这显然是一个布尔变量,所以没有第三个选项。所以你的具体问题的答案是否定的,你不能这样做。
也就是说,可以 根据template_preprocess_node或$等上下文指标在arg()中引入您自己的变量,从而实现3个(或更多)不同显示的目标view-> name,然后在您自己的节点模板中使用这些变量(或者更可能是node type template)来控制输出标记。然后,您可以通过调用imagecache主题函数来应用不同的图像缓存预设,例如:
<?php print theme('imagecache', 'thumbnail', $node->field_image[0]['filepath']); ?>
如果这对你来说是全新的,那就要学到很多东西,希望不要过于苛刻。
答案 2 :(得分:2)
这可能不是最优雅的解决方案,但我认为您可以通过结合使用CCK和Views来实现这一目标。
如果您有复杂的格式需求,可以try this trick并编写特定的.tpl.php文件来呈现视图。
答案 3 :(得分:0)
这些称为构建模式。您必须实现hook_content_build_modes,它将由CCK调用。有关示例,请参见CCK。