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

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

Создание произвольного плагина

Вызов системных событий, собственная группа плагинов

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

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

Создание установочного файла

Как и для любых других расширений Joomla, установочный файл - это архив *.zip или *.tar.gz. В любом случае в архиве должен быть валидный XML, иначе установка будет не возможна. Ниже можно увидеть пример этого файла для поискового плагина

<?xml version="1.0" encoding="iso-8859-1"?>
<install version="1.5" type="plugin" method="upgrade" group="search">
    <name>Categories searchbot</name>
    <author>Joomla! Project</author>
    <creationDate>November 2005</creationDate>
    <copyright>(C) 2005 Open Source Matters. All rights reserved.</copyright>
    <license>GNU/GPL</license>
    <authorEmail>admin@joomla.org</authorEmail>
    <authorUrl>www.joomla.org</authorUrl>
    <version>1.1</version>
    <description>Allows searching of Categories information</description>
    
    <files>
        <filename plugin="categories.searchbot">categories.searchbot.php</filename>
    </files>
    
    <params>
        <param name="search_limit" type="text" size="5" default="50" label="Search Limit" description="Number of search items to return"/>        
    </params>
</install>

К важным моментам тут относятся

  • group="search"
    Группа к которой принадлежит плагин. Она совпадает с названием директории, где будет располагаться файл. Например для поисковых плагинов будет использовать "<siteroot>/plugins/search".
  • <files><filename></filename></files>
    Список файлов, которые будут скопированы при установке.
  • <params>
    Параметры, который будут доступны при настройке плагина.
  • method="upgrade"
    Параметр в теге <install> явно указывает что при установке не нужно удалять старые файлы, а только переписать их новыми из архива.

Остальные свойства очевидны.

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

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

<siteroot>/plugins/mypugins

Исполняемый код

Joomla использует для реализации паттерн Наблюдатель (Observer). Лучше придерживаться именно такой реализации.


// запрет прямого доступа
defined( '_JEXEC' ) or die( 'Restricted access' );

// Импортируем зависимую библиотеку
jimport('joomla.plugin.plugin');

class plg<PluginGroup><PluginName> extends JPlugin
{
    /**
     * Конструктор класса
     */
    function plg<PluginGroup><PluginName>( &$subject )
    {
        // обязательно необходимо вызвать родительский конструктор
        parent::__construct( $subject );

        // загрузка параметров плагина
        $this->_plugin = JPluginHelper::getPlugin( '<GroupName>', '<PluginName>' );
        $this->_params = new JParameter( $this->_plugin->params );
    }
    
    /**
     * Методы плагина - это события, которые будут вызываться автоматически.
     */
    function <EventName>()
    {
        // Код плагина
        return true;
    }
}

Используем плагин в своем коде

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

Произвольный вызов события плагинов выглядит следующим образом

JPluginHelper::importPlugin('<PluginGroup>');
$dispatcher =& JDispatcher::getInstance();
$results = $dispatcher->trigger( '<EventName>', <ParameterArray> );

Массив параметров отправлять не обязательно. После выполнения этого кода, все активные плагины выбираются из общего списка, выстраиваются в порядке приоритета (он выбирается в панели управления, Менеджер плагинов, столбец "порядок") и в каждом из них вызывается метод имя которого совпадает с названием события. Метод в виде аргументов получит массив <ParameterArray>, каждый элемент которого будет новым аргументом.

Смотрите также:
Комментарии (58) Добавить комментарий
  • Tuzemec
    Tuzemec
    16 Марта 2012, 11:32
     ↑  0  ↓     ответ

    Используем плагин в своем коде/

    А вот как можно использовать плагин, действие плагина способом вставки в код определенной команды, типа: {имя_плагина} ???

    • Tuzemec
      Tuzemec
      16 Марта 2012, 11:34
       ↑  +7  ↓     ответ

      Есть RUководство как это реализовывается?

      • Денис
        Денис
        16 Марта 2012, 12:10
         ↑  0  ↓     ответ

        Получаем текст документа и в нем str_replace или preg_replace

        • Tuzemec
          Tuzemec
          16 Марта 2012, 15:48
           ↑  +5  ↓     ответ

          Блин. Начинающему прям понятно всё стало! )))

          Ну конечно же! А я то думаю откуда ветер дует и куда он так спешит. А оно то оказалось! В сторону правой коленки южно-американского дерева дуб кленового соцветия preg_replace! Всё пойду сдаваться санитарам! =))))

  • Oleg
    Oleg
    30 Августа 2012, 15:46
     ↑  0  ↓     ответ

    Не запускается и все тут. В чем отличия создания плагинов к joomla 2.5?

  • Кирилл
    Кирилл
    26 Декабря 2012, 21:57
     ↑  +3  ↓     ответ

    читал, но ни чего не понял, помогите

    function plg<PluginGroup><PluginName>( &$subject )

    1) не понял откуда берется значение $subject?

    2) как плагин знает когда ему сработать?

  • Andrey
    Andrey
    04 Августа 2014, 10:23
     ↑  0  ↓     ответ

    В общем потребовалось поработать с этим мамонтом версии 1.5

    Конкретно по статье: КГ/АМ

    Ничего не написано конкретного, на других сайтах есть гораздо более подробные инструкции.

  • Сергей
    Сергей
    13 Мая 2016, 13:17
     ↑  0  ↓     ответ

    Я научился делать плагины для Joomla 3 и сейчас продаю несколько плагинов , благодаря курсу "Создание расширений для Joomla скачал его здесь infosklad.org/threads/webformyself-joomla-professional-sozdanie-rasshirenij-dlja-joomla.16397/ очень рекомендую кто хочет заниматься разработкой плагинов и дополнений

    • Серега, друг
      Серега, друг
      25 Мая 2018, 18:12
       ↑  0  ↓     ответ

      Нашел видео-курс этого автора на торренте, бесплатно.

  • priamax website
    priamax website
    11 Мая 2017, 00:21
     ↑  0  ↓     ответ

    I do not even know how I ended up here, but I thought this post was great.

    I do not know who you are but definitely you are going to a famous blogger if

    you aren't already ;) Cheers!

  • http://priamaxpills.org/
    http://priamaxpills.org/
    11 Мая 2017, 00:28
     ↑  0  ↓     ответ

    Thank you for helping out, great information.

  • coconut oil or
    coconut oil or
    25 Ноября 2019, 14:18
     ↑  0  ↓     ответ

    Simply want to say your article is as amazing. The clearness in your publish is just excellent and that i can think you are knowledgeable on this subject.

    Well with your permission allow me to grasp your RSS feed to stay up to date

    with drawing close post. Thanks a million and please keep up the enjoyable work.

  • plenty of fish dating site
    plenty of fish dating site
    26 Ноября 2019, 11:35
     ↑  0  ↓     ответ

    What's up Dear, are you in fact visiting this website daily, if so then you will without doubt obtain pleasant knowledge.

  • Antoinette
    Antoinette
    23 Февраля 2021, 00:18
     ↑  0  ↓     ответ

    I was curious if you ever considered changing

    the page layout of your site? Its very well written; I love what youve got to say.

    But maybe you could a little more in the way

    of content so people could connect with it better. Youve got an awful

    lot of text for only having one or two images.

    Maybe you could space it out better?

  • Dwight
    Dwight
    09 Марта 2021, 13:56
     ↑  0  ↓     ответ

    Great information. Lucky me I came across your blog by chance (stumbleupon).

    I've saved it for later!

  • wpfikds
    wpfikds
    22 Мая 2021, 18:26
     ↑  0  ↓     ответ

    Создание произвольного плагина / Создание плагинов .:. Документация Joomla! CMS

    [url= gw631z10s5bp33be779jj7qietu118h2s.org/ ]uwpfikds[/url]

    <a href="/ gw631z10s5bp33be779jj7qietu118h2s.org/ ">awpfikds</a>

    wpfikds gw631z10s5bp33be779jj7qietu118h2s.org/

  • http://maps.google.com.bd/url?sa=t&url=http://www.whatsmycarworth.co.uk/
    http://maps.google.com.bd/url?sa=t&url=http://www.whatsmycarworth.co.uk/
    03 Сентября 2021, 23:42
     ↑  0  ↓     ответ

    ?i! I know thіs is somewhаt off topic ?ut І ?as wondering which blg platfortm arе you using

    for this site? ?'m gettіng sick aand tired ?f Wordpress be?ause I'v? haad ?roblems

    with hackers ?nd I'm ?ooking аt options foг another platform.

    І wuld be fantastic if you cou?d ?oint mе inn t?? direction of a go?d platform.

  • tinyurl.com
    tinyurl.com
    26 Марта 2022, 15:09
     ↑  0  ↓     ответ

    My partner and I stumbled over here by a different page and thought I may as well check things out.

    I like what I see so now i'm following you. Look forward to

    looking over your web page again.

  • http://tinyurl.com
    http://tinyurl.com
    27 Марта 2022, 14:08
     ↑  0  ↓     ответ

    You are so interesting! I don't think I've read a single

    thing like that before. So nice to discover someone with a few original thoughts on this

    topic. Really.. thank you for starting this up. This web site is one thing

    that's needed on the internet, someone with a little

    originality!

  • http://tinyurl.com/ycb5up9z
    http://tinyurl.com/ycb5up9z
    28 Марта 2022, 08:40
     ↑  0  ↓     ответ

    Hello everybody, here every one is sharing these know-how, thus it's fastidious to read

    this web site, and I used to visit this web site all

    the time.

  • tinyurl.com
    tinyurl.com
    28 Марта 2022, 15:03
     ↑  0  ↓     ответ

    I simply couldn't leave your web site prior to suggesting that I extremely enjoyed the usual information a person supply for your guests?

    Is going to be again frequently in order to check up on new posts

  • tinyurl.com
    tinyurl.com
    28 Марта 2022, 22:56
     ↑  0  ↓     ответ

    Having read this I thought it was very informative. I

    appreciate you finding the time and effort to put this

    content together. I once again find myself personally spending a significant amount

    of time both reading and leaving comments. But so what, it was still worth it!

  • cheap flights
    cheap flights
    02 Апреля 2022, 20:23
     ↑  0  ↓     ответ

    Whoa! This blog looks exactly like my old one! It's on a entirely different subject but it

    has pretty much the same layout and design. Superb choice of colors!

  • cheapest flights
    cheapest flights
    03 Апреля 2022, 18:54
     ↑  0  ↓     ответ

    Nice post. I was checking constantly this weblog

    and I am impressed! Very useful information particularly the remaining part :) I deal

    with such info a lot. I used to be seeking this particular

    information for a very lengthy time. Thanks and good luck.

  • cheapest airfare possible
    cheapest airfare possible
    04 Апреля 2022, 23:43
     ↑  0  ↓     ответ

    What's up to every body, it's my first pay

    a visit of this webpage; this web site consists of amazing and really good material designed

    for visitors.

  • flight search
    flight search
    05 Апреля 2022, 05:17
     ↑  0  ↓     ответ

    I'm gone to tell my little brother, that he should also pay a visit this blog on regular

    basis to obtain updated from latest information.

  • discount airline tickets
    discount airline tickets
    06 Апреля 2022, 08:32
     ↑  0  ↓     ответ

    Wonderful article! This is the type of info that should be shared around

    the internet. Shame on the seek engines for now not positioning this put up

    higher! Come on over and discuss with my site .

    Thank you =)

  • discount airline tickets
    discount airline tickets
    06 Апреля 2022, 19:09
     ↑  0  ↓     ответ

    I was suggested this website by my cousin. I am not sure whether this post is written by him as nobody else know such

    detailed about my difficulty. You're incredible!

    Thanks!

  • gamefly
    gamefly
    07 Апреля 2022, 06:37
     ↑  0  ↓     ответ

    Good way of explaining, and good article to take information concerning my presentation focus, which i am going to present in institution of higher education.

  • gamefly
    gamefly
    11 Апреля 2022, 01:35
     ↑  0  ↓     ответ

    I pay a quick visit each day a few web sites and blogs to read posts, but this

    blog presents feature based articles.

  • tinyurl.com
    tinyurl.com
    10 Мая 2022, 09:03
     ↑  0  ↓     ответ

    I'm not sure where you are getting your info, but great topic.

    I needs to spend some time learning much more or understanding more.

    Thanks for magnificent information I was looking for this

    info for my mission.

  • tinyurl.com
    tinyurl.com
    11 Мая 2022, 17:23
     ↑  0  ↓     ответ

    Thanks in favor of sharing such a fastidious thinking, post is nice,

    thats why i have read it entirely

  • tinyurl.com
    tinyurl.com
    17 Мая 2022, 00:00
     ↑  0  ↓     ответ

    You actually make it seem really easy together with

    your presentation but I find this matter to be really something which I believe I might never understand.

    It sort of feels too complicated and extremely large for me.

    I am taking a look forward in your subsequent put up, I'll

    try to get the grasp of it!

  • http://bit.ly/391mfDa
    http://bit.ly/391mfDa
    05 Июня 2022, 04:26
     ↑  0  ↓     ответ

    Excellent website. Lots of helpful info here. I am sending it to several pals ans also sharing in delicious.

    And certainly, thank you for your effort!

  • tinyurl.com
    tinyurl.com
    06 Июня 2022, 19:53
     ↑  0  ↓     ответ

    I know this if off topic but I'm looking

    into starting my own blog and was wondering what all is required to

    get set up? I'm assuming having a blog like yours

    would cost a pretty penny? I'm not very web smart so I'm not 100% sure.

    Any suggestions or advice would be greatly appreciated. Cheers

  • tinyurl.com
    tinyurl.com
    08 Июня 2022, 04:57
     ↑  0  ↓     ответ

    I got this website from my buddy who shared with me concerning this website and now this

    time I am visiting this web page and reading very informative content at

    this place.

  • http://tinyurl.com/2bghz55m
    http://tinyurl.com/2bghz55m
    08 Июня 2022, 10:07
     ↑  0  ↓     ответ

    Thanks for your personal marvelous posting! I quite enjoyed reading it, you could be a great author.I will ensure that I bookmark

    your blog and will come back later on. I want

    to encourage yourself to continue your great posts,

    have a nice evening!

  • tinyurl.com
    tinyurl.com
    12 Июня 2022, 22:55
     ↑  0  ↓     ответ

    Write more, thats all I have to say. Literally, it seems as though you relied on the video to make

    your point. You obviously know what youre talking about, why waste your intelligence on just posting videos to your blog when you could be giving us something enlightening to read?

  • tinyurl.com
    tinyurl.com
    14 Июня 2022, 11:03
     ↑  0  ↓     ответ

    You actually make it appear really easy with your presentation but I to find this topic to be actually something which

    I believe I'd by no means understand. It kind of feels too complicated

    and very huge for me. I'm having a look forward for your next submit, I will try to get the grasp of it!

  • tinyurl.com
    tinyurl.com
    07 Июля 2022, 04:57
     ↑  0  ↓     ответ

    It's impressive that you are getting ideas from this piece of writing as well as from our dialogue made here.

  • http://tinyurl.com/
    http://tinyurl.com/
    11 Июля 2022, 18:38
     ↑  0  ↓     ответ

    Thank you a lot for sharing this with all people you actually recognize what you are talking about!

    Bookmarked. Kindly also talk over with my web site =).

    We may have a hyperlink alternate contract between us

  • tinyurl.com
    tinyurl.com
    15 Июля 2022, 10:40
     ↑  0  ↓     ответ

    A fascinating discussion is worth comment. I believe that you need to write more about this issue,

    it may not be a taboo subject but typically people do not talk about such subjects.

    To the next! Cheers!!

  • bit.ly
    bit.ly
    15 Июля 2022, 17:59
     ↑  0  ↓     ответ

    Hello, i believe that i saw you visited my website so i came to return the prefer?.I'm attempting to to find issues

    to improve my website!I guess its ok to use some of your ideas!!

  • http://bit.ly/3z050ev
    http://bit.ly/3z050ev
    23 Июля 2022, 01:41
     ↑  0  ↓     ответ

    Do you mind if I quote a few of your posts as

    long as I provide credit and sources back to your

    website? My website is in the very same area of interest

    as yours and my users would genuinely benefit from some of the information you provide here.

    Please let me know if this alright with you. Regards!

  • tinyurl.com
    tinyurl.com
    23 Июля 2022, 12:01
     ↑  0  ↓     ответ

    magnificent post, very informative. I ponder why the other

    experts of this sector don't realize this. You should

    continue your writing. I'm sure, you've a great readers' base already!

  • http://tinyurl.com
    http://tinyurl.com
    26 Июля 2022, 17:55
     ↑  0  ↓     ответ

    Hi there every one, here every person is sharing these know-how, thus it's pleasant to read this blog, and

    I used to go to see this web site all the time.

  • http://tinyurl.com/2ay9wbfg
    http://tinyurl.com/2ay9wbfg
    28 Июля 2022, 23:40
     ↑  0  ↓     ответ

    I have read several excellent stuff here. Certainly worth bookmarking for revisiting.

    I surprise how so much effort you place to make one of these magnificent informative web site.

  • tinyurl.com
    tinyurl.com
    02 Августа 2022, 00:30
     ↑  0  ↓     ответ

    Hello would you mind letting me know which web host

    you're using? I've loaded your blog in 3 different browsers and I must say this blog loads a lot quicker

    then most. Can you recommend a good internet hosting provider at a reasonable price?

    Thank you, I appreciate it!

  • http://philinterschool.com/tracfone/
    http://philinterschool.com/tracfone/
    07 Августа 2022, 23:24
     ↑  0  ↓     ответ

    Hi! I understand this is sort of off-topic but I had to ask.

    Does running a well-established blog such as yours require a lot

    of work? I am completely new to writing a blog but I do write in my diary

    every day. I'd like to start a blog so I will be able to

    share my personal experience and views online. Please let me know if you have any suggestions or tips for new aspiring bloggers.

    Appreciate it!

  • tinyurl.com
    tinyurl.com
    08 Августа 2022, 19:52
     ↑  0  ↓     ответ

    Hi would you mind sharing which blog platform you're working with?

    I'm planning to start my own blog soon but I'm having a hard time choosing between BlogEngine/Wordpress/B2evolution and Drupal.

    The reason I ask is because your design seems different then most

    blogs and I'm looking for something completely unique.

    P.S Sorry for getting off-topic but I had to ask!

  • kitzap.co.uk
    kitzap.co.uk
    09 Августа 2022, 22:34
     ↑  0  ↓     ответ

    Hey There. I found your blog using msn. This is an extremely well

    written article. I'll be sure to bookmark it and return to

    read more of your useful information. Thanks for the post.

    I'll certainly return.

  • tinyurl.com
    tinyurl.com
    10 Августа 2022, 17:29
     ↑  0  ↓     ответ

    My brother suggested I might like this blog. He was entirely

    right. This post truly made my day. You cann't

    imagine just how much time I had spent for this info!

    Thanks!

  • http://tinyurl.com/
    http://tinyurl.com/
    13 Августа 2022, 16:34
     ↑  0  ↓     ответ

    What's up, just wanted to tell you, I liked this post.

    It was helpful. Keep on posting!

  • http://tinyurl.com/
    http://tinyurl.com/
    15 Августа 2022, 07:23
     ↑  0  ↓     ответ

    Hi there! This post could not be written much better!

    Going through this article reminds me of my previous roommate!

    He always kept talking about this. I'll forward this information to him.

    Pretty sure he will have a very good read. Thank you

    for sharing!

  • http://tinyurl.com/
    http://tinyurl.com/
    17 Августа 2022, 23:18
     ↑  0  ↓     ответ

    Nice post. I was checking continuously this blog and I'm impressed!

    Very helpful info specifically the last phase :) I care for such info a lot.

    I was seeking this certain info for a long time. Thank you and

    good luck.

  • tracfone coupon
    tracfone coupon
    26 Ноября 2022, 13:20
     ↑  0  ↓     ответ

    I've been browsing online more than 4 hours today, yet I never found any interesting article like yours.

    It is pretty worth enough for me. Personally, if all

    webmasters and bloggers made good content as you did, the net will be much more

    useful than ever before.

  • tracfone
    tracfone
    03 Декабря 2022, 06:51
     ↑  0  ↓     ответ

    Thank you a bunch for sharing this with all people you really realize what you are talking

    about! Bookmarked. Please additionally discuss with my site =).

    We may have a hyperlink trade arrangement among us

  • Lorene
    Lorene
    28 Января 2023, 10:34
     ↑  0  ↓     ответ

    To the joomla-book.ru webmaster, Thanks for the informative post!

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




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

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