RSS   Twitter   Copiny   Copiny
Нашел ошибку? 

Выдели фрагмент текста с ошибкой или неточностью и нажми Ctrl+Enter!

Как подключить свои библиотеки/функции в Joomla?

Использование функции jimport

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

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

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

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

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

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

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

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

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

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

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

Как и куда что писать подробнее можно прочитать в разделе по созданию плагинов Joomla.

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

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

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

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

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

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

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

Смотрите также:
Комментарии (3) Добавить комментарий
  • Сергей
    Сергей
    15 Июня 2011, 22:49
     ↑  -1  ↓     ответ

    "Еще один маленький минус — не получиться сделать установщик для Joomla 1.5." - вот это можно "разжевать" подробнее...

    То есть имеется ввиду, что файл не будет подхватываться если делать quickstart?

    • smet.denis
      smet.denis (админ)
      16 Июня 2011, 13:37
       ↑  +4  ↓     ответ

      Не совсем понял что такое "quickstart".

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

  • ilianna.ru
    ilianna.ru
    25 Июля 2013, 23:17
     ↑  0  ↓     ответ

    Благодарю!

Оставить комментарий




* обязательно для заполнения

1 введенный почтовый адрес используется только для обратной связи при ответах в комментариях и сервиса gravatar.com
.