010110101010110101010110101010110101010110101110101100110101100110101100110101100110101100001101011001101011001101011001101011001101011101100110101100110101100110101100110101100110011010101011010101011010101011010101011010101100110101100110101100110101100110101100110101010101101010101101010101101010101101010101101110010110110010110110010110110010110110010110</>{ }{ }</>
  • Доробки · OpenCart 4.x

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

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

Подивитись, як це працює
Вартість
після безкоштовного аудиту
Гарантія
30 днів після підписання акта
Строк робіт
15–45 робочих днів; саме перемикання — один вечір
після безкоштовного аудиту
Вартість
30
Гарантія

днів після підписання акта

15–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 року. Поки провайдер її тримає, все працює; у день, коли він її вимкне, магазин віддасть білу сторінку. Оновлення в спокійному режимі й оновлення за дванадцять годин до відключення — це різні гроші й різна кількість ризику.

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

Чим цей варіант відрізняється від «Нова збірка з перенесенням даних»

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

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

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

Що міряємо

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

Що ви отримуєте на руки

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

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

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

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

Що далі

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

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

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

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

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

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

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

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

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

    Виконавець — зареєстрований ФОП. Оплата на рахунок із закривними документами, які бухгалтерія проведе як витрати. Курс для гривневої оплати фіксується договором, а не з’ясовується постфактум.

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

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

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

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

  • Замовники з Європи

    Серед робіт — проєкти для Норвегії, Болгарії та Іспанії: болгарський магазин трьома мовами з кур’єрською доставкою, іспанський з оплатою карткою й переказом, норвезький сайт клініки. Це видно в портфоліо, а не тільки в описі.

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

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

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

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

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

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

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 — доступ до неї потрібен саме для цього.

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

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

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

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

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

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

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

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