web-dev-qa-db-ja.com

CSSとJSファイルをテーマのtemplate.phpからノードページに追加する方法

JavaScriptおよびCSSファイルをtemplate.phpファイルから1つのノードタイプページに追加しようとしていますが、機能しません。これが私のtemplate.phpコードです:

<?php
// $Id: template.php,v 1.13 2010/12/14 01:04:27 dries Exp $

function mttheme_preprocess_html(&$variables) {
  $node = node_load(arg(1));
  if ($node->type = 'sales_team_page') {
    drupal_add_css('misc/jquery.fancybox-1.3.4.css');
    drupal_add_js('misc/jquery.mousewheel-3.0.4.pack.js',
      array('type' => 'file', 'scope' => 'header')
    );
    drupal_add_js('misc/jquery.fancybox-1.3.4.pack.js',
      array('type' => 'file', 'scope' => 'header')
    );
    drupal_add_js('misc/jquery.fancybox-calls.js',
      array('type' => 'file', 'scope' => 'header')
    );
  }
}

それが機能しない理由を誰かが知っていますか?

6
zach

ノードを表示するときにCSSとJavaScriptが必要なので、ノードテンプレートの前処理関数にファイルを追加できます。また、それらのドキュメントに記載されているように、ファイルを追加するとき、 drupal_add_css() および drupal_add_js() の最初の引数はパスですCSS/JavaScriptファイルは、base_path()を基準にしています。 drupal_get_path('theme', 'THEME')を使用して、ベースパスを基準としたテーマのパスを取得できます。

_function THEME_preprocess_node(&$variables) {
  if ($variables['view_mode'] == 'full') {
    $node =& $variables['node'];
    if ($node->type == 'sales_team_page') {
      $path = drupal_get_path('theme', 'THEME');
      drupal_add_css($path . '/misc/jquery.fancybox-1.3.4.css');
      drupal_add_js($path . '/misc/jquery.mousewheel-3.0.4.pack.js', array('type' => 'file', 'scope' => 'header'));
      drupal_add_js($path . '/misc/jquery.fancybox-1.3.4.pack.js', array('type' => 'file', 'scope' => 'header'));
      drupal_add_js($path . '/misc/jquery.fancybox-calls.js', array('type' => 'file', 'scope' => 'header'));
    }
  }
}
_

また、現在表示されているノードをロードするために$node = node_load(arg(1));を実行することは安全でなく、間違っています。 _whatever/42_にnon nodeページがあるが、nid = 42の既存の_sales_team_page_ノードがある場合、このノードをロードしてCSSを追加し、ユーザーがノードを表示していない場合でもJavaScriptファイル。

7
Pierre Buyle

おそらく、ノードタイプを正しく取得できないためです。ノードタイプを正しくキャプチャするには、前処理ノードを使用します。

function mttheme_preprocess_node(&$variables) {
 if ($variables['type'] == "sales_team_page"){
   drupal_add_css(drupal_get_path('theme', 'mttheme') . 'misc/jquery.fancybox-1.3.4.css');
   //add js in the same way using drupal_get_path()
 }
}

テーマの.infoファイルから追加することもできます。

name = Your theme
core = 7.x
engine = phptemplate


scripts[] = my_js.js
1
Paris Liakos