【问题标题】:Joomla add script from view to bottom of the head scriptsJoomla将脚本从视图添加到头部脚本的底部
【发布时间】:2015-09-26 03:15:34
【问题描述】:

我想添加这个角脚本:

<script src="/sitename/templates/templatename/app/modules/form/form.js"></script>

..从 Joomla Nooku 查看 my-account.html.php 到头部脚本的底部。因为在模板文件中有 $doc->addScript()'s 用于添加像 AngularJS 本身这样的脚本。所以视图本身中添加的自定义脚本需要在底部。

如何做到这一点?

如果我在视图中使用 AddScript(),脚本会添加到头脚本的顶部。

我想出了一个解决方案……好吧。在模板文件中,我指定了要移动到头部脚本底部的文件。像这样(欢迎提供更好的解决方案/方法):

moveScriptToBottom($doc->_scripts, '/sitename/templates/templatename/app/modules/form/form.js');

function moveScriptToBottom(&$scripts, $src)
{
    foreach ($scripts as $key => $value) {
        if ($key === $src) {
            $move = $scripts[$key];
            unset($scripts[$key]);
            $scripts[$key] = $move;
        }
    }
}

【问题讨论】:

    标签: javascript php joomla


    【解决方案1】:

    这个肯定可以的

    <?php 
             //get the array containing all the script declarations
             $document = JFactory::getDocument(); 
             $headData = $document->getHeadData();
             $scripts = $headData['scripts'];
    
             //remove or add your script
             $scripts['/sitename/templates/templatename/app/modules/form/form.js']
             $headData['scripts'] = $scripts;
             $document->setHeadData($headData);
    ?>
    

    同样的方式你可以通过这个删除一些不需要的脚本

    unset($scripts['/media/system/js/mootools-core.js']);

    【讨论】:

    • $headData['scripts'] 似乎是 view.html.php 文件中的一个空数组:(
    • $headData = $doc->getHeadData(); $scripts = $headData['scripts']; $scripts['/trainingtrips/templates/trainingtrips/teemr-app/modules/form/form.js'] = array(array('mime' => '', 'defer' => '', 'async' => '')); $headData['scripts'] = $scripts; $doc->setHeadData($headData);该代码仍将 form.js 添加到头部脚本的顶部。我想将它添加到头部脚本的底部。
    【解决方案2】:

    没有 Joomla 原生的方法可以做到这一点,所以你想出的解决方案或多或少是唯一的方法。

    【讨论】:

    • 那很不幸。
    • @Floris 你可能想看看 JED (extensions.joomla.org) 以检查是否有人创建了一个扩展来更好地处理它。
    【解决方案3】:

    你可以使用“addCustomTag”来做到这一点,虽然它不能保证脚本标签会被添加到页面的末尾,但它仍然可以解决Joomla的很多顺序问题。

    $doc->addCustomTag('<script src="' . JURI::root(true) . '/js/yourscript.min.js" type="text/javascript"></script>');
    

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 2023-01-04
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 2014-09-15
      • 1970-01-01
      相关资源
      最近更新 更多