Доброе время суток. Есть одна проблема с компонентом К2.
К К2 нужно добавить новое поле к форме создания/редактирования категорий, а потом данные из этого поля записать в базу. Кроме того нужно модифицировать саму форму создания и редактирования категорий в админ панели. Некоторые поля выбросить и заменить их своими. Читал в документации по плагинам К2, что есть возможность создать плагин и в XML файле создать группу полей с названием category. Это позволит добавить новое поле и автоматически записать значение из него в поле plugins таблицы k2_category. Но это не то, что мне нужно. Мне нужно при сохранении изменять другие таблицы базы данных Joomla.
В комоненте К2 при выводе формы категории нашел одно место где подгружаются плагины: /administrator/components/com_k2/views/category/view.html.php Это следующий код:
JPluginHelper::importPlugin('k2');
$dispatcher = JDispatcher::getInstance();
$K2Plugins = $dispatcher->trigger('onRenderAdminForm', array(&$category, 'category'));
$this->assignRef('K2Plugins', $K2Plugins);
То есть получается что для отображения нового поля нужно создать плагин типа к2. Теперь другая проблема: как записать новое поле в базу?
Все события К2 onK2BeforeSave,onK2AfterSave работают только для айтемов. Для категорий нет.
Правда нашел код, который при выполнении записи в базу подгружает плагины в файле: /administrator/components/com_k2/models/category.php в методе save():
$dispatcher = JDispatcher::getInstance();
JPluginHelper::importPlugin('finder');
$results = $dispatcher->trigger('onFinderAfterSave', array('com_k2.category', $row, $isNew));
Означает ли это что для того чтобы добавить новое поле и сохранить его значение в базу нужно фактически создать 2 плагина: один с типом k2 и который слушает событие onRenderAdminForm а другой типа finder который слушает событие onFinderAfterSave.
Но если с помощью плагина я еще могу добавить поля к форме создания категории, то для замены стандартной на свою я не нашел вообще подходящих событий.
Есть мысль создать админ компонент, который после установки позволит тупо изменить php коды k2 добившись необходимой функциональности.
Например можно создать кнопки включить модификацию и отключить. Соответственно компонент изменит соответствующие php файлы К2 или вернет как было.
Понимаю что такое решение не элегантно, поэтому написал сюда может кто подскажет какие то другие решения .
Ну или хотя бы поддержит меня в намерении сделать хак файлов ядра К2.