web-dev-qa-db-fra.com

Comment ajouter des fichiers CSS et JS sur les pages de nœuds à partir du template.php du thème

J'essaie d'ajouter des fichiers JavaScript et CSS à une page de type de nœud à partir de mon fichier template.php mais cela ne fonctionne pas. Voici mon code 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')
    );
  }
}

Est-ce que quelqu'un sait pourquoi cela ne fonctionne pas?

6
zach

Puisque vous voulez votre CSS et JavaScript lors de l'affichage d'un nœud, vous pouvez ajouter les fichiers dans la fonction de prétraitement pour le modèle de nœud. De plus, comme indiqué dans leur documentation, lors de l'ajout d'un fichier, le premier argument pour drupal_add_css() et drupal_add_js() est le chemin d'accès Fichier CSS/JavaScript relatif au chemin_base () . Vous pouvez utiliser drupal_get_path('theme', 'THEME') pour obtenir le chemin de votre thème par rapport au chemin de base.

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

En outre, faire $node = node_load(arg(1)); pour charger le nœud actuellement affiché est dangereux et incorrect. Si vous avez une page non noeud à whatever/42 Mais que vous avez un noeud sales_team_page Existant avec nid = 42, vous chargerez ce noeud et ajouterez votre CSS et JavaScript même si l'utilisateur ne visualise pas le nœud.

7
Pierre Buyle

Probablement parce que vous n'obtenez pas correctement le type de nœud. Utilisez le nœud de prétraitement afin de capturer correctement le type de nœud.

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()
 }
}

Vous pouvez également les ajouter via votre fichier .info de votre thème:

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


scripts[] = my_js.js
1
Paris Liakos