2012-04-13 82 views
1

我在寻找如何根据其视图模式和内容类型选择性地将CSS或JS添加到给定节点后来到这里。这个问题在这里很直接地回答(http://stackoverflow.com/questions/8295498/how-to-add-css-and-js-files-on-node-pages-independent-of-the-theme)。如何从Drupal 7中的特定内容类型中删除CSS和JS

现在我很想清楚一切:我正在寻找一种方式来显示我想要的CSS和JS,但只有,没有其他的JS和CSS。我试图集成Impress.js(我不喜欢可用的解决方案),它似乎与Jquery冲突,因为两个脚本都已正确加载,但最新的Firefox和Chromium浏览器都会抛出“旧浏览器”消息。

任何有关如何取消设置每个CSS和JS的想法,以便我想使用的CSS和JS是唯一真正活动的想法?

谢谢!

我试过以下,没有成功:

$mycss = $vars['styles']; 

unset($micss[drupal_get_path('module','system') .'/system.base.css']); 

... 

unset($micss[drupal_get_path('module','toolbar') .'/toolbar.css']); 

$vars['styles'] = $mycss; 

(我加了很多不同的CSS我想摆脱,但这个解释的想法)。它没有工作,虽然:)

编辑。对于糟糕的标记,我很抱歉,我正在寻找清除/标记代码的方法。

+0

编程? – jantimon 2012-04-13 09:52:39

+0

如果它是以编程方式完成的,将其添加到我现在具有通用模块的代码中,那将很好。对于快速解决方案,任何事情都可以。 – versvs 2012-04-13 10:29:54

回答

2

在您的自定义模块使用:

function yourmodule_js_alter(&$js) { 
    unset(
     $js['misc/drupal.js'], 
     $js['misc/jquery.js'] 
     .... etc. 
    ); 
} 

你说你要只对某些内容类型做到这一点,所以尝试:

if(arg(0) == 'node') { 
    $node = node_load(arg(1)); 
    if($node->type == 'your_content_type') { 
     unset(
      $js['misc/drupal.js'], 
      $js['misc/jquery.js'] 
      .... etc. 
     ); 
    } 
} 

强尼

+0

尽管我的问题依然存在(似乎这与jquery vs impress没有关系),我的问题在这里得到了正确的回答...很赞。回想起来,这是相当可观的事情......只是知道正确的钩子寻找:)谢谢! – versvs 2012-04-13 15:15:46