SEO · OpenCart

CatCode All to Lat — автоматичні SEO URL транслітерацією для OpenCart 2.x, 3.x і 4.x

SEO URL пишеться з назви сам при кожному збереженні товару, категорії, виробника чи сторінки — включно з імпортом. Плюс масова конвертація каталогу з відкатом і 301 зі старих адрес.

Версія
v1.0.0 (OpenCart 4)
v1.0.0 (OpenCart 3.x)
v1.0.0 (OpenCart 2.3)
Сумісність
OpenCart 2.3.x, 3.0.x та 4.0.2 – 4.1.x
Платформа
OpenCart
CatCode All to Lat — автоматичні SEO URL транслітерацією для OpenCart 2.x, 3.x і 4.x

Що всередині

  • SEO URL з назви при кожному збереженні — товари, категорії, виробники, сторінки
  • Працює для імпорту, чужих масових редакторів і синхронізації з ERP, а не лише для форми
  • Українська (КМУ 55/2010), російська (BGN/PCGN), болгарська, сербська, білоруська
  • Грецька і латиниця з діакритикою: pl, cs, sk, de, fr, es, pt, tr, ro, hu, балтійські, скандинавські, vi
  • Німецькі умляути як ae/oe/ue — окремою опцією
  • Формула для товару: [name], [model], [sku], [id]
  • Масова конвертація каталогу батчами з попереднім переглядом «було → стане»
  • Журнал змін і відкат прогону одним кліком
  • 301 зі старих адрес, реальний 404 лишається 404
  • Окремі ключові слова для кожної мови магазину (OpenCart 3 і 4)
  • Три збірки: OpenCart 2.3, 3.0.x і 4.0.2–4.1.x
  • Безкоштовний

CatCode All to Lat — SEO URL пишеться з назви сам, щоразу коли ви зберігаєте товар, категорію, виробника чи інформаційну сторінку. Ніхто більше не тисне «згенерувати» по кожній позиції, а імпортований уночі каталог не прокидається без адрес.

Налаштування модуля All to Lat в адмінці OpenCart 4
Поруч з кожним типом запису видно, скільки позицій уже мають SEO URL, а скільки ще ні — обсяг роботи зрозумілий до першого кліку.

Чому хук на моделі, а не на формі

Модуль слухає подію admin/model/catalog/* add/edit before — останню точку, де масив даних ще можна змінити, і першу, через яку проходить кожен, хто пише в каталог: форма товару, імпорт з CSV, чужий масовий редактор, синхронізація з ERP. Розширення, що патчить шаблон форми, покриває лише перший випадок — саме тому після нічного імпорту товари стоять без ЧПУ.

На OpenCart 4 поле SEO URL додатково заповнюється просто у формі, поки ви друкуєте назву: там ядро перевіряє це поле у контролері ще до моделі, тож без цього форма просто не збереглася б.

Поле SEO URL у формі виробника заповнене транслітерацією назви
На OpenCart 4 адреса зʼявляється в полі просто поки ви друкуєте назву — і одразу для кожної мови магазину.

Транслітерація в три шари

1. Таблиця кирилиці за стандартом. Українська (КМУ 55/2010) дає и→y, г→h, х→kh, зг→zgh і я→ya на початку слова; російська BGN/PCGN — и→i, г→g. Прогнати український каталог російською таблицею означає отримати hodinnik замість hodynnyk і випасти з видачі за власними назвами товарів. Болгарська, сербська/македонська і білоруська мають свої таблиці.

2. Універсальна таблиця — грецька і латиниця з діакритикою: польська, чеська, словацька, німецька, французька, іспанська, португальська, турецька, румунська, угорська, балтійські, скандинавські, в’єтнамська. Тут вибір мови не потрібен: ł — це l усюди. Виняток — німецькі умляути, вони вмикаються опцією, бо ü→ue правильно німецькою і неправильно турецькою.

3. iconv ASCII//TRANSLIT для всього, чого не було в таблицях, — невідома абетка зводиться до найближчої латиниці, а не схлопується в дефіси.

Апострофи не розривають слово: О'Хараokhara, а не o-khara. Ключове слово ріжеться по межі слова на заданій довжині й перевіряється на унікальність у межах магазину.

Масова конвертація каталогу

Окрема вкладка для магазину, який уже працює. Два режими: тільки записи без SEO URL (безпечний — може лише додати адреси) і всі записи з перезаписом. Перед запуском — попередній перегляд «було → стане» на 25 рядків, який нічого не пише. Прогон іде батчами по 100 рядків ланцюжком, тож каталог на десятки тисяч позицій не впирається в max_execution_time.

Кожна зміна лягає в журнал cc_translit_log: старе ключове слово, нове, мова, магазин, номер прогону. Звідси працюють дві речі — кнопка «Відкотити» на цілий прогон і 301 зі старої адреси.

Попередній перегляд масової конвертації SEO URL у OpenCart
Попередній перегляд нічого не пише: спершу видно колонки «Було» і «Стане», і лише потім запускається сам прогон.

301 зі старих адрес

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

Журнал прогонів масової конвертації з кнопкою відкату
Кожен прогон лишається в історії — «Відкотити» повертає всі адреси цього прогону до попередніх значень.

Три збірки в одному місці

  • OpenCart 4.0.2 – 4.1.x — основна кнопка завантаження;
  • OpenCart 3.0.x — окрема кнопка нижче (працює і зі старою схемою url_alias версій 3.0.0–3.0.2, і з seo_url від 3.0.3);
  • OpenCart 2.3.xcc_translit-oc2.ocmod.zip.

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

Часті питання

Чи змінить модуль адреси, які вже є в індексі Google?

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

Чому SEO URL не з'явився після імпорту чужим модулем?

Має з'явитися — саме заради цього хук стоїть на моделі, а не на формі. Перевірте, що в налаштуваннях увімкнено потрібний тип запису (товари, категорії, виробники, сторінки) і що імпорт справді пише через модель OpenCart, а не прямими SQL-запитами в базу.

Що буде зі старими посиланнями після масової конвертації?

Старе ключове слово лишається в журналі, і запит за ним віддає 301 на нову адресу. Адреса, якої ніколи не існувало, як і раніше віддає 404.

У магазині дві мови — адреси будуть однакові?

Ні. На OpenCart 3 і 4 ключове слово зберігається окремо для кожної мови й будується з назви саме цієї мови. Прогін масової конвертації робиться по черзі для кожної мови.

ЧПУ згенерувалися, а сторінка віддає головну. Чому?

На OpenCart 4 адреса резолвиться посегментно, і без службового route-рядка маршрут лишається порожнім — магазин мовчки віддає головну з кодом 200. OpenCart створює ці рядки лише для мови встановлення; модуль додає їх для решти мов сам під час прогону.

Стоїть SEO Pro або схожий SEF-модуль — не конфліктує?

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

Скільки коштує?

Безкоштовно, без обмежень за кількістю товарів чи прогонів.

Питання щодо модуля?

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

@catcode_support

Не той варіант, що шукаєте?

Ми робимо кастомні модулі під WordPress, WooCommerce, OpenCart і Shopify. Розкажіть про задачу — підготуємо оцінку.

Замовити кастомний модуль