如何使用主题层以编程方式呈现节点的预告片?


Answers:


20

node_view() 是渲染节点的标准功能,例如

$node = node_load(1);
$view = node_view($node, 'teaser');
$rendered = drupal_render($view);

node节点模块(在中node_theme())定义了一个主题,但我从未真正看到过使用它。


1
node_theme()是不是让主题系统使用.tpl.php文件作为元素并允许预处理功能的原因?
mpdonadio

是的,我担心绕过主题层。如果我这样做了,那么其他想要加入的模块将无法实现。至少,我认为这是正确的吗?
Lester Peabody 2012年

1
在分析api.drupal.org/api/drupal/modules%21node%21node.module/function / ...时,如果您查看实现代码(显示为),则其中$build += array(确实有一个#theme属性,我猜这是告诉Drupal使用主题系统。如我错了请纠正我。我现在才开始“获取” Drupal API :)
Lester Peabody

@MPD是的,我没有很好地解释,我只是说我从未见过像theme('node', ...以前那样的电话。实际上,这甚至都行不通,因为它将自己定义为具有render element而不是variables
克莱夫(Clive

@Lester点上,有2种方式来调用主题功能,“正常”的方式(theme('theme_name', $args)通过使用所谓的render elements的hook_theme()文档解释得很好,这是不是100%直观的,但一旦你知道,这是非常有用的。使用node_view()意愿永远不要绕过主题层,所以你应该没事:)
Clive
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.