【问题标题】:How to remove JavaScript code in the template header (Joomla! 3.0.x)?如何删除模板头中的 JavaScript 代码(Joomla!3.0.x)?
【发布时间】:2012-12-18 11:57:10
【问题描述】:

我在 Joomla! 中创建了一个模板! 3x,但我想删除页眉中的默认 JavaScript 代码和样式表。

我的代码是:

$doc = JFactory::getDocument();

//Remove default configuration
$doc->setGenerator("");
$headData = $doc -> getHeadData();
unset($headData['metaTags']['http-equiv']);
$doc -> setHeadData($headData);   //Is OK
$doc -> _styleSheets = array();   //Is OK
$doc -> _scripts = array();       //Is OK
$doc -> _script =  array();  **// Not OK**

//Add foundation
$doc->addStyleSheet('templates/'.$this->template.'/css/foundation.css');
$doc->addScript('templates/'.$this->template.'/js/jquery.js');
$doc->addScript('templates/'.$this->template.'/js/modernizr.foundation.js');

模板标题 HTML 现在是:

function keepAlive() { var myAjax = new Request({method: "get", url: "index.php"}).send();} window.addEvent("domready", function(){ keepAlive.periodical(840000); });
jQuery(document).ready(function() {
    jQuery('.hasTooltip').tooltip({});
});
// The block is not removed

如何删除此 JavaScript 代码?

参考文件:

  • /libraries/joomla/html/behavior.php
  • /libraries/cms/html/bootstrap.php

【问题讨论】:

    标签: javascript jquery css joomla mootools


    【解决方案1】:

    使用JHtml::_('behavior.disable','behavior'); 删除特定行为

    我们在网络和论坛上有很多帖子,用户要求删除或 这种行为。而不是他们通过观点和核心来破解他们的方式,我们 可能有:

    JHtml::_('behavior.disable','特定行为');删除我们不删除的 想要

    示例场景

    无论您的 HTML 覆盖是否未加载,都会加载工具提示。

    JHtml::_('behavior.disable','tooltips'); 放在模板中 index.php 可以 这是给你的,这种方式可以帮助你从不需要的脚本中清除你的 head 标签。

    在 3.0 中,如果您只想从注册中删除工具提示,则必须复制 HTML 覆盖的视图。删除 JHtml::_('behavior.tooltip');从文件和 然后它就消失了。我认为这应该在没有 HTML 覆盖的情况下完成。

    在 2.5.x 中,即使使用 HTML 覆盖也无济于事。工具提示保留。

    如果您安装的任何其他扩展正在加载您 不想要,你需要更长的时间才能弄清楚它在哪里。

    【讨论】:

    • 添加 JHtml::_('behavior.keepalive'); JHtml::_('bootstrap.tooltip');这些块被删除。
    • 在 Joomla 3 中,他们确实需要为不想要 mootools 的人添加一个防止这些问题的好方法......
    • @Cleanshooter 有。这是一个名为 mootable 的插件:github.com/phproberto/plg_sys_mootable ;)
    • 在 Joomla 3.4.x 中,JHtml::_('behavior.disable','behavior'); 不起作用。我收到错误 500。
    • 在否决投票之前,至少检查一下是否发布了答案。
    【解决方案2】:

    我找到了一个简单的解决方案herehere

    unset($this->_scripts[JURI::root(true).'/media/system/js/caption.js']);
    

    unset ( $this -> _metaTags[ 'http-equiv' ] ) ;
    $this -> _scripts    = array ( ) ;
    $this -> _script     = array ( ) ;
    

    获得全部。 :)

    请勿使用:

    $doc -> setHeadData($headData);
    

    它会做一些奇怪而神秘的事情。

    您(和我)遇到的问题是通过$doc->setHeadData($headData) 重置$doc 变量,而不是通过$this 取消设置_scripts_scriptCoderwall.com 提供了一个详尽的示例。

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多