it-swarm.it

Come aggiungere file CSS e JS sulle pagine dei nodi dal template.php del tema

Sto cercando di aggiungere file JavaScript e CSS a una pagina del tipo di nodo dal mio file template.php ma non funziona. Ecco il mio codice 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')
    );
  }
}

Qualcuno sa perché non funziona?

6
zach

Poiché desideri visualizzare CSS e JavaScript durante la visualizzazione di un nodo, puoi aggiungere i file nella funzione di preelaborazione per il modello di nodo. Inoltre, come indicato nella loro documentazione, quando si aggiunge un file, il primo argomento per drupal_add_css() e drupal_add_js() è il percorso File CSS/JavaScript relativo a base_path () . Puoi usare drupal_get_path('theme', 'THEME') per ottenere il percorso del tuo tema rispetto al percorso di 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'));
    }
  }
}

Inoltre, eseguire $node = node_load(arg(1)); per caricare il nodo attualmente visualizzato non è sicuro e non è corretto. Se hai una pagina non nodo in whatever/42 Ma hai un nodo sales_team_page Esistente con nid = 42, caricherai questo nodo e aggiungerai CSS e JavaScript file anche se l'utente non sta visualizzando il nodo.

7
Pierre Buyle

Probabilmente perché non ottieni il tipo di nodo correttamente. Utilizzare il nodo di preelaborazione per acquisire correttamente il tipo di nodo.

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

Puoi anche aggiungerli tramite il tuo file .info del tuo tema:

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


scripts[] = my_js.js
1
Paris Liakos