Как вставить скрипт в Joomla


Содержание материала:

Вопросы по языку PHP

Материал из База знаний Joomla

Содержание

Выдается ошибка “Syntax error, unexpected XXX in …”. Как ее решить?

Попробуйте еще раз залить указанный в ошибке файл на хостинг. Скорее всего он скопировался не до конца.

Как определить абсолютный путь к папке с Joomla

Это может понадобиться, если потерся файл configuration.php и вам надо заполнить переменную $mosConfig_absolute_path. Для этого создаем файл path.php в директории с joomla и пишем следующее

То, что выведет этот скрипт и будет абсолютным путем к joomla. Напоминаю, что слэша в конце этого пути не должно быть.

Я поставил компонент, а в нем возникают непонятные ошибки вроде «Notice: Undefined variable: xxx in yyy.php on line 123».

Во-первых, скорее всего, это не смертельно. Наиболее вероятно, что ничего страшного в этом нет. Это может означать, что автор скрипта забыл инициализировать переменную до ее использования. Во-вторых с этим можно бороться тремя способами:

  • Написать автору компонента, что бы он исправил эту ошибку
  • В файле .htaccess написать php_value error_reporting 0 (или php_flag error_reporting 0)
  • В самом начале компонента (/components/com_xxx/xxx.php) или модуля (/modules/mod_xxx.php) добавить
  • Если вы имеет доступ к php.ini, то исправить параметр error_reporting:

Я получаю ошибку вида «XXX has been disabled for security reasons»

Эта ошибка означает, что ваш хостер запретил функцию XXX в настройках языка php. Точнее он запретил ее использование. Выхода из этой ситуации как бы и не существует, если вы не можете менять конфигурацию php. Можно попытаться написать в хостинговую компанию и получить разъяснения, почему та или иная функция у них запрещена. Если хостинг платный — можно смело обращаться, ибо на нормальных хостингах ничем таким особо не страдают.

Как вставить php-скрипт в Joomla

Надо оговориться, что вставить его можно различными способами:

  • В текст статьи. Т.е. вы создаете статью и хотите что бы результат работы какого-либо php скрипта был вставлен в тело статьи. Для таких целей существуют мамботы вроде rd_addphp или iClude (более подробно на странице Список мамботов).
  • Если нужно вставить некий скрипт (например систему статистики посещений) который должен вызываться при каждом старте Joomla, то проще всего разместить вставку (чаще всего это оператор include или require) в ваш шаблон или непосредственно в самое начало index.php.
  • Если вам нужно вставить скрипт как модуль, который можно перемещать как самый обычный модуль Joomla и управлять его видимостью, то просто вставив текст в редактор при создании модуля вы ничего не сделаете. Виртуальные, создаваемые пользователями в БД модули не исполяют никакого кода, они просто выводят текст. Для того, что бы реализовать этот вариант, надо:
    • Сделать ваш скрипт модулем для Joomla. Руководства по созданию модулей находятся на этом же сайте.
    • Использовать модуль mod_php, который интерпретирует через eval текст как код языка PHP.

Что такое safe mode? Как его выключить.

Safe Mode это специальный режим работы интерпретатора языка PHP. Старый и древний режим, который считается наиболее безопасным. Но эта безопасность налагает определенные, иногда очень серьезные ограничения на функционал. На Joomla эти ограничения сказываются хотя бы тем, что вам вряд ли удастся поставить компоненты или модули. Такого понятия как «выключить» на бесплатных хостингах не существует. На платных скорее всего вам разрешено иметь свой php.ini и параметром safe_mode можно управлять в этом файле. В любом случае об этом стоит спрашивать вашу хостинговую компанию. Более подробно написано на официальном сайте языка php

Ошибка: “Warning: Cannot modify header information — headers already sent by (output started at /xxxx/yyyy/xxx.php:222) in /aaaa/bbbb/ccc.php on line 444”

Эта ошибка означает, что в файле xxx.php какая-либо конструкция языка php что-то вывела, а в файле ccc.php кто-то пытается послать заголовки HTTP-ответа уже после этого. Но заголовки на то и заголовки, что бы выводиться ДО основного ответа, и в любой момент быть посланы не могут. Чаще всего решается перезаливкой файла xxx.php или полным расследованием вопроса «А чего же я это там намудрил». Вспомните что вы делали в последнее время, что исправляли, что ставили. Возможно дело в этом.

Зачем нужны сессии в php и что это такое

Сессии это специальный механизм языка php, который предназначен для хранения определенного массива данных ассоциированного с пользователем. Чаще всего используются при ведении пользовательских сессий после входа на сайт.

У меня возникает ошибка «URL file-access is disabled in the server configuration in /xxx/file.php on line ZZ»

Эта ошибка означает, что хостер запретил исходящие соединения в конфигурации сервера. Точнее запретил скачивать удаленные файлы посредством функций, вроде file или file_get_contents, языка PHP. Это может быть обусловлено либо тем, что он ограничивает всякую стороннюю сетевую активность приложений клиентов, либо пытается их защитить от дыр типа «remote file inclusion» в скриптах. В любом случае об этом стоит спросить именно у хостинговой компании.

Что делать если php не поддерживает библиотеку GD (GD image library)

  • Если такое случилось у хостинговой компании, то это повод ее поменять или обратиться в службу поддержки с настойчивым требованием включить эту библиотеку.
  • Если такое у вас дома на компьютере для тестирования и создания сайта, то есть предложение поставить Денвер и не мучиться с настройками php.
  • Если денвер ставить не хочется — нужно в php.ini раскомментировать следующую строчку (естественно вы должны понимать что делаете):

Ошибка: «session_start(): open(/файл) failed: Permission denied (13) in /папка/administrator/index.php on line XX»

Данная ошибка вызывана тем, что на хостинге не правильно настроены сессии в языке PHP. Поэтому можно:

  • Обратиться в службу поддержки и попросить все настроить за вас
  • Создать папку для хранения файлов сессий самостоятельно и прописать ее в конфигурации PHP как папку для хранения сессий:
    • Добавить данную строку, например, в файл configuration.php
    • Прописать .htaccess ту же самую настройку
    • Настроить ее в вашем php.ini (если это доступно)

Ошибка: «session_write_close() [write failed: No space left on device (XX) in /папка/файл.php on line ZZ»

Данная ошибка решается или с вашей хостинговой копанией, или если вами. Означает она то, что выделенное вам дисковое пространство закончилось. Произойти это могло по разным причинам. Если вы израсходовали все выданное вам пространство, то стоит его очистить. Возможно скопилось много старых временных файлов. Если вы точно знаете, что ни при чем, то вопрос надо решать обращением в службу поддержки хостера.

Ошибка: Fatal error: Call to undefined function FFFFFFF_FFFFFF() in /xxx/zzz.php on line 123

Все очень просто. Данная ошибка означает, что в вашей сборке языка пхп нет поддержки функции FFFFFFF_FFFFFF. Иногда такое случается и потому могут быть не доступны следующие функции:

  • preg_match — нет поддержки регулярных выражений
  • session_start — нет поддержки сессий

Так как эти функции встроены в язык PHP, то их отсутствие может быть объяснено одной причиной — пхп на хостинге собран без их поддержки. Данный вопрос решается одним способом — обращением в хостинговую компанию

Ошибка: Fatal error: Maximum execution time of 30 seconds exceeded in xxx.php on line zzz

Эта ошибка означает, что на вашем хостинге установлен лимит на максимальное время работы одного пхп-скрипта. Чаще всего такого рода ошибки говорят о том, что произошло что-то действительно нехорошее. 30 секунд страница исполняться не может. Вариантов решения несколько:

  • Поговорить с хостером на тему увеличения времени работы скрипта. Но не думаю, что они пойдут вам на встречу.
  • Обновить директиву max_execution_time в php.ini и присвоить ей большее значение, например 1200 секунд. Этого точно должно хватить.
  • В начале configuration.php написать set_time_limit(0);, отключив тем самым проверку времени работы скрипта.

Такие ошибки могут возникнуть, например, в случае запуска денвера с флэшки, когда доступ к файлам сильно замедлен возможностями флэш-памяти или во время установки действительно больших компонентов, когда разархивирование файла требует много ресурсов.

Как вставить скрипт в Joomla

Если анализируете трафик сайта на Joomla (что Вы несомненно должны делать, ИМХО), то Вам вероятно нужно для трекинга добавить некоторое программное обеспечения к сайту. Самое очевидное, что можно применить — Google Analytics. Можно также выбрать Crazyegg, GoingUp или другие инструменты. (Перевод статьи Kristoffer Sandven «How to easily add Javascript snippets to Joomla».)

Топ-пост этого месяца:  WordPress оптимизация изображений. Плагин WordPress для изображений

Все эти решения, как и многие другие, нуждаются в добавлении на Ваш сайт сниппета JavaScript (Javascript snippet). В этом посте я покажу, как добавлять некоторые позиции модуля к Вашему шаблону сайта Joomla. Это упростит добавление нужных скриптов на Ваш веб-сайт.

[Что такое позиции модуля]

Если работаете с Joomla, то наверняка знаете, что шаблон Joomla состоит из HTML и некоторых кусков кода PHP (PHP snippets).

Во-первых, шаблон содержит область компонента, где показывается вывод от разных компонентов (статьи, списки блога, дополнительные компоненты для каких-либо функций и т. п.). Во-вторых, шаблон Joomla также содержит несколько сниппетов PHP, которые называются «позиции модуля». Вы можете назначить модулям эти определенные позиции, и эти модули появятся именно в этих позициях на шаблоне Вашего сайта.

[Самый простой способ вставить сниппеты]

Конечно, Вы можете использовать расширение для каждого стороннего сценария, который нужно добавить (если таковое расширение имеется) — например, Jumi [1]. Проблема с таким подходом, тем не менее, состоит в том, что Вы должны отслеживать все эти расширения и их обновления (на предмет устранения ошибок и уязвимостей). С каждым добавленным сторонним расширением увеличиваются шансы взлома Вашего сайта. В конце концов, код сделан людьми, и люди делают ошибки.

По этой причине я предпочитаю использовать модуль ‘Custom HTML‘ (пользовательский HTML), когда мне нужно вставить сниппеты кода. Чтобы достичь наилучшего результата, Вам нужно иметь заданными специальные позиции модуля для модулей сниппетов JavaScript. Таким способом Вы сможете управлять размещением исходного кода сниппетов (где именно он будет вставлен), что может быть крайне важным для работы сниппета.

Этот метод прост, однако весьма эффективен.

Вам нужны три позиции модуля, и столько же Вам потребуется модуля Custom HTML (по одному для каждого сниппета).

[Вставка позиций модуля в шаблон]


Чтобы выполнить задачу как можно более гибко, понадобятся три позиции модуля:

Для добавления позиций модуля нужно добавить код в файл шаблона index.php. Его можно найти в следующем месте: /templates/yourtemplatename/index.php. Перед внесением изменений не забудьте сделать резервную копию этого файла. Введите сразу перед тегом :

И следующее сразу после тега :

И следующий код перед тегом :

Сохраните Ваш шаблон.

Следующий шаг — добавление действительных модулей, которые будут нести в себе Ваш JavaScript. Перед этим необходимо немного подстроить установки текстового редактора (имеется в виду online-редактор статей Joomla).

[Как разрешить JavaScript в редакторе]

Чтобы можно было добавлять JavaScript в модуль Custom HTML, нужно разрешить использование Javascript в Вашем текстовом редакторе. Если Вы используете редактор TinyMCE, то можете найти эти установки в меню Extensions -> Plugin Manager -> Editor — TinyMCE 2.0. Убедитесь, что настройка ‘Code Cleanup on Startup’ поставлена в ‘Off’ и ‘Code Cleanup on Save’ в ‘Never’. Этим Вы обеспечите, что редактор не будет вычищать Ваш добавленный код.

Если Вы используете JCE editor, перейдите в меню Компоненты -> JCE Administration Editor Profiles (Groups) -> Default (или другую группу, которую Вы используете) -> Editor Parameters -> Options. Убедитесь, что опция ‘Allow Javascript’ установлена в ‘Yes’.

[Добавление скрипта к модулю Custom HTML]

Теперь Вам нужно добавить реальный сниппет Javascript в модуль Custom HTML, и назначить этому модулю подходящую позицию модуля. В качестве примера я буду использовать код Google Analytics. Перейдите в Менеджер Модулей (меню Расширения -> Модули) и нажмите кнопку New (Новый). Тип модуля выберите ‘Custom HTML’ (пользовательский HTML). Далее Вы увидите настройку параметров модуля.

Введите в настройках заголовок для модуля, например ‘Google Analytics code’, разрешите модуль, и укажите не показывать заголовок модуля.

Для кода Google Analytics мы назначим модуль на только что созданную позицию ‘endhead’. Это приведет к тому, что сниппет Google Analytics появится сразу перед закрывающим тегом HEAD (). Поскольку Вы не ввели новые позиции модуля в файл XML шаблона, они (новые позиции endhead, topbody, endbody) не появятся в выпадающем списке позиции модуля. Однако это не повод беспокойства: Вы можете просто ввести имя позиции ‘endhead’ прямо в поле ввода.

Напоследок переключите редактор в режим ввода HTML и сделайте copy/paste кода Google Analytics в окно редактирования. Сохраните модуль.

Перезагрузите страничку Вашего веб-сайта, чтобы добавленный сниппет Google Analytics заработал.

[Добавление большего количества сниппетов]

С помощью описанного метода Вы можете добавить столько сниппетов Javascript, сколько хотите. Вы можете управлять порядком появления сниппетов путем изменения порядка появления модулей в Менеджере Модулей. Я считаю этот метод простым в использовании и гибким.

[Словарик]

Сниппет (англ. snippet — фрагмент, отрывок) — программный термин, обозначающий небольшой фрагмент исходного кода или текста, пригодного для повторного использования. Сниппеты не являются заменой процедур, функций или других подобных понятий структурного программирования. Они обычно используются для более лёгкой читаемости кода функций, которые без их использования выглядят слишком перегруженными деталями, или для устранения повторения одного и того же общего участка кода.

Joomla — установка кода чата

Способ 1. Установка через модуль JivoSite

Этот способ подходит для разных версий Joomla.

Вы можете установить модуль JivoSite в вашу CMS для размещения в нем кода чата.

Скачайте модуль для вашей версии Joomla по одной из ссылок:

Для Joomla 1.5: ссылка

Для Joomla 2.5: ссылка

Для Joomla 3.5: ссылка

Для установки модуля откройте в меню раздел Расширения / Extensions и выберите Установка модуля / Install.

Затем загрузите архив с модулем в CMS.

После установки модуля перейдите в раздел Менеджер модулей / Модули, там появится новый модуль JivoSite (если нет, то его можно будет добавить).

В новом модуле вы можете указать ваш id чата, который содержится в коде чата. Вы можете посмотреть его в приложении JivoSite, раздел “Управление” -> Настройки сайта -> Установка. В коде чата >

Также в модуле вы можете включить код для использования функции Регионы, если она у вас уже включена на сайте.

Обратите внимание, что помимо этого в настройках модуля обязательно нужно указать название модуля, отключить отображение заголовка и выбрать необходимую позицию для модуля в шаблоне (можно любую, но она должна относиться к шаблону сайта).

После внесения всех настроек на вашем сайте должна появится форма чата.

Способ 2. Установка кода через менеджер шаблонов

Подходит для CMS Joomla 2.5+

Необходимо зайти в панель управления вашего сайта, нажать на кнопку «Расширения» и выбрать «Менеджер шаблонов».

В появившейся таблице в графе «Шаблоны» необходимо нажать на название шаблона, который вы используете. Возле него стоит звездочка в графе «По умолчанию» и «Сайт» в графе «Область системы».

В панели «Основные файлы шаблона» выбираете «Изменить шаблон главной страницы».

Правильная вставка JAVA SCRIPT и HTML кода в Joomla

Продолжаем наполнять наш сайт материалами, сегодня будем создавать статью под названием Контакты.

Итак, создаем материал под названием Контакты (contact). Копируем текст материала, кроме карты, форматируем и сохраняем статью:

Теперь нам надо вставить Google maps. Существую различные способы вставки стороннего html/javascript-кода на сайты, сделанные на Joomla. Я предлагаю один из самых простых, с использованием расширения Joomla — модуля mod_specialhtml_J15.

Теперь идем в Расширения — Установка и удаление. Нажимаем на кнопку Обзор, выбираем модуль mod_specialhtml_J15.zip и нажимаем на кнопку Закачать файл

В 5 уроке мы говорили, что модуль отвечает за то, в каком месте сайта или страницы будет отображаться информация. Значит для его использования нам необходимо модуль создать и указать, где его отображать.

Для этого мы идем в Расширения — Модули:

и нажимаем на кнопку Новый:

Ставим галочку у Special HTML и нажимаем кнопку Следующая:

На странице настройки модуля указываем следующие параметры:

  • Название, например — Карта Google.
  • Отобразить заголовок — Нет.
  • Включен — Да.
  • Положение — map1. Эту позицию надо набрать вручную. Joomla предлагает в списке те позиции, которые у нее есть в шаблоне, но мы будем вставлять этот модуль в статью, и поэтому положение для него мы определяем сами. (Подробнее об этом мы будем говорить в следующем уроке).
  • В параметрах модуля, на вкладке HTML/JavaScript нам надо указать код нашей карты.

Чтобы получить код карты, мы идем на http://maps.google.com/. В строке поиска набираем название фирмы. Появляется карта с местоположением нашей фирмы, нажимаем на кнопку Ссылка и видим HTML-код для добавления на сайт:

Копируем этот код, вставляем его в параметры нашего модуля и сохраняем:

Теперь идем в Статьи — Статьи, выбираем нашу статью Контакты и открываем ее для редактирования. Встаем курсором мыши в то место, где должна быть наша карта и пишем следующую команду:

Таким образом, мы создали модуль с кодом карты (map1), а в статье указали, где этот модуль надо отобразить (loadposition). Сохраняем нашу статью. В следующем уроке мы создадим меню и увидим, как выглядят страницы нашего сайта, а пока подведем итог этого урока:

Чтобы вставлять в Joomla html/JavaScript-код, необходимо:

  • Создать модуль (в Расширения — Модули), выбрать тип (Special HTML), дать модулю название, задать имя его положения и вставить сам код.
  • На странице встать курсором в место, куда будет вставлен модуль и написать команду .

Как вставить скрипт в Joomla

Многие сталкиваются с тем, что не могут вставить скрипты в материал, например код Яндекс.Карты. Дело в том, что визуальные редакторы Joomla специально обрезают сторонний код.

Но проблему решить довольно не сложно. Для этого надо скачать плагин Sourcerer (текущая версия 4.4.9) — Скачать

После установки проверьте в менеджере плагинов, что он включен. теперь когда вы будете открывать страницу создания материала под редактором появиться кнопка Вставить код (кнопка будет везде где есть редактор)

При нажатии на которую откроется всплывающее окно с редактором, куда можно добавить код.

Как заметили в редакторе код находится между тегами , поэтому можно поместить внутрь тегов необходимый вам код и вставить в текстовый редактор, без использования кнопки Вставить код.

Как вставить скрипт в Joomla

Особо проблем нет с CSS , пример

$doc =& JFactory::getDocument();
$doc->addStyleSheet(‘modules/mod_gridmy/css/reset.css’);
$doc->addStyleSheet(‘modules/mod_gridmy/css/myTheme.css’);
$doc->addStyleSheet(‘modules/mod_gridmy/css/defaultTheme.css’);
$doc->addStyleSheet(‘modules/mod_gridmy/css/960.css’);

а вот с JS были проблемки, внедрял во внутрь html

Подробный материал находил.

Есть еще вариант кода

Не проверял как работает и вставляется где

Подключение файлов скриптов в Joomla

  • $filename — название подключаемого скрипта (я для примера взял calendar.js);

  • $path — путь к файлу скрипта (по умолчанию media/system/js/). Здесь стоит отметить, что если путь не начинается с http, то он будет браться относительно корня сайта и первый слеш нужно не ставить.
  • $mootools — подключать или не подключать mootools. По умолчанию стоит в true, т.е. подключается.

Так же для того что бы подключить отдельно mootools можно использовать такую конструкцию:

Скрипты подключается к документу в области, где в шаблоне стоит

Так же файлы скриптов и сами скрипты можно подключать следующим образом:

Подключение файлов стилей в Joomla

Осуществляется аналогичным образом, что и скриптов. За исключение того что в последнюю переменную передаются дополнительные атрибуты, если они нужны, в виде массива.

еще есть такой вариант…

После того как я написал урок Библиотека jQuery User Interface. Меня очень часто просили рассказать о том как подключить jquery к сайтам написанным на движке Joomla. Так как вопрос актуальный я решил написать небольшую инструкцию по интеграции библиотеки jquery на Joomla.

Как известно в Joomla все построено на основе шаблонов, а значит и начать искать, куда нам подключить jQuery стоит именно с них.

Для начала необходимо определить какой именно шаблон используется. Для этого необходимо перейти в админку сайта. В верхней панели, во вкладке расширения, выбираем менеджер шаблонов и видим примерно то же самое, что на скриншоте.

Напротив используемого шаблона стоит звездочка. Запомнили название? Отлично, теперь нужно перейти по следующему адресу: Ваш сайт/templates/название шаблона/index.php. Это и есть основной файл шаблона, который склеивает все части шаблона в единый сайт.

В этом файле нужно найти место, где подключаются таблицы стилей. Выглядеть все это должно примерно следующим образом:

1 «stylesheet» href= «/css/editor.css» type= «text/css» />
2 «stylesheet» href= «/css/template.css» type= «text/css» />

На основе подключения этих таблиц, можно подключить и наш файл jQuery. Должно получиться что-то схожее с этой записью:

Также незабываем, скопировать сам jquery файл в директорию, которую мы указали, в данном случае это: Ваш сайт/templates/название шаблона/js/jquery.js.

Самое главное сделано, но у вас наверняка возникнут вопросы, а где писать сам js код? Поэтому для примера я покажу вам написания простого скрипта с использованием этой библиотеки.

Заходим в менеджер материалов выбираем любую статью и с помощью редактора html кода встроенного в Joomla начинаем писать наш скрипт.

Я напишу простой скрипт, который по нажатию на ссылку будет скрывать часть материала. Для того чтобы начать писать скрипт необходимо для удобства задать идентификаторы кнопки, и той области которую мы будем скрывать.

01 p id = ‘testof’ >Скрыть дополнительную информацию p >
03 p >Версии windows 7: p >
05 ul id = ‘list’ >
06 li >Windows Starter li >
07 li >Windows Home Basic li >
08 li >Windows Pro li >
09 li >Windows Ultimate li >

Так разметка готова, теперь то самое интересное. Чуть ниже начинаем писать наш скрипт:

01 script type = «text/javascript» >
02 $(document).ready(function() <
04 $(‘#testof’).toggle(function() <
05 $(‘#list’).hide();
06 $(this).html(‘Показать дополнительную информацию’);>, function() <
07 $(‘#list’).show();
08 $(this).html(‘Скрыть дополнительную информацию’);>);

Вот и все наш скрипт готов, и отлично работает.

Кстати часто бывают такие случаи, когда html редактор, который стоит в Joomla, обрезает теги скрипт и в итоге нечего не работает. Для таких случаев можно просто выключать редактор в менеджере плагинов.

Плагины которые необходимо выключить подчеркнуты в скриншоте.

После того как плагины отключены, необходимо в разделе сайт в общих настройках выставить по умолчанию No Editor.

После выполнения этих действий ваш редактор будет выключен, и вы сможете спокойно работать со скриптами jQuery.

Кстати такая же проблема часто преследует пользователей, которые пытаются установить Google adsense на Joomla сайт. Через редактор закидывается скрипт с блоком рекламы, а когда сохраняешь, нечего не показывается. Но все решается, когда отключаешь редактор.

Это офиц. поддержка JOOMLA

Adding JavaScript

From Joomla! Documentation

JavaScript (also known as ECMAScript) is a scripting language primarily used in client-side web site development to extend and enhance an end-user’s experience. Joomla provides developers with easy-to-use mechanisms to include JavaScript in their extensions using existing API methods.

There are a number of methods for including JavaScript in your Joomla extensions; some of these are described below.

Contents

Usage

There are three methods for embedding JavaScript into your code using the Joomla API; JDocument::addScriptDeclaration, JDocument::addScript and script. These methods should be called either in your component’s View class ( /views/ /view.html.php) or template script ( /views/ /tmpl/ .php or in the case of a module, in its template script ( /tmpl/ .php).

Inline JavaScript

Blocks of JavaScript code can be declared directly within a component or module’s display template using the JDocument class’ addScriptDeclaration method:

External JavaScript

Alternatively, you may wish to separate your JavaScript into a separate file. Separating your JavaScript into an external file can make your template code easier to read especially if the JavaScript is lengthy or complex.

There are two ways to include a JavaScript file using the Joomla API. The first involves using the JDocument class’ addScript method:

The second uses the JHTML class’ script method:

API has changed in 3.x, so the second parameter cannot be a string. If you really need to use this method, you must include the absolute link to your javacript file:

Description

The Joomla API’s JDocument::addScriptDeclaration, JDocument::addScript and script methods embed JavaScript into Joomla’s index.php via the jdoc head tag:

Using the JDocument::addScript or script methods to embed JavaScript includes would result in the index.php rendering the following HTML:

Calling the class method JDocument::addScriptDeclaration would render the following HTML:

Using these methods is highly recommended as it clearly differentiates another scripting language (JavaScript) from the main PHP code, ensures all JavaScript is correctly embedded between the tags and, in the case of JDocument::addScript and JHTML::script ensures that a JavaScript file is included only once (I.e. there is no .js file duplication).

Using a JavaScript Framework

A Javascript framework provides developers with generic functionality for handling various coding tasks in a familiar, consistent and platform-independent way. A framework enables the developer to forget about the intricacies of implementing a certain function in different web browsers and focus on the requirements of the software.

Two Javascript Frameworks are provided as part of Joomla 3.x; jQuery and Mootools. jQuery is a newly introduced framework which integrates with Joomla’s new Bootstrap HTML framework; Mootools is Joomla’s legacy Javascript library which is now superseded by jQuery and is included for backwards compatibility with 3rd party extensions.

In nearly all cases you should use a framework when developing Javascript in your extensions or templates and including one is very simple with Joomla’s API.

Joomla 3.x jQuery

Please see the guide on Javascript Frameworks in Joomla 3.x for information about including a framework in Joomla 3.x

Joomla 1.5/2.5 Mootools

Unless you are maintaining Javascript code which leverages Mootools or you are developing an extension for Joomla 2.5 or earlier it is recommended you use jQuery instead.

Firstly, you will need to include the Mootools code in your extension. To include the Mootools framework in your extension, you add the following code to your view.html.php or tmpl file:

The above code results in the same outcome as the similar jQuery framework statement; that is it ensures Mootools is included correctly and only once.


Then using Mootools is almost identical to jQuery:

More information about Mootools is available at http://mootools.net/. For API documentation, visit http://mootools.net/docs/core.

Important notes for 3rd party developers

If you are creating a custom template override or extension that needs to add a custom JS file, make sure to add important dependencies such as Jquery or Mootools before your custom JS files. JS framework fiels msut be always loaded before any other files to make sure they get executed the first, otherwise other files that load before the frameworks they need are likely to end in JS exceptions.

Some templates like Protostar or Beez insert all the dependencies you need using functions like

To load Jquery + Bootstrap but your should not relay in this fact on your extensions or custom templates overrides, always make sure your extension or custom override load the dependencies you need before the template does it, I will explain why later:

For example if you got a custom template override that need to insert a JS file with some Jquery scripts that does fancy things on all the pages where that template override is being used. In that case you should declare this on the top section of that override file:

If you are developing a 3rd party extension that you plan to put on the Joomla! extension directory you should do something like this:

The conditional clause to decide whether to add or not the extension resources is strongly encouraged and considered a good practice because it gives flexibility to 3rd party developers who don’t want to use your extension resources and use custom/modified files without having to battle with Joomla! using workarounds and hacks to be able to remove your original extensions resources in order to avoid duplicates and conflicts.

Ask me why

If you check the source code of the index.php from the Protostar template, you can see that the statements

is added way before the statement

this can make you think that the framework files and your 3rd party files using methods like

will be added in the right order at the right spot, but that is not the case, because extension files and template override files are processed first and the index.php file of your current template is processed the last. This will cause that your custom JS files get inserted first and the framework files inserted from the template get inserted after.

This happens because the Joomla API (such as $doc->addScript) uses an array to store the JS files paths and they get rendered in the document in the same order they where inserted into that array (FIFO stack), also once a file path is inserted on the array and another API call tries to insert the same file this action is ignored to avid duplicates, it also means that the order of the files is not altered when the same files is attempted to be inserted several times.

Having said that doing this

at your custom templates overrides and extension, is required and does not cause harm or conflict with the call

Joomla — установка кода чата

Способ 1. Установка через модуль JivoSite

Этот способ подходит для разных версий Joomla.

Вы можете установить модуль JivoSite в вашу CMS для размещения в нем кода чата.

Скачайте модуль для вашей версии Joomla по одной из ссылок:

Для Joomla 1.5: ссылка

Для Joomla 2.5: ссылка

Для Joomla 3.5: ссылка

Для установки модуля откройте в меню раздел Расширения / Extensions и выберите Установка модуля / Install.

Затем загрузите архив с модулем в CMS.

После установки модуля перейдите в раздел Менеджер модулей / Модули, там появится новый модуль JivoSite (если нет, то его можно будет добавить).

В новом модуле вы можете указать ваш id чата, который содержится в коде чата. Вы можете посмотреть его в приложении JivoSite, раздел “Управление” -> Настройки сайта -> Установка. В коде чата >

Также в модуле вы можете включить код для использования функции Регионы, если она у вас уже включена на сайте.

Обратите внимание, что помимо этого в настройках модуля обязательно нужно указать название модуля, отключить отображение заголовка и выбрать необходимую позицию для модуля в шаблоне (можно любую, но она должна относиться к шаблону сайта).

После внесения всех настроек на вашем сайте должна появится форма чата.

Способ 2. Установка кода через менеджер шаблонов

Подходит для CMS Joomla 2.5+

Необходимо зайти в панель управления вашего сайта, нажать на кнопку «Расширения» и выбрать «Менеджер шаблонов».

В появившейся таблице в графе «Шаблоны» необходимо нажать на название шаблона, который вы используете. Возле него стоит звездочка в графе «По умолчанию» и «Сайт» в графе «Область системы».

В панели «Основные файлы шаблона» выбираете «Изменить шаблон главной страницы».

Как добавить скрипт в начало списка скриптов в Joomla 2.5

0 Andrew [2013-07-16 21:54:00]

Я использую $doc->addScript в верхней части файла шаблона, чтобы добавить мой сценарий (и jquery ) в голову, но компоненты добавили свои скрипты раньше.

Могу ли я управлять этой выходной очередью?

4 ответа

1 Robert [2014-09-24 12:01:00]

Я пишу это для Joomla 3.3.x

К сожалению, это невозможно сделать без взлома основных файлов (не делайте этого !!) или использовать собственную реализацию для добавления javascript.

Если вы посмотрите на [joomlaroot]\libraries\joomla\document\document.php → строка 446, где определена функция addScript, вы увидите, что _scripts-Array в JDocument является ассоциированным. Массив, где ключ — это URL-адрес скрипта.

Если вы не хотите переписывать joomla-методы, добавляющие скрипт и каждое установленное расширение в вашей системе, вы должны добавить свои javascripts в шаблон после .

Вы можете написать системный плагин, который использует событие » onBeforeCompileHead » для изменения порядка документов, но я думаю, что это было бы слишком много.

Я не знаю, почему joomla не просто использует атрибут sort в addScript(), который был бы так необходим. Также могут быть реализованы сценаристские зависимости. Даже WordPress может это сделать.

EDIT: то, что вы МОЛИТЬ, — это использовать JDocument :: addCustomTag(), чтобы добавить ваши скрипты ПОСЛЕ joomla-скриптов. Потому что пользовательские теги отображаются после всех скриптов. Хотя это не влияет на порядок скриптов, уже загруженных другими компонентами.

1 d.h. [2014-09-24 13:49:00]

Для этого вам не нужно использовать цикл foreach.

Для Joomla 2.5: в ваших шаблонах index.php добавьте следующее, если вы хотите добавить скрипт, пример показывает включение jquery:

Для Joomla 3.3: это может работать так же, как и для Joomla 2.5, поскольку функции getHeadData() и setHeadData() все еще присутствуют. См. Документацию по API: http://api.joomla.org/cms-3/classes/JDocumentHTML.html

Это можно сделать, но это немного сложно. Следующий код основан на https://gist.github.com/AmyStephen/5971447

Другими словами, сценарии хранятся в виде массива, и вам необходимо его изменить.

0 DACrosby [2013-07-16 22:03:00]

Вам нужно будет изменить файл index.php вашего шаблона. Ниже представлен раздел главы Joomla:

Просто переместите $doc->addScript после этого (или до него), чтобы установить, какие нагрузки сначала. Файлы загружаются сверху вниз, поэтому все, что сверху, загрузится первым.

Использование собственного скрипта и интеграция с Joomla 1.6-2.х

Сегодня решил поделиться опытом подключения стороннего PHP-скрипта с интеграцией в Joomla 1.6-2.5 версий. Для простоты изложения приведу реальную задачу, которую пришлось решать написанием ряда скриптов и в дальнейшем их связать между собой. Несмотря на некоторые недостатки, которые имею место быть, я все же изложу свои практические решения.

Задача
Создать калькулятор некого продукта на базе фреймворка Jquery и связать с порталом, который работает на базе ядра Joomla 1.6. Реализовать возможность использования калькулятора только для зарегистрированных и авторизованных пользователей портала.

Решение
Поставленная задача при знании дела решается несложно, при условии, что известно модель и варианты ее решения.

1) Сначала я написал непосредственно скрипт калькулятора в коде HTML+JavaScript. В результате получился какой-то целевой файл calc.php (не забудьте назначить 755 атрибуты прав доступа к файлу скрипта). Согласно структуры каталогов Joomla я решил не помещать скрипт в какой-то существующий каталог, а создать новый, скажем, CALCULATOR и разместил его в корневом каталоге портала на базе Joomla:
—Корневой_каталог_портала
|
| —- CALCULATOR
|— calc.php
| —- components
| —- libraries
| —- .
| —- templates
| — .
| — index.php

2) Далее нужно позаботиться о коде, который будет перед запуском калькулятора проверять статус пользователя портала. Конечно же в этом случае нет смысла писать кучу кода для прямого доступа к базе банных портала и проверять по базе активные сессии (конечно же при условии, что сессии хранятся в базе данных портала). Нам известно, что существует структурированное описание Joomla API, которое четко описывает классы, методы и переменные, которые при соблюдении определенных правил можно использовать в собственных скриптах, подобно calc.php.

В моем случае необходимо позаботиться об использовании встроенной функции проверки статуса и, по возможности, идентификации авторизованного пользователя. Выясняем, что нам подходит хорошо для решения задачи класс JFactory. Приведу теперь сразу код полноценного скрипта оценки статуса текущего пользователя. Этот код будет заключен в отдельный файл, checkstatus.php.

3) Теперь возникает вопрос куда можно поместить созданный php-скрипт checkstatus.php. Чтобы скрипт корректно работал, его надо корректно разместить в каталогах с Joomla. Существует несколько вариантов размещения такого самописного файла, равно как и вообще создания приложений для Joomla. Начиная с версии Joomla 1.6, система самостоятельно просматривает новые файлы модели и корректно отдает им запрошенные переменные и функции ядра. Самое простое и корректное размещение нашего файла будет в корне портала с Joomla. Важно соблюсти описание служебных переменных, объявления классов и их использования с нотацией специальных переменных системы Joomla, например, DS (directory separator, т.е. разделитель каталогов в описании пути — знак «/»).

4) Теперь остается последний этап интеграции с ранее созданным скриптом калькулятора, лежащего вне модели Joomla. Для этого в начале скрипта calc.php прописываем функцию принудительного использования скрипта проверки статуса пользователя .

5) Теперь при попытке пользователя вызвать скрипт посредством прямого указания URL: http://s-i-t-e.ru/CALCULATOR/calc.php первоначально будет вызван скрипт проверки статуса пользователя. Если пользователь — гость, то для него сеанс дальнейшей загрузки сценария калькулятора будет прерван функцией die(). Данный момент не очень хороший, т.к. в этом случае гость будет полностью лишен возможности просматривать остальное содержимое портала. Для решения моей задачи данного метода вполне достаточно, т.к. я использую вызов калькулятора в модальном всплывающем окне (плагин Modalazer).

Если у вас есть вопросы по данной, то создайте тему в моем форуме и я постараюсь ответить.

Как вставить код PHP и JavaScript на страницу. Джумла режет код

Иногда возникает потребность установить на страницах сайта joomla дополнительные скрипты на php, ил js. Конечно можно пойти в настройки редактора и впрофиле администратора указать в настройках, чтобы редактор не вырезал код скриптов. Но не всегда это помогает.

Есть отличный плагин под названием Sourcerer. Скачать его можно здесь http://extensions.joomla.org/extension/sourcerer. Он отлично выполняет функцию по установке скриптов прямо в тело страницы.

У меня несколько раз на практике встречались случаи, когда приходилось с помощью этого плагина устанавливать формы обратной связи. Плагин действительно экономит время и упрощает работу.

Как установить плагин для скриптов

Переходим на страницу разработчика и скачиваем данное расширение. Пользователям joomla предлагается два варианта на выбор — платный и бесплатный. Для наших целей вполне подойдет бесплатный плагин. В платном варианте просто немножко больше функций.

Устанавливаем через менеджер расширений джумла. Заходим в раздел «Менеджер плагинов» и активируем два плагина. Обязательно зайдите в раздел «Плагины» и включите эти два расширения. В некоторых случаях после установки по умолчанию они отключены.

Все просто. Пять минут и мы можем вставлять скрипты прямо на страницах сайта через административную панель.

Создаем, или открываем материал и вставляем для проверки рабочий скрипт. Перед этим отключаем визуальный редактор прямо здесь в материале и переходим в режим html кода.

Для начала советую использовать стандартное приветствие

Для нас сейчас главное понять, что плагин действительно корректно работает.

Кстати внизу будет кнопочка для вставки кода скриптов. Нажимаем заветную кнопку. Открывается всплывающее окно. В окне между специальными тегами в скобкахи вставляем свой тестовый код.

Снова нажимаем кнопку «Вставить» и сохраняем страницу. Код должен появиться на странице.

В сплывающем окне всегда размещается код примера от плагина. Пускай он вас не смущает. Смело заменяем на свой.

Если нет никаких конфликтов результат работы скрипта должен появиться в окне браузера.

Еще небольшое дополнение к пояснениям. Иногда в статье требуется просто разместить пример кода. Допустим мы пишем статью о программировании и нам надо это дело продемонстрировать. Для осуществления такого действия отключаем теги через кнопку «Переключение тегов source».

Ну, что же теперь нам под силу вставлять различные скрипты в любой материал.

Топ-пост этого месяца:  Как использовать CSS формы в своем веб-дизайне
Добавить комментарий