web-dev-qa-db-ja.com

プログラムでビューコンテンツペインをレンダリングする方法は?

特定のタグでタグ付けされた「ニュース」タイプのすべてのコンテンツを表示するビューがあります。 "world"(ビューへのパラメーターとして渡されます)。

ビューマシン名はnewsです。コンテンツペインタイプ(マシン名panel_pane_1)の表示があります。また、「field_tags」に設定されたコンテキストフィルターもあります。

このビューコンテンツペインをプログラムでレンダリングし、タグ値「world」をそれに渡す方法は?

ctools_content_renderは見つかりましたが、これがこのタスクに適切な関数であるかどうかと、その使用方法はわかりません)

5
camcam

使用できます

views_embed_view

例えば

print views_embed_view('news', 'panel_pane_1', 'world');

追加のパラメーターは、引数として、つまりコンテキストフィルター値として渡されます。

4
David Thomas

views_content_views_panes_content_type_render() を使用できます。以下に詳細な例を示します。

  // Important to include target content type.
  // You can also use 'views' content type but with a different render function.
  module_load_include('inc', 'views_content', 'plugins/content_types/views_panes');
  // Use your views machine name and display name here.
  $subtype = 'views_name-display_name';
  // Adjust settings to yours. You can debug ctools_content_render to see
  // all available settings in $conf. Or check
  // views_content_plugin_display_panel_pane::option_definition().
  $conf = array(
    'items_per_page' => 2,
    'offset' => 0,
    'more_link' => 1,
    'override_title' => 1,
    'override_title_heading' => 'blablalba',
    'override_title_text' => '',
    'pager_id' => 0,
    'use_pager' => 0,
  );
  // (optional) Prepare ctools context and context keys if your argument type
  // is 'context'. Check handling of other argument types in
  // views_content_views_panes_content_type_render().
  $conf['context'] = array('mycontext');
  $context = array(
    'mycontext' => ctools_context_create('node', $node),
  );
  // Render views pane.
  $pane = views_content_views_panes_content_type_render($subtype, $conf, $args, $context);

  // Get pane HTML.
  $output = render($pane->content);
0
milkovsky