Ідеально структурувати дані про товари та клієнтів для інтернет-магазину, маркетингових каналів і процесів продажу - непросте завдання. При створенні моделі даних необхідно враховувати численні фактори, щоб дані в кінцевому підсумку могли ефективно підтримуватися, зберігатися і оброблятися з високою продуктивністю.
Фреймворк для цифрової комерції Pimcore пропонує широкий спектр можливостей для ідеального налаштування моделі даних відповідно до процесів вашої компанії. При виборі типів даних для окремих полів у класах, об'єктних модулях і колекціях полів існують різні способи досягнення вашої мети. Однак, оскільки стратегія компанії, структура асортименту продукції тощо можуть швидко змінюватися, навіть ідеальну на даний момент модель даних необхідно регулярно адаптувати. Це єдиний спосіб гарантувати, що підтримка даних залишається змістовною, послідовною та ефективною.
Однак, коли змінюються типи даних, дані, раніше введені в об'єкти, зазвичай втрачаються. Тому часто доводиться обирати між трудомісткою підтримкою даних або прийняттям моделі даних, яка не відповідає новим вимогам.
З BB Ultima Import Bundle цей вибір між двома лихами більше не існує: тепер можна змінювати типи даних без втрати даних!
Як редагувати типи даних Pimcore без втрати даних
Коли дані імпортуються в Pimcore за допомогою BB Ultima Import Bundle, виконуються наступні три кроки:
- Імпорт необроблених даних з джерела даних
- Редагування необроблених даних
- Імпорт даних в об'єкти даних Pimcore
Самі об'єкти Pimcore також можуть слугувати джерелом даних для першого кроку. Щоб перетворити тип даних поля об'єкта, першим кроком є імпорт даних з об'єктів Pimcore. Потім ви можете налаштувати тип даних поля об'єкта (або блоку об'єктів, або колекції полів). Звичайно, в цьому випадку дані також на деякий час будуть втрачені. Однак тепер ви можете імпортувати змінені поля об'єктів на основі вихідних даних.
Практичний приклад: Перетворення числових полів у поля кількісних значень
Щоб проілюструвати це, ми покажемо, як можна перетворити числове поле на поле кількісного значення в об'єктному модулі. У нашому прикладі технічні дані спочатку зберігалися без одиниць виміру, оскільки всі дані були доступні в сантиметрах, коли була введена модель даних. Однак у майбутньому система повинна дозволяти налаштовувати одиниці виміру під час ведення даних про товар (наприклад, довжина в мм, см, м).
Отже, початковою ситуацією є клас товару з полем об'єктного модуля. Пов'язані з ним об'єктні модулі містять різні числові поля:
Тепер створіть імпорт, який має імпортувати дані з об'єктів продуктів Pimcore:
Для полів вихідних даних ви можете отримати доступ до всіх методів getter класу продукту. У цьому випадку вам знадобляться шлях до об'єкта і ключ об'єкта для подальшої ідентифікації об'єктів і, звичайно, об'єктні блоки, які містять поля даних, що підлягають зміні.
Після імпорту сирих даних дані виглядають так:
Тепер змініть визначення об'єктного модуля (з числового поля на поле кількісного значення):
Потім ви призначаєте поля необроблених даних полям об'єкта, щоб увімкнути імпорт об'єкта: за допомогою перетягування шлях поля необроблених даних призначається полям об'єкта для шляху об'єкта, а ключ поля призначається ключу об'єкта:
У цьому випадку обидва поля є ключовими. Система шукає об'єкти, для яких і шлях, і ключ збігаються зі значенням вихідних даних.
Щоб ввести вихідні дані в нові поля об'єктного модуля, їх потрібно підготувати таким чином, щоб пакет імпорту зрозумів їх і зміг правильно викликати відповідні методи задання.
Для цього у присвоєнні поля можна зберегти функцію зворотного виклику. Це дає змогу отримати доступ до вихідних даних та наявних даних об'єкта. У випадку об'єктних модулів з полями кількісних значень, така функція зворотного виклику для поля width в об'єктному модулі chair має такий вигляд:
// Розбір рядка JSON, що містить дані об'єкта brick - про перетворення значення методу brick getter в JSON піклується пакет імпорту params.value = JSON.parse(params.value); // Якщо об'єкт не має технічних даних, повертається null if(typeof params.value.primarytechnicaldata === "undefined") return null; // якщо об'єкт має модуль "chair" if(typeof params.value.primarytechnicaldata.chair !== "undefined") { // зчитати значення зі старого поля number та повернути його як масив для заповнення поля Quantity Value [value, unit] return [params.value.primarytechnicaldata.chair.width, 'cm']; }
У цьому прикладі функція зворотного виклику зберігається як JavaScript-код. Однак, також можна зберігати PHP-код. Через функції зворотного виклику можна отримати доступ до всіх типів даних Pimcore, включаючи зв'язки, зв'язки з метаданими, колекції полів тощо.
Таким чином, BB Ultima Import Bundle дозволяє адаптувати вашу модель даних до мінливих вимог і подальших розробок Pimcore без втрати даних.
Є запитання про BB Ultima Import Bundle для Pimcore?
Вам потрібна допомога зі зміною моделі даних або імпортом із зовнішніх джерел? Ми будемо раді відповісти на ваші запитання та підтримати вас у впровадженні.
Виникли запитання чи бажаєте отримати особисту консультацію?
Наш бекенд стає яскравішим: Привіт, Стефане!
Новий курс в Академії Blackbit: Основи SEO
Data Director для Pimcore версії 3.7 знаходиться тут
Кейс EGGERS: веб-сайт HubSpot для ефективного управління лідами
Залиште нам відгук