web-dev-qa-db-ja.com

template_preprocess_views_viewを使用して変数をビューのtplファイルに渡す方法

最近2度目の事件なので、何かを学ぶために質問することにしました。

ビューでは、メインの表示タイトル(通常はビューの上部に表示されるタイトル)をdisplay outputとして$titleとして使用できますが、---では使用できないようですスタイル出力まったく。代わりに、グループ化が使用されている場合、style output$title変数はグループの名前を意味します。

私が欲しいのは、その表示タイトル(「人間の名前」)をanyテンプレートで$display_titleとして使用できるようにすることです。だから私がやったことは私のテンプレート.phpにこのコードを入れることでした:

function MYTHEME_preprocess_views_view(&$variables){
  if($variables['name'] == 'studios' && $variables['display_id'] == 'block'){
    $view = $variables['view'];
    $variables['display_title'] = $view->human_name;
  }
  dpm($variables);
}

...人間の肩書きが手元にあることを願っています:<?php print $display_title; ?>

...しかし喜びはない。何が悪いのですか?

8
Artur

ご存じのとおり、ビューにはいくつかのテンプレートがあり、スタイルによって異なる場合があります。次に例を示します。

  • 表示出力:_views-view.tpl.php_
  • スタイル出力:_views-view-STYLE.tpl.php_
  • 行スタイルの出力:_views-view-fields.tpl.php_
  • フィールドの内容:_views-view-field.tpl.php_

等.

これらのテンプレートにはそれぞれ独自の前処理機能があります。コードで行うことは、views-view.tpl.php(_template_preprocess_views_view_)のみを前処理しているため、表示出力にのみ影響します

特定のビューで使用できるテンプレートファイルを確認するには、ビューの編集ページに移動し、列の最後にある[詳細]セクションで[テーマ:情報]をクリックします。ビューが使用しているテンプレートファイル(太字)と、それらを上書きするために使用するテンプレートファイルが表示されます。

前処理関数には、ダッシュをアンダースコアに置き換えて、テンプレートファイルにちなんだ名前を付ける必要があります。たとえば、_views-view-STYLE.tpl.php_の場合、template_preprocess_views_view_STYLE()になります。

10
Елин Й.

次の関数を使用できます。

  1. drupal_set_title ()

    現在のページのタイトルを設定します。

  2. drupal_get_title ()

    現在のページのタイトルを取得します。

0
Vlasin

覚えているなら、ビューオブジェクトと共にタイトルを渡し、ビューオブジェクト内に新しい変数を追加して、テンプレートファイルに入れることができます。

0
rreiss

「変数をテンプレートファイルに渡す」という特定の質問に対処するには...別のフックを使用する必要があるだけだと思います。次のように、変数を$viewオブジェクトにアタッチします。

function NAME_OF_MODULE_views_pre_render(&$view) {
  $view->display_title = "What have you";
}

次に、views-view--NAME_OF_VIEW--page.tpl.phpのようなテンプレートファイルで:

print $view->display_title;

自分でこれをしなければならず、それはうまくいきました。

0
cdmo