web-dev-qa-db-ja.com

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

[Drupal 7]

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

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

どうすればよいですか?

here に関するガイドを見つけました。次のコードを使用することをお勧めします:

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

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

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

6
big_smile

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

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');

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

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

15
cigotete

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

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

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

フィールドのようにモジュールにビューを挿入できる Entity Views Attachment モジュール、またはカスタマイズできる Display Suite モジュールを使用することをお勧めしますノードをレイアウトし、そこにあらゆる種類のブロックを挿入します。

5
marcvangend

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

御馳走です!

1
JMC