Drupal 7のノードにビューブロックを挿入する


6

[Drupal 7]

ビューで作成した「handy_tips-block_1」というブロックがあります。

次に、ノードのbodyフィールドに挿入します。

どうすればよいですか?

私はここにガイドを見つけました、それは次のコードを使うことを示唆しています:

<?php
print $block = module_invoke('views', 'block_view', 'handy_tips-block_1');
print render($block['content']['#content']);
?>

ただし、出力されるのは「配列」という言葉だけです。(私はbodyフィールドのPHP入力フィルターを有効にしています)。

注:投稿されたコードでは、「ビュー」を「ブロック」などのさまざまなアイテムに置き換えてみました。IDとして「handy_tips-block_1」を使用しました。これは、ブロック管理ページの構成リンクに表示されるためです。

回答:


15

確かに配列なので、出力は「配列」です。次に、配列を印刷して、使用できるフィールドを確認するとします。

print_r($block);
print_r($block['content']['#content']);
print_r(render($block['content']['#content']);

ビューの表示については、テンプレート内で次のコード行を使用して、ビューを呼び出すことができます。

echo views_embed_view('view-name', $display_id = 'display-name');

たとえば、私のnode.tl.php内に、というビューを挿入し、test viewマシン名block_testで彼のブロック表示を使用したい場合は、次のように使用できます。

echo views_embed_view('test_view', $display_id = 'block_test');

(ビューのマシン名とディスプレイのマシン名を使用することを忘れないでください)。

この情報がお役に立てば幸いです。


上記の方法を使用した場合、コンテキストリンクが表示されませんか?
グル、

print views_embed_view('my_view_name', 'block', 'student', 'one');のような私の議論student/one。解決策をありがとう。コンテキストフィルターで両方(学生、1人)を使用しました。
カリダサン2016

8

テンプレートファイルにビューを埋め込む私のお気に入りの方法は、views_embed_view()関数を使用することです。

使い方はとても簡単です。

<?php print views_embed_view('view-name', 'display-name','arguments'); ?>
  • 'display-name'引数は、ビュー内のディスプレイのタイプに対応し、それらのタイプの数は複数あります。したがって、ビューで2つのブロックを作成した場合、「display-name」引数で「block-1」または「block-2」を使用して、どちらか一方を呼び出すことができます。
  • 3番目の引数 'arguments'はオプションであり、ビューが依存するコンテキストフィルター引数を渡すために使用できます。

本当に素晴らしいソリューションです。魅力のように働いた!
hockey2112 2013年

誰かがviews_embed_view()でブロックタイトルをレンダリングする方法を理解しましたか?
jay-ess 2013年

5

私はどちらかの使用をお勧めしますエンティティは、添付ファイルビューには、フィールド、またはだかのように、あなたのモジュールにビューを挿入することを可能にするモジュール、ディスプレイのスイート、あなたのノードがレイアウトをカスタマイズし、その中に、ブロックのすべての種類を挿入することを可能にするモジュールを。


提案をありがとう。ページに1つのビューを埋め込むだけなので、モジュール全体を使用するのはやり過ぎのようです。ただし、返信に時間を割いていただきありがとうございます。
big_smile 2011年

フィードバックをありがとうございます。明確にするために、私は他のアプローチには何も問題はないと思います。モジュールについて言及したいと思います。
marcvangend、2011年

別のオプションは、blockreferenceモジュールです。
TheodorosPloumis

1

これは古いスレッドであることに気づきましたが、私もこれを探していて、BlockReferenceモジュールを見つけました。ブロックをフィールドとしてノードに関連付けることができます。

それは御馳走を働きます!

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