質問

ビューページにのみJavaScriptとCSSファイルを挿入する必要があるカスタムモジュールを書いています。

hook_preprocess_pageを使用していますが、現在のページがビューからあるかどうかはわかりません。

function mymodule_preprocess_page(&vars)
{
    var_dump($vars); //output: nothings that reference the views!
    if([view page])
    {
        drupal_add_js([...]);
        drupal_add_css([...]);
        // Rebuild scripts 
        $scripts = drupal_get_js();
        $vars['scripts'] = $scripts;
        // Same for css
    }
}

テンプレートファイル(page_view_page_path.tpl.php)を使用できることはわかっていますが、JSと追加のCSSは、モジュールが有効になっている場合にのみ含める必要があります。 だから私はこのものを私のモジュールコード内に直接保持するのが好きです.

アイデア?

役に立ちましたか?

解決

views_get_page_view() ページビューが現在使用されているものを見つけます。 nullを返す場合、現在のページはビューのページではありません。

しかし、使用しています drupal_add_js()drupal_add_css()hook_preprocess_page() 変数のため、予想どおりに機能しません $script$style 変数はすでに設定されています template_preprocess_page(). 。ビューのテンプレート前処理(Jeremy Frenchの回答を参照)は、おそらくCSSとJavaScriptを追加するのに最適な場所です。

他のヒント

長いスレッドがあります ビュー用のプリプロセッサ ここ。 このコメント 私にはとてもシンプルに見えます。

function mymodule_theme_registry_alter(&$theme_registry) {
  //dpm($theme_registry);
  $theme_registry['views_view__YOUR_VIEW_NAME_HERE']['preprocess functions'][] = 'mymodule_preprocess_func';
}

// now go on and play with your new preprocess function
function mymodule_preprocess_func(&$vars) {
  // etc
}

hook_preprocess_page()にいる場合、定義上、ビューにはページ表示とメニューパスがあります。これは一意でなければなりません。これを行うことができます。

function mymodule_preprocess_page(&vars)
{
    var_dump($vars); //output: nothings that reference the views!
    if($_GET['q'] == 'my/view/path')
    {
        drupal_add_js([...]);
        drupal_add_css([...]);
    }
}

このページに引数が渡されている場合、の一部が必要です $_GET['q'], 、代わりにDrupalのものでこれを行います arg() 働き:

if(arg(0) == 'my' && arg(1) == 'view' && arg(2) == 'path')

http://api.drupal.org/api/drupal/includes - bootstrap.inc/function/arg

私にとってこれはうまくいきます:

function MYMODULE_preprocess_page(&$vars) {
  $view = (array)views_get_page_view();
  if (!empty($view)) {
    // do stuff
  }
}

特定のコールバックにJSまたはCSSを追加している場合は、使用する方が良い hook_page_build():

ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top