it-swarm.asia

كيفية إضافة ملفات CSS و JS على صفحات العقدة من template.php الخاص بالسمة

أحاول إضافة ملفات JavaScript و CSS إلى صفحة نوع عقدة واحدة من ملف template.php الخاص بي ولكنها لا تعمل. هذا هو كود 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 وجافا سكريبت عند عرض العقدة ، يمكنك إضافة الملفات الموجودة في وظيفة المعالجة المسبقة لقالب العقدة. أيضًا ، كما هو مذكور في وثائقهم ، عند إضافة ملف ، فإن الحجة الأولى لـ 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)); لتحميل العقدة المعروضة حاليًا غير آمن وخاطئ. إذا كان لديك = non node صفحة في whatever/42 ولكن لديك عقدة sales_team_page موجودة مع nid = 42 ، فستقوم بتحميل هذه العقدة وإضافة CSS وجافا سكريبت الملفات حتى إذا كان المستخدم لا يشاهد العقدة.

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