テーマレイヤーを使用してプログラムでノードのティーザーをレンダリングする方法は?


回答:


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

ええ、私はテーマレイヤーのバイパスについて心配しています。私がそれをした場合、チップインしたい他のモジュールはできません。少なくとも、私はそれが正しいと思いますか?
レスターピーボディ

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
クライヴ

@Lesterスポットで、テーマ機能を呼び出すための2つの方法、「正常」な方法(があるtheme('theme_name', $args)と、いわゆる使って、render elementsが。hook_theme()ドキュメントはかなりよくそれを説明する、それが直感的に100%ではないのですが、あなたが知っていれば、それは本当に便利です。使用するnode_view()意志をテーマレイヤーをバイパスしないでください。大丈夫です:)
クライヴ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.