Joomla добавить сценарий от просмотра к нижней части головы сценариев

1

Я хотел бы добавить этот угловой скрипт:

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

.. в нижней части головных скриптов из Joomla Nooku просмотрите my-account.html.php. Потому что в файле шаблона есть $doc-> addScript() для добавления таких скриптов, как 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;
        }
    }
}
Теги:
joomla

3 ответа

1
Лучший ответ

Для Joomla не существует собственного способа сделать это, поэтому решение, с которым вы столкнулись, более или менее является единственным способом сделать это.

  • 0
    Ну, это прискорбно.
  • 0
    @Floris вы можете взглянуть на JED ( extensions.joomla.org ), чтобы проверить, создал ли кто-то расширение, чтобы лучше справиться с этим.
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']);

  • 0
    $ headData ['scripts'] представляется пустым массивом в файле view.html.php :(
  • 0
    $ headData = $ doc-> getHeadData (); $ scripts = $ headData ['scripts']; $ scripts ['/ trainingtrips / templates / trainingtrips / teemr-app / modules / form / form.js'] = массив (массив ('mime' => '', 'defer' => '', 'async' => '')); $ headData ['scripts'] = $ scripts; $ Doc-> setHeadData ($ headData); Этот код все еще добавляет form.js в начало скриптов в голове. Я хотел бы добавить его в нижней части сценариев в голове.
0

Вы можете сделать это с помощью " addCustomTag ", хотя это не гарантирует, что тег script будет добавлен в конец страницы, тем не менее, он решит множество проблем с последовательностью в Joomla.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню