Создание плагина для Pimcore 5

//Создание плагина для Pimcore 5

Несмотря на свою функциональность, гибкость в настройках и набор готовых плагинов на Github, для решения кастомных задач появляется необходимость создания собственных плагинов, модулей, экстеншенов или расширений для Pimcore. По факту, в системе это все  — Extension или Bundle.

В пятой версии Pimcore разработка плагинов была переработана. Теперь в основе любого плагина лежит Symfony. Это сделало создание плагинов проще. В этой статье мы предлагаем небольшую инструкцию по созданию расширений для популярной системы управления товарами и информацией.

Инструкция по созданию плагинов для Pimcore 5

Для создания плагина нам потребуется:

  • знание PHP,
  • доступ к CLI,
  • понимание функционала и логики работы нашего расширения.

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

Исходные данные для приложения:

  • класс объектов с названием Phone,
  • несколько объектов этого класса в системе с заполненными атрибутами.
Список объектов в Pimcore

Список объектов в Pimcore

Пример класса в Pimcore

Пример класса в Pimcore

Критерий проверки: название бренда должно входить в название товара. Если это не так, товар нужно исправить.

Теперь, когда у нас есть все данные, мы можем приступить к созданию плагина. В интерфейсе командной строки (CLI), заходим в корневую папку, где установлен Pimcore. Выполняем следующую команду:

bin/console pimcore:generate:bundle —env=dev

Далее у нас спросят несколько вопросов. Все оставляем по дефолту, название вводим в формате: выбранноеназваниеBundle. У нас получилось PhonesBundle. Если все прошло хорошо, увидим следующую картинку:

Создаем расширение для Pimcore5

Данная команда создала skeleton для плагина и все взаимосвязи. Плагин можно найти на странице Tools -> Extensions:

Расширение в общем списке плагинов пимкора

Все, что мы можем — это включить или выключить плагин. Несколько базовых действий в файле PhonesBundle.php:

1. Устанавливаем описание плагина, которое будет отображаться в списке расширений:

public function getDescription() {
return 'Плагин проверки названий для телефонов.';
}

2. Указываем страницу, которая будет отвечать за настройку плагина — «Configure»:

public function getAdminIframePath(){
return '/bundles/phones/logic.php';
}

Именно тут мы будем прописывать логику проверок и вывод результатов. Теперь включим наш плагин. Для этого кликаем на «зеленый плюсик» в строчке плагина. Сбрасываем кеш и смотрим, что получилось:

Расширение в общем списке плагинов пимкора

В результате наших действий, мы:

  • активировали плагин,
  • создали страницу конфигураций, которая будет доступна по адресу домен/bundles/phones/logic.php. Открыть ее в интерфейсе Pimcore можно, кликнув по иконке карандаша в столбике Configure,
  • добавили описание к плагину, чтобы не забыть, что он делает.

Небольшой код, который помещаем в файл logic.php:


//Подключаемся к хуку startup.php. Вложеность файла может быть разной, смотрите на абсолютный путь на сервере
include_once("../../../../pimcore/config/startup.php");

//Отображаем ошибки, стандартно для PHP
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

//добавляем в плагин использование объектов Pimcore через API
use Pimcore\Model\DataObject;

//Достаем список объектов из класса Phone
$entries = new DataObject\Phone\Listing();
//Тут можно задать параметры фильтрации и окритерии для поиска объектов. Подробнее: https://pimcore.com/docs/5.x/Development_Documentation/Objects/Working_with_PHP_API.html
$entries->load();

//Перебираем товары
foreach ($entries as $entry) {
// Проверка на вхождение названия бренда в имени товара
if(!stripos($entry->getName(), $entry->getBrand())){
echo "Товар " . $entry->getName() . " не содержит название бренда - " . $entry->getBrand() . " <br>";
}
}

Результаты работы:

Страница плагина

Как видим, все отработало, как нужно. Наши товары назывались:

Список товаров для проверки

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

  1. Структура приложений в Symfony
  2. Справка по созданию рсширений в Pimcore 5.x
  3. Расширения для Pimcore — Github
Создание плагина для Pimcore 5
5 / Оценили: 2
Богдан Голобородько2018-12-02T08:23:43+00:0016.11.2018|Разное|

Отправить ответ

avatar