Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Joomla-如何使用用户在模板参数中提供的信息从头部取消JS文件_Javascript_Css_Templates_Joomla_Unset - Fatal编程技术网

Javascript Joomla-如何使用用户在模板参数中提供的信息从头部取消JS文件

Javascript Joomla-如何使用用户在模板参数中提供的信息从头部取消JS文件,javascript,css,templates,joomla,unset,Javascript,Css,Templates,Joomla,Unset,我已经使用下面的常用方法成功地从Joomla模板HTML头部手动取消JS和CSS文件的设置 unset($this->_scripts['/media/jui/js/bootstrap.min.js']); unset($this->_stylesheets['/media/jui/js/bootstrap.min.css']); 我的问题是。是否可以将文件和路径信息存储到变量中,然后在上述示例中使用变量代替路径/文件?如果是这样的话,有什么好方法可以做到这一点 原因是什么?我想让

我已经使用下面的常用方法成功地从Joomla模板HTML头部手动取消JS和CSS文件的设置

unset($this->_scripts['/media/jui/js/bootstrap.min.js']);
unset($this->_stylesheets['/media/jui/js/bootstrap.min.css']);
我的问题是。是否可以将文件和路径信息存储到变量中,然后在上述示例中使用变量代替路径/文件?如果是这样的话,有什么好方法可以做到这一点

原因是什么?我想让模板的用户能够在模板参数中输入多个文件/路径(以逗号分隔),将这些不同的文件/路径存储到一个数组中,然后在该数组中循环(取消设置/删除模板HTML头中的每个文件/路径)

目的是什么?有时需要从html头部和页面底部删除js,以减少页面加载时间、页面转换闪烁/白色闪烁等。在这种情况下,我不想使用插件。我宁愿给我的用户一些细粒度的控制,如果可能的话,内置到模板中。当然,我会在模板参数中为用户添加一个位置,以便将他们从标题中删除的任何js添加到底部

我正在使用的代码

// grab the js file paths user enters into template parameters and add them to an array i can loop through

$unsetJSFiles = $this->params->get( 'customFilesUnsetJS' );
$unsetJSFilesArray = explode(',', $unsetJSFiles);

// loop through each js file path user entered and unset each one from joomla html head  

foreach ($unsetJSFilesArray as $valueJS) {
    $doc = JFactory::getDocument();
    unset($doc->_scripts[$valueJS]);
    }

它似乎不起作用。我已经成功地测试了通过print_r、echo等输出的值是否符合我的要求,但是循环不起作用。这是我在stackoverflow上问的第一个真正的问题。研究了很多帖子,在谷歌上搜索,但我找不到答案。非常感谢你的建议

尝试在循环外部(循环上方)声明$doc

你应该用这个来解除它,并声明根

unset($this->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
所以试一下(不测试!!):


尝试在循环外(循环上方)声明$doc

你应该用这个来解除它,并声明根

unset($this->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
所以试一下(不测试!!):