Digital Commerce Blog - Blackbit

3.5.0 - Pimcore Data Director у новій версії

Written by | am 8.11.23 um 09:10 Uhr

Наші розробники додали нові практичні функції до нової версії Pimcore Data Director. Найбільша зміна: Data Director тепер повністю сумісний з Pimcore 11.

Сумісність з Pimcore 11

Версія 3.5.0 повністю сумісна з Pimcore 11: Pimcore видалив деякі пакети з основного продукту (Application Logger, Звіти, Перенаправлення тощо). Однак Data Director більше не залежить від цих пакетів і, таким чином, відповідає стандарту Pimcore: просто встановіть потрібні вам пакети - Data Director працює з усіма встановленими пакетами.

Ми також покращили сумісність в іншому напрямку: Data Director 3.5 сумісний з PHP 7.3, тому Pimcore 5 і 6 все ще підтримуються.

Фоновий процес для перевірки, чи потрібно виконувати автоматичні порти даних

У попередніх версіях безпосередньо при збереженні елемента Pimcore виконувалася перевірка, щоб визначити, які автоматичні порти даних слід запускати. Якщо автоматичний порт даних мав складний SQL-запит, це могло зайняти деякий час. Це також стосувалося збережень, виконаних вручну в бекенді Pimcore, тому в цьому випадку користувачеві доводилося чекати, поки перевірка всіх автоматичних портів даних буде завершена. У версії 3.5.0 ця перевірка тепер виконується у фоновому процесі, тому збереження елемента вручну відбувається так само швидко, як і без Data Director.

Автоматичне тестування портів даних

За допомогою команди bin/console data-director:create-test <Ідентифікатор порту даних> ви можете створити тест PHPUnit для вказаного порту даних. Тестовий клас створюється на основі доступних на даний момент вихідних даних і відображення. Ви можете виконати ці автоматичні тести через PHPUnit.

Основна мета автоматичних тестів:

  1. Переконатися, що все працює як і раніше після зміни налаштувань порту даних або зіставлення атрибутів.
  2. Переконатися, що до і після оновлення/зміни базових бібліотек, таких як Pimcore або Data Director, все працює як і раніше.

Для запуску тестів потрібен файл phpunit.xml. Якщо він ще не існує в кореневому каталозі Pimcore, його буде створено автоматично. Якщо він вже існує, буде додано новий набір тестів. Після створення тестів ви одразу ж отримаєте підказку про те, як їх виконати.

Синхронізація портів даних між декількома системами Pimcore

Команда data-director:deployment:dataport-rebuild тепер також може бути використана для синхронізації портів даних між декількома системами Pimcore. Додано дві нові кінцеві точки REST:

  • GET http(s)://<ВАШ-ДОМАЙН>/api/dataports?apikey=<API-ключ>
    повертає JSON-список портів даних, які користувач, вказаний за допомогою <API-ключ>, має право налаштовувати.

  • GET http(s)://<ВАШ-ДОМАЙН>/api/dataports/<ідентифікатор або назва порту даних>?apikey=<API-ключ>
    повертає конфігурацію порту даних у форматі JSON, який можна використовувати для налаштування портів даних за допомогою команди data-director:deployment:dataport-rebuild (так само, як під час експорту конфігурації порту даних або використання Git'а для збереження конфігураційних файлів JSON).

Щоб імпортувати порти даних з віддаленої системи, ви можете викликати
bin/console data-director:deployment:dataport-rebuild --source=https://other-pimcore.com --api-key=<API key>
. Як необов'язковий аргумент ви можете вказати назву порту даних, який потрібно відновити - інакше будуть відновлені всі порти даних.

Якщо ви працюєте з віддаленим джерелом, буде імпортовано лише ті порти даних, останню версію яких було імпортовано або які ще не існують. Для існуючих портів даних, остання версія яких була відредагована реальним користувачем, вам буде запропоновано перезаписати локальну конфігурацію порту даних, щоб запобігти перезапису локальних змін. Щойно ви дозволите імпорт, останню версію буде позначено як імпортовану, а отже, її можна буде автоматично синхронізувати у майбутньому. Якщо ви хочете завжди перезаписувати локальні зміни, використовуйте прапорець --force.

Зміни інтерфейсу користувача

Перспективи Pimcore

Перспективи - це потужна, але рідко використовувана функція Pimcore. Data Director тепер пропонує базову перспективу, засновану на групах класів об'єктів даних. Всі класи об'єктів даних, які належать до однієї групи, відображаються на одній панелі перспективи. Коренева папка автоматично оптимізується до найнижчого батьківського об'єкта, який містить всі об'єкти відповідного класу.

Крім того, перспектива також містить інформаційну панель, яка включає монітор черги і портлети для позначених елементів і помилок портів даних. Звичайно, ці портлети можна використовувати і в інших інформаційних панелях (наприклад, портлет для позначених елементів можна використовувати як список справ).

Підказки дерева елементів

За замовчуванням Pimcore показує лише ідентифікатор і клас елемента при наведенні на нього в дереві. Ця інформація рідко буває корисною. У версії 3.5.0 Data Director тепер постачається зі стандартною підказкою, яка відображає всі поля, налаштовані для відображення у поданні сітки у підказці.

Форматер шляхів для активів

@DataDirectorSearchViewPathFormatter і @DataDirectorGridViewPathFormatter тепер підтримують відображення метаданих ресурсів для зв'язків на основі ресурсів (у вигляді підказки при наведенні на них вказівника миші).

Вони також підтримують пряме редагування за допомогою інструментів MS Office для ресурсів Excel, Word і PowerPoint: відображений шлях до ресурсу є зв'язаним: Якщо ви натиснете на нього, ресурс буде відкрито в MS Office. Всі збережені зміни передаються безпосередньо до Pimcore через інтерфейс WebDAV - без необхідності вручну завантажувати і вивантажувати файл знову.

Налаштування порту даних

  • Підтримка копіювання декількох полів необроблених даних
  • Спрощений доступ до складних ресурсів імпорту:
    • Підтримка прямого введення PHP/shell-коду, наприклад, для доступу до даних з API OAuth2. Це усуває необхідність створення окремого файлу скрипта.
    • Підтримка використання PHP-коду в якості ресурсу імпорту, який повертає URL-адресу (наприклад, HTTP, FTP, шлях до ресурсу Pimcore). Це дозволяє скрипту зосередитися на логіці генерації URL-адреси, в той час як код для фактичного доступу до ресурсу делегується Директору даних.
  • Підтримка запитів полів метаданих ресурсів в умовах SQL з використанням їхніх імен, наприклад, metaField=1.
  • Підтримка заповнювачів у цільовій папці/цільовій папці ресурсу (наприклад, при вказівці цільової папки у залежних параметрах порту даних).

Відображення атрибутів

  • Покращено продуктивність панелі зіставлення атрибутів.
  • Вікно функції зворотного виклику
    У дереві доступних змінних окремі поля необробленого об'єкта відображаються як піддерево $params['rawItemData'] Те саме стосується окремих полів $params['currentObjectData'].
  • Тепер спочатку зберігається версія порту даних, а потім обробляються дані вибірки зіставлення атрибутів. Це означає, що ви можете повернутися до попередньої версії у випадку критичних синтаксичних помилок в одній з функцій зворотного виклику.
  • Поля, які були зіставлені за допомогою кнопки "автоматичне зіставлення", більше не зберігаються автоматично, але результат зіставлення можна перевірити, а потім зберегти.
  • Додано прапорець для поля "Шлях" для видалення підпорядкованих елементів перед імпортом, подібно до "Очистити перед імпортом" для реляційних полів.

Інші зміни

До версії 3.5 включено такі додаткові функції:

  • SQL-умова
    Підтримка фільтрації для стовпців метаданих розширених зв'язків об'єктів "багато до багатьох", наприклад, active=1 для розширеного зв'язку "багато до багатьох" "ринки" з логічним метаполем "активний".
  • Тепер створюється менше копій файлів для віддалених ресурсів порту даних.
  • Додано шаблон документа результатів для експорту в Excel.
  • Ідентичні елементи вихідних даних більше не обробляються кілька разів під час запуску dd:process.
  • Підтримка імпорту кількісних значень з роздільниками тисяч, таких як 1,234.56 кг.
  • Покращено ведення журналів: Додавання журналів до журналу порту даних, який записується за допомогою \Pimcore\Logger::error() та подібних методів.
  • Підтримка виведення значень полів з тексту за допомогою API ChatGPT для розширених зв'язків "багато-до-багатьох".
  • Зміна пріоритету для роздільної здатності віртуальних полів, наприклад, :
    • якщо поле "field" дійсно існує в цільовому класі, то використовується значення, що повертається з цього поля (для повторного використання значень, що повертаються з інших полів)
    • Використання параметру запиту "field
    • Використання поля вихідних даних з іменем "field"
    • Раніше виникали проблеми з залежними параметрами портів даних, якщо викликаний порт даних мав поле необроблених даних з таким же ім'ям. Тоді не було можливості отримати доступ до параметра.
  • Виправлення помилки серіалізації
    Експорт булевих значень як 0/1 в деяких випадках був "true"/"false".
  • Для зменшення використання пам'яті надавайте тільки ті змінні оточення, які дійсно використовуються у функціях зворотного виклику.
  • Підтримка оптимізації SQL-запитів для локалізованих полів відношень, таких як relationField#de LIKE '%,1234,%'. Раніше тут підтримувалися лише нелокалізовані поля.
  • Підтримка доступу до локалізованого сховища класифікацій через селектор запиту даних classificationStore#en.
  • Селектор запиту даних для сховищ класифікацій: синтаксис classificationStoreField:groupName тепер повертає масив ключових значень усіх полів групи, а classificationStoreField:groupName:fieldName повертає значення вказаного поля сховища класифікацій.
  • Підтримка IN() у селекторах запитів даних, наприклад, Product:sku:[123,234].
  • Автоматичний запуск портів даних на основі Pimcore при використанні функції ініціалізації "Запускати кожні x годин" (запускає псевдо-запуск cronjob).
  • Експорт мініатюр у форматі WEBP, якщо формат мініатюри "Автоматично (оптимізовано для веб)"
  • Підтримка автоматичного створення неіснуючих варіантів полів вибору для пам'яті класифікації та полів з декількома варіантами вибору.
  • Вилучення необроблених даних
    Не імпортуються порожні поля необроблених даних, що дозволяє швидше вилучати необроблені дані, наприклад, CSV з технічними даними, де певні стовпці застосовуються лише до продуктів певної групи продуктів, але порожні для всіх інших.
  • Автоматичне видалення (тимчасово) створених підпорядкованих елементів, які більше не мають підпорядкованих елементів. Це відбувається, коли послідовність імпорту не створює спочатку батьківські елементи.
  • Серіалізація конфігурації джерела/цілі порту даних у форматі JSON замість serialize() для кращої читабельності або перегляду відмінностей у файлах версій.
  • Монітор черги
    Зберігає поточний стан у базі даних, а не у файлі. Це необхідно, якщо процесор черги працює у контейнері, відмінному від Pimcore.
  • Багато інших виправлень.

Корисні підручники з Pimcore Data Director

Ми пропонуємо ще багато корисних порад та детальних інструкцій по використанню Pimcore Data Director у відеоуроках в Академії Blackbit та на каналі Blackbit на YouTube.

Ще не знайомі з нашим Data Director?

Якщо ви хочете спочатку познайомитися з нашим потужним пакетом для імпорту та експорту, тоді відвідайте наш магазин зараз, щоб дізнатися, які можливості відкриває для вас Data Director для Pimcore.
Зв'яжіться з нами зараз, і ми будемо раді продемонструвати вам пакет в індивідуальній демо-версії.