ALite CMS 2019.0401
Разработка  >  Статьи
Язык: 
ALite CMS: создание и управление сайтом

Статьи

Загрузка дополнительных стилей и скриптов в плагинах

15.05.2009 18:44, автор: ALiteCMS

Подключаемые модули (плагины) могут использовать дополнительные файлы стилей и скриптов. В ALite CMS есть несколько способов загрузки таких файлов.

  • Перечислить эти файлы в настройках системы поле "Дополнительные стили" или "Дополнительные метатэги".
    Пример:
    < link rel="stylesheet" type="text/css" href=" /_themes/имя_темы/plugins/css/my_style.css" / >
    < !--[if IE 6] >< link rel="stylesheet" type="text/css" href="=" /_themes/имя_темы/css/my_style_ie6.css" / >< ![endif]-- >
    < script type="text/javascript" src="=" /_themes/имя_темы/plugins/js/stat.js" >< / script >
    < script type="text/javascript" src="=" /_js/stat.js" >< / script >
    Указанные таким способом файлы автоматически вставляются внутрь тэга < head >, загружаются при открытии страницы, всегда доступны и не требуют каких-то специальных вызовов и обработок.
  • Загрузка дополнительных файлов внутри подключаемых модулей. В этом случае дополнительные файлы загружаются только при обработке подключаемого модуля. Если предполагается использовать дополнительные файлы только в конкретном подключаемом модуле или в зависящих от него модулях предпочтительнее использовать именно этот способ. Это может значительно уменьшить объем данных, передаваемых клиенту, и соответственно ускорит загрузку страницы. Именно этот случай будет рассмотрен ниже.


Непосредственная вставка кода в текст плагинов с использованием тэгов < link... или < style type="text/css" >... хотя и обрабатывается правильно большинством браузеров, все же является некорректной. Стили должны загружаться внутри тэга < head >. Также правильнее загружать в тэг < head > и файлы скриптов, а не вставлять куски кода в текст плагина.

В ALite CMS для загрузки файлов стилей и скриптов существует JavaScript-функция loadExternalJsCssFile(fileName, fileType). Функция имеет 2 параметра:
fileName - путь и имя файла на сервере;
fileType - тип загружаемого файла (может иметь значение 'css' для файлов стилей или 'js' для файлов JavaScript). Эта функция не только загружает указанные файлы, но и предотвращает их многократную загрузку.

Пример:
aliteLoadExternalJsCssFile('/_themes/имя_темы/plugins/css/my_style.css', 'css');
aliteLoadExternalJsCssFile('/_themes/имя_темы/plugins/js/my_script.js', 'js');

Использование этой функции имеет одну особенность. Она не позволяет загрузить файлы в построителе страниц. Для устранения этого существует php-функция load_external_js_css_file($file_name, $file_type), которая корректирует загрузку файлов стилей и скриптов с учетом особенностей работы в построителе страниц. Вызов и параметры этой функции аналогичны функции loadExternalJsCssFile.
Всегда предпочтительнее использовать php-функцию load_external_js_css_file для загрузки файлов, а не прямой вызов JavaScript-фунции loadExternalJsCssFile.

Пример:
echo load_external_js_css_file('/_themes/'.alite_get_user_theme().'/plugins/css/my_style.css', 'css');
echo load_external_js_css_file('/_themes/'.alite_get_user_theme().'/plugins/js/my_script.js', 'js');

Примечание:
Работа javascript в построителе страниц ограничена и большинство функций скриптов работать не будет.

Добавил Roseane, 07.12.2012 23:42
Times are changing for the better if I can get this online!
Комментировать могут только зарегистрированные пользователи.