Подключить свои классы и методы в Joomla?

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

Это можно сделать самыми различными способами, но не все будут верными. Мы рассмотрим некоторые из них и опишем нюансы этих вариантов

1 способ — через загрузчик jimport

Это наиболее рекомендованный вариант. Используем встроенную возможность подключения файлов через функцию jimport.

Создайте новую директорию внутри «<корень сайта>/libraries». Допустим это будет библиотека для работы с изображениями. Тогда назовем директорию «imagelib». Внутри создаем файл, который будет объявлять необходимый функционал. Пусть этот файл будет называться «init.php».

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

// подключение imagelib
jimport('imagelib.init');

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

Еще один маленький минус — не получиться сделать установщик для Joomla 1.5. В весрии 1.6 и выше этот недостаток исправлен (теперь библиотеку можно устанавливать как расширение).

2 способ — через системный плагин

Плагины «прослушивают» систему и когда происходит определенное действие, то  исполняется код плагина. Можно привязать собственный плагин к событию «onAfterInitialise», которое срабатывает сразу после инициализации фреймворка Joomla. Таким образом код плагина будет доступен практически из любой части системы. В теле метода «onAfterInitialise» можно использовать функцию jimport, описанную выше — так код будет чище.

В этом случае недостатком можно считать факт присутствия лишнего плагина в системе и её усложнения.

3 способ — как делать не нужно

Не очень желательно использовать конструкции require, include. Но если уж сильно хочется, то придерживайтесь следующей конструкции.

// подключаем imagelib
require_once ( JPATH_BASE .DS. 'libraries' .DS. 'imagelib' .DS. 'init.php' );

Недостатки тут следующие:

  • нужно учитывать адрес корня сайта и разделитель директории (константы JPATH_BASE и DS )
  • require_once медленнее работает, чем require, а другого удобного способа исключить повторное подключение нет.
  • теряется общая красота кода.

Такой способ приемлем только на уровне загрузки фреймворка, когда еще не объявлен функционал плагинов и jimport. Но это очень редкий и крайний случай.



Подключить свои классы и методы в Joomla? - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.

Блог

Календарь приёма объявлений

Небольшой пример из повседневной практики. Организация меняет реквизиты, и они вступят в силу через  пару недель. На сайте идет приём объявлений и объявления принимаются на несколько месяцев в...

Дырка в com_content

Сегодня у товарища, сайт которого находится на старой  Joomla 1.0.3, была сильная нагрузка на сервере, просматривая логи обнаружил не вежливый запрос такого порядка: http://сайт/index2...

Лечим вирус на сайте

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

Troj/JSRedir-MH

Снова грянул гром зарежения сайтов новым вирусом  Troj/JSRedir-MH.  И так в коротко по вирусу Troj/JSRedir-MH. Вирус или троян куда интереснее чем свои предшествиники, тепер...

Доработка расширения для рассылки Send Email JK

Сегодня поделюсь немного интересной информацией для владельцев сайтов собранных ан joomla.  Рано и поздно возникает задача подписки и рассылки информации с сайта, это может быть разная постановка зада...

Привет Ie 10 регулярка

И вот и мне пришлось столкнулся с проблемами перехода на win 8 в придачу с ie 10, некоторых постоянных пользователей моих сайтов. На многих сайтах  имеющих раздел по приёму объявлений, использ...

Kunena заменяем ссылку на профиль пользователя

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

Работает на Kunena - зачем на каждой странице?

  Все у кого стоит форум kunena мешает надпись с двумя ссылкам внизу форума "Работает на Kunena". Сея надпись висит на каждой странице форма, а также страница разработчиков содержит множество вн...

Kunena избавимся от лишних quote

Для тех кто действительно делает сайт для людей, моя следующая заметка. Расскажу вам, как избавиться от лишних quote в постах на форуме kunena. У меня несколько тематических сайтов с нормальной посеща...

Kunena решаем проблему с пропажей аватаров

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

Джомлавикам

Обработка параметров расширений joomla

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

Кunena крамсаем шаблон

1. В папке \components\com_kunena\template\ваш_шаблон\ находим файл template.xml и вставляем в него такой кусок (чтобы была возможность выбора показывать это поле или нет): <param name="l...

Подключить свои классы и методы в Joomla?

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

3 новых полезных класса в Joomla 2.5

В платформе Joomla 11.3 разработчики добавлил несколько полезных новых классов для разработчиков. Рассмотрю некоторый из них - JGrid (для построения HTML таблиц), JWebClient (для получения информац...

Репозиторий файлов на Joomla средствами Apache

Создадим две вложенные директории /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести соответствующие правки в дальнейшем. ...