CatCode All to Lat — автоматичні SEO URL транслітерацією для OpenCart 2.x, 3.x і 4.x
SEO URL пишеться з назви сам при кожному збереженні товару, категорії, виробника чи сторінки — включно з імпортом. Плюс масова конвертація каталогу з відкатом і 301 зі старих адрес.
Що всередині
- 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 пишеться з назви сам, щоразу коли ви зберігаєте товар, категорію, виробника чи інформаційну сторінку. Ніхто більше не тисне «згенерувати» по кожній позиції, а імпортований уночі каталог не прокидається без адрес.

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

Транслітерація в три шари
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 зі старої адреси.

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.x — cc_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 — відповімо протягом робочого дня. Допоможемо з налаштуванням, сумісністю та активацією ключа.
Поки що жодного відгуку. Будь першим — нижче.
Залишити відгук
Відгук модерується перед публікацією — це звичайно займає до 24 годин.
Поки питань немає. Запитай — ми відповімо протягом 24 годин.
Поставити питання
Зазвичай відповідаємо протягом 24 годин у робочий час.
Купівля модуля
—