Joomla - 如何使用用户在模板参数中提供的信息从头部取消设置 JS 文件
Posted
技术标签:
【中文标题】Joomla - 如何使用用户在模板参数中提供的信息从头部取消设置 JS 文件【英文标题】:Joomla - how to Unset JS file from head using info given by user in template parameters 【发布时间】:2015-09-04 22:46:41 【问题描述】:我已经使用下面的常用方法成功地从 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 等输出了我正在寻找的内容。但是循环通过不起作用。这是我在 *** 上提出的第一个真正的问题。研究了很多线程并用谷歌搜索,但我找不到答案。非常感谢您的任何建议!
【问题讨论】:
【参考方案1】:尝试在循环外(循环上方)声明$doc!
你应该用这个取消它并声明根!
unset($this->_scripts[JURI::root(true) . '/media/jui/js/jquery.min.js']);
所以试试(未测试!!):
// grab the js file paths user enters into template parameters and add them to an array i can loop through
$doc = JFactory::getDocument();
$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)
unset($this->_scripts[JURI::root(true) . $valueJS]);
【讨论】:
以上是关于Joomla - 如何使用用户在模板参数中提供的信息从头部取消设置 JS 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Joomla Protostar 模板中加载外部 JS 和 URL