Многие пользователи Zoo/JBZoo даже не подозревают, что создание собственных элементов — это просто. Имея базовые знания PHP/JS можно без проблем написать простой, но функциональный элемент.
В этой статье мы рассмотрим и научимся:
Создавать обычные, повторяемые и отправляемые элементы.
Использовать в них ajax.
Создавать класс отвечающий за импорт/экспорт.
Создавать новые шаблоны элементов в фильтре.
Узнаем о системных событиях.
Установка заключается в создании основной папки и файлов.
В нашем случае есть два места, где можно создать элемент:
media/zoo/elements/
— стандартная папка zoo. Тут находятся все базовые элементы и элементы ядра .
media/zoo/applications/<Application>/elements/
— папка для Application.
Структура файлов и папок должна выглядеть следующим образом:
jbint — корневая папка элемента.
tmpl — папка для шаблонов.
default.php — шаблон простого вывода.
thousand.php — шаблон вывода с разделением тысячных.
edit.php — вывод формы редактирования в административной части.
index.html — заглушка.
jbint.php — основной файл нашего элемента.
jbint.xml — xml файл. В нем можно оставить информацию об авторе, создать необходимые настройки. У xml файла должна быть минимальная структура, о который мы поговорим ниже.
index.html — заглушка.
Имя класса любого элемента должно начинаться с префикса Element и заканчиваться названием.
К примеру, классы стандартных элементов:
Текст — ElementText.
Чекбокс — ElementCheckbox.
Изображение — ElementImage.
Разберем несколько типичных элементов и их объявления классов.
Element<АЛИАС_ЭЛЕМЕНТА> extends Element {}
Element<АЛИАС_ЭЛЕМЕНТА> extends ElementRepeatable {}
Element<АЛИАС_ЭЛЕМЕНТА> extends ElementRepeatable implements iSubmittable {}
Element<АЛИАС_ЭЛЕМЕНТА> extends ElementRepeatable implements iRepeatSubmittable {}
Абстрактный класс Element требует от нас определить один метод.
edit — выводит информацию в административную часть.
Наследование от абстрактного класса ElementRepeatable обязывает нас перезагрузить один метод.
_edit — выводит информацию в административную часть для повторяемого элемента.
Интерфейс iSubmittable требует от нас определить два метода:
renderSubmission — при подаче материала вывод осуществляется из этого метода.
validateSubmission — проверка входящих данных после подачи материала.
Реализация интерфейса iRepeatSubmittable требует от нас реализации двух методов:
_renderSubmission — вывод при подаче материала для повторяемого элемента.
_validateSubmission — проверка входящих данных.
Если элемент повторяемый, то в основном используются методы с нижним подчеркиванием, а сам экземпляр будет итерируемым.
В случае переопределения какого-то из методов (render, edit, getSearchData, hasValue) вывод повторяемого элемента будет лежать на ваших плечах в переопределенном методе.
hasValue — этот метод вызывается перед выводом элемента. Происходит проверка на пустоту, если null | false — он не выводится.
edit — выводит форму редактирования в административную часть сайта.
render — вывод содержимого на сайт.
getSearchData — результаты из этого метода попадают в mysql таблицы, данные из которых используются для поиска и фильтров.
renderSubmission — при подаче материала вывод осуществляется из этого метода.
validateSubmission — проверка входящих данных после подачи материала.
Все те же методы, но с нижним подчеркиванием, вызываются для повторяемых элементов.
Вы можете обратиться на наш специальный форум техподдержки JBZoo. Если у вас нет активного аккаунта со знаком «плюс» в тарифном плане, то вы можете задать свой вопрос в одном из этих разделов или на любой из наших контактов. Форум специально предназначен для JBZoo, приоритет и скорость ответа там выше.