Maxim может кто делал подобное
Я почти всегда объединяю стили и скрипты в один файл. Но я это делаю не в плагине, а в php-блоке темы.
Вот была тема.
Я пошел по такой идее:
- Создал два массива: один для css, второй для js. В них поместил пути к файлам которые будут включены всегда:
$stylesAll = array("assets/css/style.css");
$scriptsAll = array("assets/js/script.js");
- Потом по условию пушу в эти массивы нужные мне скрипты:
if ($this['kruto']) {
array_push($stylesAll, "assets/css/kruto.css");
array_push($scriptsAll, "assets/js/kruto.js");
}
Вот параметр для проверки условия как раз из плагина передаётся. Таких условий можно делать неограниченное кол-во.
- Если есть скрипты или стили которые будут постоянно подключаться, но нужно чтобы они были в заданной последовательности, просто пушим их в нужном месте:
array_push($stylesAll, "assets/css/app.css");
array_push($scriptsAll, "assets/js/app.js");
- Затем передаём наши массивы на страницу:
$this['stylesAll'] = $stylesAll;
$this['scriptsAll'] = $scriptsAll;
- Ну и в конце уже в хтмл в нужных местах подключаем css и js:
<link href="{{ stylesAll|theme }}" rel="stylesheet">
<script src="{{ scriptsAll|theme }}"></script>
Все стили и скрипты которые войдут в объединённые файлы я храню в папке темы. Поэтому у меня есть |theme
В общем, в файле \themes\name\layouts\default.htm
получается примерно такая картина:
==
<?php
function onEnd()
{
$stylesAll = array("assets/css/style.css");
$scriptsAll = array("assets/js/script.js");
if ($this['kruto']) {
array_push($stylesAll, "assets/css/kruto.css");
array_push($scriptsAll, "assets/js/kruto.js");
}
array_push($stylesAll, "assets/css/app.css");
array_push($scriptsAll, "assets/js/app.js");
$this['stylesAll'] = $stylesAll;
$this['scriptsAll'] = $scriptsAll;
}
?>
==
<!doctype html>
<html>
<head>
<link href="{{ stylesAll|theme }}" rel="stylesheet">
{% styles %}
</head>
<body>
<!-- ................ -->
<script src="{{ scriptsAll|theme }}"></script>
{% scripts %}
</body>
</html>