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 пишется из названия сам, каждый раз когда вы сохраняете товар, категорию, производителя или информационную страницу. Никто больше не жмёт «сгенерировать» по каждой позиции, а импортированный ночью каталог не просыпается без адресов.

Почему хук на модели, а не на форме
Модуль слушает событие 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 часов в рабочее время.
Покупка модуля
—