Всем привет!
Хочу предложить свое решение подобных вопросов.
head в Joomla очень спорная вещь, вроде удобно, но иногда ужасно бесит ))))
Основная мысль (весьма радикальная) это отказаться от head и заменить его например на myhead, тогда для Joomla нужно сделать соответствующий рендерер, например
class JDocumentRendererMyHead extends JDocumentRenderer {...}
Рендереры Joomla лежат тут: (/libraries/joomla/document/html/renderer)
Почему рендерер? Меня натолкнуло на эту мысль вот что:
Идем в класс JDocument (/libraries/joomla/document/)
(это родительский класс для JDocumentHTML экземпляром которого является шаблон) и находим функцию loadRenderer
public function loadRenderer($type)
{
$class = 'JDocumentRenderer' . $type;
if (!class_exists($class))
{
$path = __DIR__ . '/' . $this->_type . '/renderer/' . $type . '.php';
if (file_exists($path))
{
require_once $path;
}
else
{
throw new RuntimeException('Unable to load renderer class', 500);
}
}
if (!class_exists($class))
{
return null;
}
$instance = new $class($this);
return $instance;
}
Там есть проверка на существование класса т.е. чтобы использовать кастомный рендерер в нашем шаблоне нам достаточно его подключить, а дальше Joomla все сделает сама.
В нем реализуем любые наши мысли и идеи и для подключения потом используем
вместо
<jdoc:include type="head" />
вот такое
<jdoc:include type="myhead" />
Я немного ужал рассказ =) Потому что у себя я еще использую обертку для класса JDocumentHTML, потому как использую вместо jdoc синтаксис HAML... (кто-то скажет что мои вкусы очень специфичны
, но уж больно мне он понравился, лучшей альтернативы не придумать) и Joomla мне очень нравится
Что в итоге:- + мы имеем свой гибкий рендерер для head
- + можем использовать настройки из шаблона
- + нет никаких плагинов, хуков, хаков, евентов и прочего добра ))))
- + мы не вмешиваемся в ядро (упаси господь)
Применение:- + вырезать весь JS (да вообще весь) если я пишу свой проект то я юзаю Gulp и у меня в тоге 1 js файл и 1 CSS, чужого мне не надо.
- + запретить все инлайновые скрипты и стили
- + можно дописать jdoc footer и туда перетащить все JS например
Если я чет не совсем внятно написал, задавайте вопросы, если я хрень несу то тоже исправьте ))) Я таким способом пользуюсь весьма давно и пока лучшей альтернативы не нашел