All infos - Создание кастомного элемента zoo
04
дек

Создание кастомного элемента zoo

В этом материале я разбирал возможность редактирования вывода настроек в админке кастоного элемента zoo. Записывал для себя, выкладываю как есть.

Настройки вывода полей сохраняются в файле media\zoo\applications\blog\templates\default\renderer\item\positions.config. Считывается этот файл helper:render.php вызывает  helper:parameter.php метод create()проверка если нет то создаётся helper:loader.php register( json.php) 


Пути к шаблонам сохраняются в файле /administrator/components/com_zoo/checksum
e5213087aa8c7cd9335fd64a3269bc60 media/applications/blog/templates/default/renderer/item/author/submission.php

В конструкторе json.php parent::__construct($data); $data->elements массив элеметов
подключает иклюдом administrator\components\com_zoo\views\manager\tmpl\assignsubmission.php в json.php в переменную 
Задача создать объект AppEvent в конструктор которого передать извлеченные закрытые для записи поля у объекта события параметра извлечённого  по ссылке.Присвоить ссылке новый объект.
Задача выполнима, но в дальнейшем, объект просто заменяется на другой, результата нет,можно разобрать более дитально.

При выводе страницы добавления в позици элементов например по адресу:

administrator/index.php?option=com_zoo&controller=manager&task=assignelements &group=business&type=organization&path=media%252Fzoo%252Fapplications%252Fbusiness%252Ftemplates%252Fuikit&layout=full

manager.php загружаются типы $this->type = $this->application->getType($type);
В самом классе Type извлекаются конфиг типов(элементов) 
/media/zoo/applications/business/types/organization.config
сами поля fields собираются в ZlFieldHelper это строкой:$json = json_decode(include($path), true); переменная $path -plugins\system\zoo_zlelements\zoo_zlelements\elements\textpro\params\text.phpВ этом файле подключается require_once(JPATH_ADMINISTRATOR . '/components/com_zoo/config.php');и добвляется во view assignelement по пути:administrator\components\com_zoo\views\manager\tmpl\assignelements.phpв цикле в строке:echo $this->partial('assignelement', array('element' => $element, 'data' => $data, 'position' => $position, 'index' => $i++, 'core' => ($element->getGroup() == 'Core')));вызывается частиный вью:administrator\components\com_zoo\views\manager\tmpl\_assignelement.phpв котором и 'прорисовываются' все элементы данной страницы
Сами элементы бирутся из файла /media/zoo/elements/core.config той строкой

$elements  = array_merge($this->type->getElements(), $this->type->getCoreElements());при этом тут $this->type->getCoreElements()

вызываются обработчики событий... один из которых plgSystemZlfamework:
 coreConfig( $event, $arguments = array() ){ $config = $this->app->data->create(file_get_contents($this->app->path->path('elements:core.config')))->get('elements');$this->_core_elements_config = $this->app->event->dispatcher->notify($this->app->event->create($this, 'type:coreconfig')->setReturnValue($config))->getReturnValue();

Share this post