PHP-класс для реализации автоподключения js и css файлов из указанной папки
Сделано для облегчения работы верстальщика и программиста.
Класс предназначен для работы с ядром D7 Bitrix, но можно использовать и без битрикса.
При использовании с bitrix файлы подключаются через стандартные функции D7 битрикса addCss
и addJs
.
Класс принимает два параметра:
- Массив с путями папок, содержащих js и css файлы (вложенные папки не обрабатываются)
- [опционально] Массив с префиксами имён файлов для исключения из автоподгрузки. К указанному (или не указанному) массиву всегда прибавляются префиксы
-
и_
.
нормальную разработку разработку в папке local и складываете скрипты и стили в одно место (своё для стилей, своё для скриптов), а ваш header.php примерно такой:
// header.php
...
// Заменяем $APPLICATION->showHead() на нормальный вариант, где мы сами можем управлять порядком вывода данных.
// Объяснять это нет смысла, кто использует — точно знает для чего это.
$APPLICATION->ShowMeta("keywords");
$APPLICATION->ShowMeta("description");
$APPLICATION->ShowMeta("robots");
\Codenails\Tools\cnAsset::add(array('/local/js/', '/local/css/'), array('main'));
use \Bitrix\Main\Page\Asset;
Asset::getInstance()->addJs('/local/js/main.js', true);
$APPLICATION->ShowCSS();
$APPLICATION->ShowHeadStrings();
$APPLICATION->ShowHeadScripts();
...
В противном случае продолжайте использовать style.css
и script.js
из папок компонентов, этот класс вам не нужен и жизнь точно не облегчит 😄
Положить скрипт в папку /local/php_interface/
Подключить в init.php: require_once ('cnAsset.php');
В нужном месте header.php шаблона сайта прописать:
\Codenails\Tools\cnAsset::add(
array(
// Массив с папками, из которых будем тянуть скрипты и стили.
// вложенные папки не сканируются.
'/local/js/',
'/local/css/'
),
array(
// Массив с префиксами файлов, исключаемых из автозагрузки.
// К переданному массиву прибавляются префиксы '-' и '_' .
// В данном случае из автоподргузки будут исключены файлы,
// имя которых начинается на `main`
'main'
)
);
Можно ещё вот так:
\Codenails\Tools\cnAsset::add(array('/local/css/'));
\Codenails\Tools\cnAsset::add(array('/local/js/'));
Использование без битрикса ничем не отличается от использования с битриксом. Подключаем файл и прописываем нужные параметры.
require_once ('cnAsset.php');
\Codenails\Tools\cnAsset::add(array('/css/'));
\Codenails\Tools\cnAsset::add(array('/js/'), array('main'));
Для удобства обновления кеша браузера можно подключать отдельный файл через скрипт.
\Codenails\Tools\cnAsset::addFile('/css/main.css');
\Codenails\Tools\cnAsset::addFile('/css/main.js');