Форум Joomla! Україна

Повна версія: Хотів би уточнити як працюють плагіни.
Ви переглядаєте спрощену версію. Переглянути повну версію з віповідним форматуванням.
Виникло таке питання

В джумлі є групи

authentication
content
editors
editors-xtd
search
system
user
xmlrpc

я хоітв би зробити плагін для конкретного компонента
com_phocagallery

Як зрозумів треба зробити групу
phocagallery в плагінах 


In addition to the core groups, we can create plugins that belong to other groups. For
example, if we created a component named Foobar and we wanted to add plugins
speciically for that component we could create a custom plugin group called foobar.

Але не працює.
Питання де іде парсінг виклику плагінів щоб подивится як іде виклик груп?

Рс Або поясніть як  воно працює Smile
Сам жнець сам сівець

Для написання власних плагінів для конретного компонента потрібно.
При проєктуванні компонента встановити місця де будуть відслідковуватись події events

Наприклад я спробував написати
для
com_phocagallery

1 треба ініцілізувати плагін в компоненті
тобто  загрузити слухач
я це зробив в contoller.php це один із перших файлів який оброблюється при звертанні до компонента
хоча в нашому випадку в компоненті  com_phocagallery найперше виклиакається файл
phocagallery.php.
Код:
JPluginHelper::importPlugin('phocagallery');

2 Після ініцілізації я ставлю події.
Наприклад завантаження і подальша відправлення на відображення категоріїї картинок
це відбуваеться  в файлі
view.html.php Взагалі такий проміжковий файл що збирає данні з моделі і контролера і відправляє на шаблонізатор. Завжди лежить в підпапках view.
Так от там  я виликаю f,региструю подію

Код:
$arguments = array(&$foobarData); // Зверніть увагу на те що данні заганяються в масив.
$result = $mainframe->triggerEvent('onPreparePhocagallery', $arguments);
Місце розташування  на ваш розсуд до виклику

Код:
parent::display($tpl);

3 Ось приклад як то робив плгін

Код:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE install SYSTEM
           "http://dev.joomla.org/xml/1.5/plugin-install.dtd">
<install version="1.5" type="plugin" group="phocagallery"> // Зверніть група називається так
само як і компонент. В папці плагін створюється папка phocagallery
    <name>Image description</name>
    <author>Bardus</author>
    <authorEmail>ваша електрона пошта </authorEmail>
    <authorUrl>ваш влсний сайт</authorUrl>
    <creationDate>11.11.2008</creationDate>
    <copyright>Copyright (C) </copyright>
    <license>GNU/GPL</license>
    <version>0.1</version>
    <description>Описание картинок для Phoca Gallery </description>
    <files>
        <filename 
             plugin="descriptionimage">descriptionimage.php</filename>  Саме власне назва плагіна
і назва файла.
    </files>
    <params/>
</install>

Код:
class plgPhocagalleryDescriptionImage extends JPlugin
{
 
  function plgPhocagalleryDescriptionImage( &$subject, $params)
  {
     parent::__construct( $subject, $params  );
   
  }
   Звернніть увагу як названий метод.
  function onPreparePhocagallery( &$phoca )
  {
        echo 'Я плагін';
  }
}


Так я мабуть дуже сумбурно і не врахував багато чого..а може, ще не знаю нюансів..
Описав те, що робив, щоб отримати на екрані напис "Я плагін".

Зауважу, що плагін одноразовий тому що ініцілізацію та регитсрацію потрібно вставляти в чужий код ..що дуже погано.
Чесно кажучи  легше написати компонент, чим придумувати ..маленький плагін до чужого компонента Smile))))

Дефаульна група плагіні робиться дуже просто. Там тільки треба по шаблону, що лежить в exemples Написати функцію і подивится як написаніінші такі плагіни.