• Доробки · OpenCart 4.x

Оновлення OpenCart: перехід на актуальну версію без втрати магазину

Оновлення версії OpenCart між великими гілками — це не кнопка в адмінці: змінюються структура бази, система розширень і система шаблонів, тому старі модулі й стара тема на новій платформі просто не стартують. Через це питання «оновлюватися чи ні» насправді звучить інакше: що станеться з моїми модулями, темою й адресами сторінок. Ми відповідаємо на нього до початку робіт — розбираємо збірку поштучно, переносимо дані на тестовий майданчик і звіряємо кількість товарів, замовлень і клієнтів до й після. Бойовий сайт увесь цей час торгує.

Подивитись, як це працює
Вартість
після безкоштовного аудиту
Гарантія
30 днів після підписання акта
Строк робіт
18–45 робочих днів; саме перемикання — один вечір
Вартість
після безкоштовного аудиту
Гарантія
30
днів після підписання акта
Строк робіт
18–45
робочих днів; саме перемикання — один вечір
Де відбувається оновлення
тестовий майданчик, копія бойового; магазин не зупиняється
Головна перевірка
звірка товарів, категорій, замовлень, клієнтів і відгуків до й після
Аудит збірки
3–5
робочих днів, безкоштовно, документ лишається у вас
Що рухає кошторис
правки в ядрі й доля кожного модуля, не розмір каталогу
Умови
оплата за етапами, гарантійний строк 30 календарних днів
Етапи роботи

Прозорі етапи з погодженням на кожному кроці

Загальний строк:15–45 днів

  1. Аудит збірки

    3–5 робочих днів

    Знімаємо поточну версію, шукаємо правки в ядрі порівнянням із чистою збіркою, складаємо перелік модулів із долею кожного, дивимося тему й середовище. На виході — документ і дві оцінки: оновити поточний магазин або зібрати новий на актуальній версії з перенесенням даних.

  2. Тестовий майданчик і перше перенесення

    2–4 робочих дні

    Піднімаємо копію на окремому домені, закритому від індексації, ставимо нову версію платформи, переносимо базу й перший раз рахуємо цифри. Перше перенесення майже завжди дає розбіжність — тут і стає видно, де в даних аномалії.

  3. Ядро й модулі

    5–15 робочих днів

    Найдовший етап. Ставимо версії розширень під нову платформу, підбираємо аналоги, дописуємо власним кодом те, чому заміни немає. Правки з ядра переїжджають у модифікатори — щоб наступне оновлення не починалося з тієї самої археології.

  4. Тема під нову систему шаблонів

    4–10 робочих днів

    Переносимо або збираємо заново головну, категорію, картку, кошик і чекаут. Звіряємо з бойовим сайтом посторінково: мета — щоб різницю було видно лише в коді, а не на екрані покупця.

  5. Приймання на тестовому

    3–5 робочих днів

    Ви клікаєте магазин руками: замовлення від кошика до листа, оплата, доставка, адмінка, вивантаження. Паралельно проходить фінальна звірка кількостей і перевірка, що адреси сторінок збіглися з поточними.

  6. Перемикання і 48 годин після

    1 вечір + 2 доби спостереження

    Вечір узгодженого дня: заморозка змін, останнє перенесення даних, перемикання, прохід за чек-листом. Стара збірка лишається піднятою під планом відкату. Дві доби дивимося логи помилок, замовлення, сканування й фонові задачі.

Технології та інтеграції

На чому будуємо і з чим це з'єднується

Стек

  • OpenCart 4.x — гілка, яку розвивають; чесне обмеження: частина українських модулів під неї досі не вийшла
  • OpenCart 3.x — коли критичний для вас модуль існує лише під неї, це свідома зупинка на попередній гілці
  • PHP 8.x, MySQL / MariaDB актуальних версій — без цього нова гілка не запуститься
  • OCMOD-модифікатори замість правок у файлах платформи — щоб наступне оновлення не починалося з пошуку змін
  • Git — щоб у будь-який момент було видно, що саме змінилося, і було куди відкотитись
  • Тестовий майданчик на окремому домені, закритий від індексації
  • Скрипти звірки кількостей до і після — саме вони, а не відчуття, підтверджують, що дані на місці
  • Обмеження стека: OCMOD покриває не все — окремі зміни фізично неможливо винести з ядра, і такі місця ми називаємо в документі окремим списком

Інтеграції

  • LiqPay
  • WayForPay
  • monobank
  • Нова Пошта
  • Укрпошта
  • 1С / BAS
  • XML-фід на маркетплейси
  • Google Tag Manager
  • GA4
  • Google Search Console
Що входить

Повний перелік робіт і того, що ви отримуєте на виході

  • Піднімаємо тестовий майданчик як точну копію магазину: усі роботи йдуть там, ваш сайт увесь цей час приймає замовлення.
  • Переносимо дані й звіряємо цифри — товари, категорії, замовлення, клієнти, відгуки рахуються до й після, розбіжність має бути нульовою.
  • Розбираємо кожну правку в ядрі: потрібне бізнесу відтворюємо штатним модифікатором, від решти відмовляємося письмово, а не мовчки.
  • Проходимо модулі поштучно — версія під нову платформу, аналог або власний код; рішення по кожному ухвалюєте ви ще на аудиті.
  • Збираємо тему під нову систему шаблонів так, щоб покупець не помітив підміни: той самий вигляд, інший код під ним.
  • Зберігаємо адреси сторінок, а де це технічно неможливо — ставимо 301 і показуємо повний перелік до перемикання, не після.
  • Прогонимо весь шлях покупця на тестовому: каталог, фільтр, кошик, чекаут, оплата, доставка, лист про замовлення.
  • Перевіряємо обмін з обліковою системою й вивантаження на майданчики — після зміни платформи це ламається найчастіше.
  • Піднімаємо версію мови й бази на сервері як частину робіт: без цього нова гілка не стартує взагалі.
  • Перемикаємо у ваше вікно з готовим планом відкату; стара збірка лишається на місці, поки ви не приймете нову.
  • Тримаємо перші 48 годин під наглядом: помилки, замовлення, індексація, фонові задачі.
  • Умови: оплата за етапами, гарантійний строк 30 календарних днів після приймання.
Коли ця послуга не підходить

Що не входить у роботу — щоб не було сюрпризів на здачі

  • Ліцензії на нові версії платних модулів — купуються на вас
  • Редизайн: оновлення зберігає вигляд, а не змінює його
  • Обіцянка, що знятим із підтримки модулям знайдеться аналог
  • Наповнення каталогу й контентні роботи
  • Хостинг, домен, еквайринг
Кому підходить

Ситуації, у яких ця послуга дає результат

Сценарій 1 із 4

Хостинг попередив, що прибирає стару версію мови

Найчастіший привід — і найгірший момент, щоб починати. У виміряних нами магазинах на OpenCart 3.x ми регулярно бачимо PHP 7.3.33, версію без підтримки з грудня 2021 року. Поки провайдер її тримає, все працює; у день, коли він її вимкне, магазин віддасть білу сторінку. Оновлення в спокійному режимі й оновлення за дванадцять годин до відключення — це різні гроші й різна кількість ризику.

Розберемо вашу ситуацію на безкоштовному аудиті
Оновити поточний магазин чи зібрати новий на актуальній версії

Чим цей варіант відрізняється від альтернативи

Нова збірка з перенесенням данихНаш підхід
Що відбувається з правками в ядріне переносяться взагалі: потрібні функції формулюються заново як вимогирозбираємо поштучно й переносимо в модифікатори — довго, але логіка магазину зберігається
Модуліперелік перескладається під нову платформу — ставиться те, що є, а не те, що булоперелік лишається той самий, змінюються версії; дірки закриваємо аналогами
Темавигляд можна зробити тим самим, але на цьому етапі його зазвичай усе одно міняютьпереносимо вигляд, включно з дрібницями, до яких звик покупець
Адреси сторінокзберігаються тільки якщо це закласти в завдання; інакше потрібна карта редиректівзберігаються, це умова робіт
Коли дешевшескладальна збірка з десятками вбудованих модулів і без вихідників темизбірка близька до чистої, правок мало, модулі мають версії під нову гілку
Безкоштовний аудит

Безкоштовний аудит збірки перед оновленням

Перед оновленням треба знати три речі: що у вас нестандартного, чи є заміна кожному модулю в новій версії й скільки правок зроблено в ядрі. Аудит відповідає саме на них.

Що ми міряємо

  1. Поточна версія й спосіб її встановленняЯка збірка стоїть і чи оновлювалася вона раніше. Складальні збірки з «уже вбудованими» модулями оновлюються значно важче за чисті.
  2. Правки в ядріСкільки файлів платформи змінено напряму. Кожна така правка не переїде сама: її треба або відтворити модифікатором, або відмовитися від неї свідомо.
  3. Перелік модулів і їхня доляДля кожного розширення — чи є версія під нову платформу, чи є аналог, чи функцію доведеться писати заново. Це головний множник кошторису.
  4. ШаблонЧи є вихідники теми й чи існує вона під нову версію. Між великими версіями система шаблонів змінюється, і сторонні теми часто не переносяться.
  5. Стан бази й обсяг данихКількість товарів, замовлень і клієнтів, які треба перенести без втрат. Ці цифри звіряються до й після — це головна перевірка успіху.
  6. СередовищеВерсія мови й бази. У виміряних нами магазинах ми регулярно бачимо PHP 7.3.33 і фронтенд на бібліотеках десятирічної давності — наприклад, збірку з jQuery 2.1.1 і третьою версією фреймворка верстки. Нова версія платформи вимагатиме сучаснішого середовища.

Що ви отримуєте

  • Документ по збірці: версія, правки в ядрі, перелік модулів із долею кожного, стан теми.
  • Оцінку двома сценаріями: оновлення поточного магазину проти збірки на новій версії з перенесенням даних.
  • Перелік функцій, які доведеться відтворювати заново, з оцінкою по кожній.
  • Розмову на 30–40 хвилин по документу.

Строк: 3–5 робочих днів

Чому це безкоштовно

Бо доля кожного модуля — це і є кошторис оновлення, а перевірити її можна тільки поштучно. Документ ваш незалежно від того, робимо ми оновлення чи ні.

Що далі

Після аудиту — сума й строк по етапах, договір, рахунок, акт. Іноді з переліку модулів стає видно, що зібрати магазин заново на новій версії дешевше за оновлення старого; тоді ми покажемо обидві цифри.

Коротка форма: контакт і адреса сайту

Не знайшли свій випадок?

Опишіть, як це влаштовано у вас, — відповімо, чи підходить «Оновлення версії OpenCart» і що це означає у вашій ситуації. Без брифу й без дзвінка: одне питання, одна відповідь.

Договір і документи

Працюємо офіційно

Договір, акт і рахунок — на кожен проєкт, а не тільки на великий. Без документів у вас немає ні прав на роботу, ні підстави провести витрати.

Нам довіряють6 брендів

Нам довіряють: Kvant Energy, GYPSUN, Naturel Cosmetics, Pancer Protection, LUGI, BeeTech

Умови, зафіксовані письмово8 пунктів
  • Договір, акт і гарантія 30 днів

    На кожен проєкт письмовий договір: обсяг, строки, сума, порядок приймання. Після здачі — акт і рахунок, а далі 30 календарних днів гарантії: помилки з нашої вини усуваємо безоплатно. Усне з дзвінка дублюємо письмово того ж дня.

  • ФОП і безготівковий розрахунок

    Виконавець — зареєстрований ФОП. Оплата на рахунок із закривними документами.

  • Права й доступи — ваші

    Код, дизайн і матеріали переходять до вас після повної оплати. Домен, хостинг, репозиторій, аналітику оформлюємо на вас.

  • Портал клієнта замість переписки

    На час роботи ви отримуєте доступ до порталу: договори, рахунки, акти й стан проєкту в одному місці.

  • Сайти в дев'яти країнах

    Наші сайти працюють у дев'яти країнах: крім України — Польща, Німеччина, Австрія, Англія, Норвегія, Болгарія, Молдова, Іспанія.

  • Цифри, які можна перевірити

    Кожен кейс у портфоліо — з посиланням на живий сайт і технічним виміром.

  • Спершу аудит, потім сума

    Прайсу на сайті немає навмисно: обсяг тієї самої роботи у двох клієнтів відрізняється в рази.

  • Кажемо «ні», коли не впевнені

    Якщо задача не наша або строк нереальний — скажемо одразу.

  • Договір, акт і гарантія 30 днів

    На кожен проєкт письмовий договір: обсяг, строки, сума, порядок приймання. Після здачі — акт і рахунок, а далі 30 календарних днів гарантії: помилки з нашої вини усуваємо безоплатно. Усне з дзвінка дублюємо письмово того ж дня.

  • ФОП і безготівковий розрахунок

    Виконавець — зареєстрований ФОП. Оплата на рахунок із закривними документами.

  • Права й доступи — ваші

    Код, дизайн і матеріали переходять до вас після повної оплати. Домен, хостинг, репозиторій, аналітику оформлюємо на вас.

  • Портал клієнта замість переписки

    На час роботи ви отримуєте доступ до порталу: договори, рахунки, акти й стан проєкту в одному місці.

  • Сайти в дев'яти країнах

    Наші сайти працюють у дев'яти країнах: крім України — Польща, Німеччина, Австрія, Англія, Норвегія, Болгарія, Молдова, Іспанія.

  • Цифри, які можна перевірити

    Кожен кейс у портфоліо — з посиланням на живий сайт і технічним виміром.

  • Спершу аудит, потім сума

    Прайсу на сайті немає навмисно: обсяг тієї самої роботи у двох клієнтів відрізняється в рази.

  • Кажемо «ні», коли не впевнені

    Якщо задача не наша або строк нереальний — скажемо одразу.

NDA підписуємо на запит. Після завершення співпраці наші доступи до ваших сервісів видаляємо самі.

Що впливає на вартість

Чому дві однакові на вигляд задачі рахуються по-різному

  • Правки в ядріГоловний множник. Кожен змінений файл платформи треба знайти, зрозуміти, навіщо його правили, і вирішити долю: відтворити модифікатором чи прибрати. Магазин без правок і магазин із двома десятками правок мають однаковий каталог і різний строк у рази.
  • Доля кожного модуляРозширення з готовою версією під нову платформу — це година роботи. Розширення без аналога, функцію якого доводиться писати заново, — окремий проєкт усередині оновлення. Тому кошторис рахується по переліку модулів, а не по кількості товарів.
  • Тема й наявність вихідниківЄ вихідники і тема існує під нову версію — переносимо. Немає вихідників або автор теми зник — збираємо вигляд заново під нову систему шаблонів. Це та частина, де діапазон найширший.
  • Чистота данихКаталог із дублями, порожніми категоріями й товарами поза категоріями переносити дорожче: кожну аномалію треба розібрати, інакше вона переїде разом з усім іншим і зіпсує звірку.
  • Стан сервераЯкщо версію мови й бази можна підняти на поточному хостингу — це кілька годин. Якщо провайдер тримає стару збірку жорстко, до оновлення додається переїзд на інше середовище.
  • Чи можна заморозити зміниПоки йде робота на тестовому майданчику, кожна нова партія товарів і кожне замовлення на бойовому — це розходження між двома копіями. Домовленість про вікно тиші коштує нуль, а економить перенесення даних набіло.
Кейси

Задачі та результат у цифрах — усі показники зняті нашим виміром

магазин систем автоматичного поливу з каталогом на 300 позицій

Задача
Зафіксувати фактичний стан збірки до розмови про оновлення: що всередині, скільки даних і що доведеться відтворювати руками.
Рішення
Каталог перерахували двома незалежними методами — обхід кореневих категорій по пагінації й об'єднання видачі внутрішнього пошуку по 18 різних запитах. Далі заміри швидкості по п'яти повторах, розбір коду сторінки й заголовків сервера.
Результат
300 товарів у 40 категоріях на 4 рівнях вкладеності, обидва методи дали той самий набір ідентифікаторів — розбіжність 0%, і саме ця цифра стає контрольною після перенесення. Перша відповідь 235 мс (медіана з 5 замірів), повний HTML 262 мс, вага головної 143,6 КБ і 22,5 КБ у brotli. У чекауті 6 способів доставки від 2 перевізників і 3 способи оплати — усе це доведеться відтворювати на новій версії поштучно. Технічна збірка: OpenCart 3.x із jQuery 2.1.1 і третьою версією фреймворка верстки, тема chameleon. Окремо знайшли в темі 4 приховані посилання на сторонній домен перед закриттям body зі стилем display:none — при перезбірці теми вони не переїжджають, і це рідкісний випадок, коли оновлення прибирає проблему саме собою.

інтернет-магазин офіційного продавця садового інструменту

Задача
Оцінити технічний стан магазину з каталогом на понад тисячу позицій — зокрема, наскільки терміново треба міняти середовище.
Рішення
Заміри швидкості й ваги, розбір карти сайту на унікальність адрес, перевірка заголовків сервера й структурованих даних.
Результат
Середовище — PHP 7.3.33, без підтримки з грудня 2021 року: питання вже не «чи оновлювати», а «до якої дати». У карті сайту 1 300 унікальних адрес — близько 1 213 карток товару і 70 категорій — при 4 236 записах усього, тобто приблизно 3,3 дубля на адресу. Перша відповідь 625 мс, повне завантаження 752,5 мс при 350,4 КБ розмітки. Увімкнено новий протокол і суворе захищене з'єднання. Структурованих даних товару на головній немає, тег H1 відсутній. Уточнення: оновлення версії саме собою не прибере ні 3,3 дубля на адресу, ні відсутній H1 — це окремі роботи, які ми виносимо окремим рядком, а не ховаємо всередину апгрейду.
Що потрібно від вас

Без цього не почнемо — краще підготувати заздалегідь

  1. Доступи: адмінка, файли, база, панель хостингу.
  2. Перелік модулів, за які ви платите, з ліцензіями.
  3. Вихідники теми, якщо вони є.
  4. Рішення по функціях, для яких немає готової заміни: відтворювати чи відмовитися.
  5. Погоджене вікно перемикання.
  6. Одну людину з правом приймати роботи на тестовому майданчику.
Якщо чогось із цього немає — скажіть, підкажемо, як зібрати або зробимо самі окремою задачею.
Часті питання

Те, що питають найчастіше — з конкретними відповідями

Чи можна оновитися однією кнопкою з адмінки?

Між дрібними версіями однієї гілки — часто так, і це нормальна гігієна. Між великими гілками — ні. Там переписані структура бази, система розширень і система шаблонів, тому старі модулі й стара тема не запускаються в принципі. Те, що прийнято називати оновленням, технічно є збіркою магазину на новій платформі з перенесенням даних і відтворенням функцій. Звідси й правило кошторису: рахуємо по переліку модулів і правок, а не по розміру каталогу.

Я втрачу товари, замовлення й клієнтів?

Не повинні, і це не питання довіри, а питання цифр. Дані переносяться на тестовий майданчик, після чого рахуються товари, категорії, замовлення, клієнти й відгуки — до й після. Розбіжність має бути нульовою. Перше перенесення майже завжди дає ненуль: у виміряному магазині поливу контрольна цифра — 300 товарів у 40 категоріях, і поки на тестовому не з'явиться рівно вона, далі ми не рухаємось. Причину з'ясовуємо до перемикання, а не після.

Що буде з моїми модулями?

Кожен розбирається окремо, і це найдовша частина аудиту. Є версія під нову платформу — ставимо її. Є аналог — показуємо, чим він відрізняється від звичного. Немає нічого — оцінюємо реалізацію функції власним кодом або пропонуємо від неї відмовитися. Рішення по кожному пункту ухвалюєте ви: ми бачимо трудомісткість, ви бачите, чи справді ця функція потрібна бізнесу. Ліцензії на нові версії платних розширень купуються на вас, не на підрядника.

Дизайн збережеться?

Зовнішній вигляд — так, це мета робіт. Технічно ж тема часто збирається заново, бо система шаблонів між гілками інша, а сторонні теми під нову версію нерідко просто не випускались. Ми відтворюємо вигляд, а не копіюємо файли. Наша рекомендація, і на ній ми наполягаємо: не змішуйте оновлення з редизайном. Коли одночасно змінюються платформа й макети, будь-яка проблема після запуску має два можливих джерела, і розбір з'їдає більше часу, ніж обидві роботи окремо.

А якщо просто не оновлюватися?

Якщо середовище ще підтримується провайдером, магазин продає, а нових модулів вам не треба — це робочий варіант, і ми так і скажемо. Термін придатності в такого рішення все ж є: у виміряному нами магазині садового інструменту стоїть PHP 7.3.33, версія без підтримки з грудня 2021 року, і день, коли хостинг її прибере, призначає провайдер, а не ви. Різниця між плановим оновленням і аварійним — у темпі, ціні й кількості нервів.

Адреси сторінок збережуться?

Так, і це умова робіт, а не побажання. Якщо при переході змінюються адреси, це вже переїзд: потрібна карта редиректів, частина позицій просідає, а відновлення розтягується на місяці. Ми зберігаємо структуру адрес, а в поодиноких місцях, де це технічно неможливо, закриваємо старі адреси 301-редиректом і показуємо перелік до перемикання. Після запуску дивимося помилки сканування в Search Console — доступ до неї потрібен саме для цього.

Скільки триває і скільки магазин не працюватиме?

Роботи — 18–45 робочих днів. Простій — вечір. Нижня межа строку означає збірку без правок у ядрі й невеликий набір стандартних модулів; верхня — десятки змін у файлах платформи й платні розширення, частину функцій яких доводиться писати заново. Решта відбувається на тестовому майданчику, тому бойовий сайт торгує до останнього дня. Перемикання ставимо на найтихіший для вашого магазину вечір, а стара збірка лишається піднятою про всяк випадок.

Оновлення виправить SEO-проблеми, які в мене вже є?

Ні, і обіцяти протилежне було б нечесно. Нова версія платформи не прибирає дублювання адрес, не дописує тексти й не додає структурованих даних. У виміряному магазині садового інструменту в карті сайту 4 236 записів на 1 300 унікальних адрес — близько 3,3 дубля на адресу; після оновлення їх буде рівно стільки ж, якщо не зайнятися цим окремо. Такі роботи ми виносимо окремим рядком кошторису. І одразу чесна межа: чистка дублів не додає трафіку, вона перестає його розпорошувати, а кількість сторінок в індексі якийсь час може навіть падати — це очікуваний хід подій, а не погіршення.

Надішліть доступ до адмінки й перелік модулів, за які платите.

У відповідь — документ по збірці: правки в ядрі, доля кожного модуля, стан теми і дві оцінки, оновлення проти нової збірки. Якщо оновлюватися вам зараз не варто, почуєте це першим листом.

З виміряних кейсів300 товарів у 40 категоріях на 4 рівнях вкладеності, обидва методи дали той самий набір ідентифікаторів

Дивитись кейси
  • Відповідь протягом 2 годин
  • Без зобов’язань
  • Працюємо за договором

Прайса на сайті немає навмисно: обсяг тієї самої роботи у двох клієнтів відрізняється в рази, і цифра «від» у такому разі нічого не пояснює. Спершу безкоштовний аудит — рахуємо ваші сторінки, дублі й швидкість, — потім називаємо суму й строк і фіксуємо їх у договорі.