it-swarm-eu.dev

Jak přidat CSS a JS soubory na stránkách uzlu z template.php motivu

Snažím se přidat soubory JavaScript a CSS na jednu stránku typu uzlu z mého souboru template.php, ale nefunguje to. Tady je můj template.php kód:

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

Ví někdo, proč to nefunguje?

6
zach

Protože chcete, aby se při zobrazení uzlu zobrazoval váš CSS a JavaScript, můžete je přidat do funkce předzpracování pro šablonu uzlu. Jak je uvedeno v jejich dokumentaci, při přidávání souboru je prvním argumentem pro drupal_add_css() a drupal_add_js() cesta, kterou Soubor CSS/JavaScript vzhledem k základní cestě () . Pomocí metody drupal_get_path('theme', 'THEME') můžete získat cestu k tématu vzhledem k základní cestě.

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

Také provádění $node = node_load(arg(1)); pro načtení aktuálně zobrazeného uzlu je nebezpečné a nesprávné. Pokud máte stránku bez uzlu na whatever/42, Ale máte existující sales_team_page Uzel s nid = 42, načtete tento uzel a přidáte svůj uzel Soubory CSS a JavaScript, i když uživatel uzel neuzírá.

7
Pierre Buyle

Pravděpodobně proto, že nedostanete typ uzlu správně. Chcete-li správně zachytit typ uzlu, použijte uzel preprocesu.

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

Můžete je také přidat prostřednictvím souboru .info s motivem:

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


scripts[] = my_js.js
1
Paris Liakos