ノード内にビューを埋め込むにはどうすればよいですか?


7

Drupal 6では、次のようにビューをノードに埋め込むことができます。

$viewName = 'LatestNews';
print views_embed_view($viewName);

これはdrupal 7では機能しません。ビューをdrupal 7に埋め込む機能は何ですか?


このビューモジュールのドキュメントリンクによるとこの関数はDrupal 6および7でも同様に利用できます。ビューの$ display_idとして2番目のパラメーターを試してください。
Shoaib Nawaz、2011年

回答:



5

EVAのモジュールもノードにビューを添付することができます。


5

ノードテンプレートにビューを表示するには、次のコードを使用します。

// Load the view. 
$view = views_get_view('machine_name_of_view');
// Set the active display.
$view->set_display('your_view_display_name');
// Set any needed argument.
$view->set_arguments(array(arg(0), arg(1)));
// Execute the view.
$view->execute();
// Render the view.
print $view->render();

1
常に$ view-> pre_execute();を呼び出す必要があります。$ view-> execute();の前
Teegan 14

@Teegan-それを知らなかった、executeだけを使用しても機能するようですが、私はのpre_execute()前に使用することを検討しexecute()ます。
Cyclonecode 2014

4

何故なの:

print views_embed_view($view_machine_name, $view_display_name, $arg1, $arg2);

$ arg、$ arg2などはオプションです。

または、Viewfieldモジュールを使用して、ビューをフィールドとして埋め込みます。


VIEWFIELD !!!! ああ、神様!!!私はこの機能を何日も探して、多くのモジュールを試してみました。:Dありがとう!
DrCord 2013年

@ DrCord、Evaモジュールとviews_field_viewモジュールも参照してください。これらはほとんど同じです。
timofey.com 2013年

EVAに自分のやりたいことを実行させることができませんでした。
DrCord 2013年

1

1つの解決策は、パネライザを使用してそれぞれのノードのコンテンツをオーバーライドすることです。

たとえば、ビューをアタッチする必要のある1回限りのページがたくさんあるとします。

1)ページコンテンツタイプを使用するか、特にパネル化される新しいコンテンツタイプを作成します。

2)そのコンテンツタイプに対してパネライザを有効にします。ページごとに調整される複数のパネライザディスプレイをセットアップできるように、「レコードごとのディスプレイ選択を許可する」に設定してください。(各パネライザディスプレイには、独自の一連のビューをアタッチできます)

3)ここから、ビューを作成し(コンテンツペインを使用したい)、選択したパネライザコンテンツ表示に追加します。

これにより、独自のフィールドセットを実際に必要としないが、他のエンティティの参照(フィールドとして)またはビューの参照に使用される可能性がある単一のコンテンツタイプを再利用できます。

段落モジュールをスローすると、スイスアーミーナイフのコンテンツタイプがあります。そういえば、それはこの目的に使用されるカスタムコンテンツタイプの完全な名前になります...うーん...


0

最初のパラメーターはビュー名、2番目の表示名であり、その後にコンテキストフィルターパラメーターを渡すことができることを述べましょう。

そのため、「$ node-nid」の3番目のパラメーターは、ビューに依存します...最初のコンテキストフィルターに何が期待されるか-IDはノードIDである必要はありません。もちろん、1つのパラメーターに限定されるわけではありません。ビューにあるのと同じ数を渡します。ビューにコンテキストフィルターがない場合は、何も渡しません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.