it-swarm-ko.tech

테마의 template.php에서 노드 페이지에 CSS 및 JS 파일을 추가하는 방법

Template.php 파일에서 JavaScript 및 CSS 파일을 하나의 노드 유형 페이지에 추가하려고하는데 작동하지 않습니다. 내 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/42non 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