Alias Market PRO - Управление алиасами
Автоматически создаёт читаемые, транслитерированные алиасы (URL‑пути) для товаров модуля market на Cotonti. Интерфейс управления алиасами, заголовками и метазаголовками в админке плагина.
Alias Market PRO — автоматические алиасы для товаров модуля Market
Плагин для Cotonti v1.+
Автоматически создаёт читаемые, транслитерированные алиасы (URL‑пути) для товаров модуля market, если пользователь оставил поле алиаса пустым.
Полностью решает проблему зависимости транслитерации от языка интерфейса сайта: теперь используется внутренняя функция транслитерации, не завязанная на языковые файлы ядра Cotonti.
Оглавление
- История создания и решаемая проблема
- Возможности
- Требования
- Структура плагина
- Установка
- Настройка плагина в админке
- Использование
- Административная панель (три вкладки)
- Подробное описание каждого файла
- Пример использования
- Устранение неполадок
- Лицензия
- Ссылки
История создания и решаемая проблема
Исходный плагин (версия 2.1.3) использовал для транслитерации кириллицы системный языковой файл cot_langfile('translit', 'core'):
if($cfg['plugin']['aliasmarketpro']['translit'] && file_exists(cot_langfile('translit', 'core')))
{
include cot_langfile('translit', 'core');
if (is_array($cot_translit_custom))
{
$title = strtr($title, $cot_translit_custom);
}
elseif (is_array($cot_translit))
{
$title = strtr($title, $cot_translit);
}
}
Проблема: на сайте с русским языком интерфейса и украинским контентом заголовков товаров подгружалась русская таблица транслитерации (ГОСТ 7.79-2000, файл lang/ru/translit.lang.php). Украинские буквы і, є, ї, ґ в ней отсутствовали, поэтому они либо оставались без изменений, либо удалялись, что делало алиас некорректным.
Решение: полностью отказаться от зависимости от языковых файлов ядра и реализовать встроенную функцию транслитерации, которая содержит единую таблицу символов, охватывающую как русский, так и украинский алфавиты. Это гарантирует корректную генерацию алиаса независимо от текущего языка интерфейса.
Возможности
- Автоматическая генерация алиаса из заголовка товара при его добавлении или редактировании, если поле алиаса не заполнено.
- Внутренняя транслитерация кириллицы (русский + украинский) в латиницу по единой таблице — не зависит от языковых файлов Cotonti.
- Удаление всех символов, кроме букв, цифр, дефиса, подчёркивания и пробела.
- Настройки:
- включение/отключение транслитерации;
- добавление ID товара в начало алиаса;
- поведение при дубликате алиаса (добавление ID или случайного числа);
- выбор разделителя слов (дефис, подчёркивание, точка);
- приведение к нижнему регистру.
- Административная панель с тремя вкладками:
- Статистика — общее количество товаров, сколько с алиасами, без алиасов, без Meta Title.
- Списки и Алиасы — просмотр списка товаров с ID, заголовком, мета‑заголовком и алиасом.
- Управление — массовое редактирование заголовка, Meta Title и алиаса для нескольких товаров на одной странице с сохранением изменений.
- Действия на вкладке «Статистика»:
- Создать алиасы — массовая генерация алиасов для всех товаров, у которых алиас пуст.
- Очистить все алиасы — полная очистка поля
fieldmrkt_aliasу всех товаров (с подтверждением).
- Пагинация в списках и формах управления.
- Все интерфейсные строки локализованы (русский, английский).
Требования
- Cotonti v1.+ (протестировано на актуальной версии)
- Модуль
market(должен быть установлен и активен) - PHP 8.5+
- MySQL 8.4+
- Права администратора для доступа к панели управления плагином.
Структура плагина
aliasmarketpro/
├── aliasmarketpro.setup.php # Регистрация плагина и описание настроек
├── aliasmarketpro.market.php # Хук для добавления/редактирования товара
├── aliasmarketpro.admin.php # Административная панель
├── inc/
│ └── aliasmarketpro.functions.php # Функции транслитерации, конвертации, обновления
├── lang/
│ ├── aliasmarketpro.ru.lang.php # Русский языковой файл
│ └── aliasmarketpro.en.lang.php # Английский языковой файл
└── tpl/
└── aliasmarketpro.admin.tpl # Шаблон админ‑панели
Установка
- Скачайте ZIP‑архив плагина из официального репозитория.
- Распакуйте архив в папку
plugins/вашего сайта. - Зайдите в админ‑панель Cotonti → Расширения.
- Найдите «Alias Market PRO» и нажмите «Установить».
После установки плагин сразу начинает работать (при добавлении/редактировании товаров алиас будет генерироваться автоматически, если поле не заполнено).
Настройка плагина в админке
Настройки доступны по пути Расширения → Alias Market PRO → Конфигурация.
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
translit | radio | 1 (вкл.) | Включает транслитерацию нелатинских символов (кириллицы) в латиницу. |
prepend_id | radio | 0 (выкл.) | Добавлять ID товара в начало алиаса. Пример: 123-название-товара. |
on_duplicate | select | ID | Действие при обнаружении дубликата алиаса (если prepend_id выключен): ID — добавить ID товара в конец; Random — добавить случайное число от 2 до 99. |
sep | select | - | Разделитель слов: дефис (-), подчёркивание (_), точка (.). |
lowercase | radio | 1 (вкл.) | Приводить алиас к нижнему регистру. |
Использование
Автоматическое создание алиаса
Когда вы добавляете или редактируете товар в модуле market и оставляете поле «Alias» пустым, плагин срабатывает на хуках market.add.add.done и market.edit.update.done. Процесс генерации алиаса:
- Берётся заголовок товара (
fieldmrkt_title). - Если включена транслитерация, строка пропускается через внутреннюю функцию
aliasmarketpro_transliterate(), которая заменяет все кириллические символы (русские и украинские) согласно единой таблице. - Удаляются все символы, кроме букв, цифр, дефиса, подчёркивания и пробела (регулярное выражение
[^\p{L}0-9\-_ ]). - Пробелы заменяются на выбранный разделитель.
- Если включена опция «Приводить к нижнему регистру», все буквы становятся строчными.
- Если включена опция «Добавить ID в начало», перед алиасом ставится
{id}{разделитель}. - Проверяется уникальность: если сгенерированный алиас уже существует у другого товара и
prepend_idвыключен, то в конец добавляется ID товара или случайное число (в зависимости от настройкиon_duplicate). - Готовый алиас записывается в поле
fieldmrkt_alias.
Административная панель (три вкладки)
Панель доступна через Админка → Инструменты → Alias Market PRO.
Вкладка «Статистика»
Показывает четыре числа:
- Всего товаров — количество товаров с непустым заголовком.
- С алиасом — товары, у которых заполнено поле
fieldmrkt_alias. - Без алиаса — товары с пустым алиасом.
- Без Meta Title — товары, у которых не заполнен мета‑заголовок (
fieldmrkt_metatitle).
Кнопки действий:
- Создать алиасы — запускает генерацию алиасов для всех товаров, где алиас отсутствует.
- Очистить все алиасы — стирает алиас у всех товаров (требуется подтверждение).
- Конфигурация — переход к настройкам плагина.
Вкладка «Списки и Алиасы»
Отображает таблицу всех товаров (с пагинацией по 25 записей на странице) со столбцами:
- ID
- Заголовок (является ссылкой на страницу товара на сайте)
- Meta Title
- Алиас
Предназначена для быстрого обзора состояния алиасов.
Вкладка «Управление»
Позволяет редактировать заголовок, Meta Title и алиас сразу для нескольких товаров на одной странице (по 10 записей). Поле ID не редактируется.
Чтобы изменить данные:
- Внесите правки в нужные поля.
- Нажмите кнопку «Обновить».
После сохранения вы останетесь на той же странице пагинации, с которой начали.
Подробное описание каждого файла
Ниже — детальное описание всех файлов плагина.
aliasmarketpro.setup.php
Назначение: регистрация плагина в системе Cotonti и описание его настроек.
Содержит две обязательные секции:
[BEGIN_COT_EXT] … [END_COT_EXT]– метаданные:Code– уникальный идентификаторaliasmarketpro.Name– отображаемое имя.Category–seo(категория в админке).Version– текущая версия (2.5.0 в данном файле).Requires_modules–market.- Права доступа гостей и пользователей.
[BEGIN_COT_EXT_CONFIG] … [END_COT_EXT_CONFIG]– список параметров конфигурации:translit,prepend_id,on_duplicate,sep,lowercase.- Каждая строка задаёт порядок сортировки, тип поля (radio/select), значение по умолчанию и описание.
Без этого файла Cotonti не сможет установить плагин и предоставить форму настроек.
aliasmarketpro.market.php
Хуки: market.add.add.done, market.edit.update.done
Выполняется сразу после добавления или обновления товара. Код минимален:
if (empty($ritem['fieldmrkt_alias']))
{
require_once cot_incfile('aliasmarketpro', 'plug');
$ritem['fieldmrkt_alias'] = aliasmarketpro_update($ritem['fieldmrkt_title'], $id);
}
Если поле алиаса пусто, подключаются функции плагина и вызывается aliasmarketpro_update(), которая генерирует новый алиас на основе заголовка и ID товара. Результат записывается прямо в массив $ritem, и модуль market сохраняет его в базу данных.
aliasmarketpro.admin.php
Хук: tools
Формирует страницу администрирования плагина (в разделе «Инструменты»). Логика работы:
- Определяет текущую вкладку (
tab) и действие (a) из URL. - Назначает переменные навигации для шаблона (активные вкладки, ссылки).
- Обработка специальных действий (до вывода вкладок):
a=create– выбирает все товары с пустым алиасом, для каждого вызываетaliasmarketpro_update(), выводит сообщение с количеством созданных алиасов.a=clear_aliases– обнуляет полеfieldmrkt_aliasу всех товаров, выводит сообщение об очистке.- После выполнения редиректит на ту же вкладку (с сохранением параметров).
- Формирование содержимого вкладок:
- Статистика – выполняет четыре SQL‑запроса для подсчёта показателей, передаёт их в шаблон, а также URL для кнопки «Создать алиасы».
- Списки и Алиасы – получает данные с пагинацией (LIMIT/OFFSET) из таблицы
cot_market. Для каждого товара вычисляет URL черезcot_market_url(), присваивает переменныеLIST_ROW_*и парсит блокLIST_ROW. При отсутствии товаров выводитLIST_EMPTY. Добавляет пагинацию. - Управление – аналогично получает данные с пагинацией. Если пришёл POST‑запрос с
a=update, в цикле обновляет заголовок, мета‑заголовок и алиас для всех ID, переданных в форме. Использует$backUrlс номером текущей страницы (durl), чтобы после сохранения вернуться на ту же страницу. Проблема с&в URL решается заменой&→&перед редиректом.
- Выводит системные сообщения, парсит главный блок
MAINи возвращает HTML.
inc/aliasmarketpro.functions.php
Содержит три основные функции плагина.
aliasmarketpro_transliterate($str)
Внутренняя функция транслитерации. Принимает строку и пропускает через единый массив замен, отсортированный от длинных последовательностей к коротким:
- Украинские уникальные буквы:
Є,є,Ї,ї,Ґ,ґ,І,і. - Русские буквы, отсутствующие в украинском:
ё,Ё,ы,Ы,э,Э,ъ,Ъ. - Общие многосимвольные комбинации:
Щ→Shch,Ж→Zh,Х→Kh,Ц→Ts,Ч→Ch,Ш→Sh,Ю→Yu,Я→Ya. - Одиночные буквы (общие для русского и украинского):
А→A,б→bи т.д. - Мягкий знак и апострофы заменяются на пустую строку (удаляются).
Возвращает строку с заменёнными символами. Не зависит от внешних файлов.
aliasmarketpro_convert($title, $id, $duplicate)
Основная функция преобразования заголовка в алиас. Выполняет шаги:
- Если
translitвключён, вызываетaliasmarketpro_transliterate(). - Удаляет запрещённые символы через
preg_replace('#[^\p{L}0-9\-_ ]#u', '', $title). - Заменяет пробелы на разделитель из конфига.
- При
lowercase=1приводит к нижнему регистру. - Если
prepend_id=1и$idне пуст, добавляет префикс$id . $sep. - Если
$duplicate=true, добавляет в конец ID (если задан и выбран режимID) или случайное число (режимRandom). Возвращает готовый алиас.
aliasmarketpro_update($title, $id)
Вызывается при добавлении/редактировании товара и при массовом создании. В цикле do...while:
- Генерирует алиас через
aliasmarketpro_convert(). - Если
prepend_idвыключен, проверяет в базе существование такого алиаса у другого товара (fieldmrkt_id != $id). - Если дубликат найден, устанавливает
$duplicate=true, и на следующей итерацииaliasmarketpro_convertдобавит ID/случайное число. - Когда получен уникальный алиас, обновляет запись в таблице
cot_market. - Возвращает финальный алиас.
Языковые файлы (lang/aliasmarketpro.ru.lang.php, en.lang.php)
Содержат все текстовые строки: название плагина, описание, подписи к настройкам (включая подсказки и значения выпадающих списков), названия вкладок, сообщения.
Используются функцией cot_langfile() при загрузке плагина.
Шаблон tpl/aliasmarketpro.admin.tpl
HTML‑шаблон с блоками XTemplate для админ‑панели. Использует Bootstrap 5 (входит в Cotonti v1.+). Основные блоки:
MAIN– контейнер страницы с вкладками.LIST_ROW,LIST_EMPTY– строки таблицы во вкладке «Списки и Алиасы».MANAGE_ROW,MANAGE_EMPTY– строки формы во вкладке «Управление».- Пагинация подключается через системный тег
{PAGINATION}.
Вкладки переключаются через условные блоки <!-- IF {PHP.tab} == '...' -->.
Пример использования
Ситуация: сайт с русским интерфейсом, но товар добавлен с украинским названием «Новий електроскутер». Алиас не заполнен.
- Пользователь сохраняет товар.
- Плагин вызывает
aliasmarketpro_transliterate('Новий електроскутер'). - Символы заменяются:
Н→N,о→o,в→v,и→y,й→y,е→e,л→l,к→k,т→t,р→r,о→o,с→s,к→k,у→u,т→t,е→e,р→r.- Пробел заменяется на дефис (
sep=-).
- С включённым
lowercaseполучаемnovyj-elektroskuter. - Алиас уникален — записывается в базу.
Если бы старая версия плагина использовала русскую таблицу, то и превратилась бы в i (получилось бы novij), что не соответствует украинской транслитерации.
Устранение неполадок
- Алиас не создаётся. Убедитесь, что плагин активен и что вы не заполняли поле «Alias» вручную — плагин работает только при пустом поле.
- В админке не отображаются строки таблиц. Проверьте, что файл шаблона
aliasmarketpro.admin.tplсоответствует последней версии, а блокиLIST_ROWиMANAGE_ROWнаходятся непосредственно внутриMAIN(не обёрнуты в другие блоки). - После сохранения в «Управлении» URL содержит
&. Эта проблема исправлена в версии 2.5.1 путём принудительной замены&→&в URL редиректа. Если всё ещё проявляется, убедитесь, что у вас актуальныйadmin.php. - Транслитерация работает не так, как ожидается. Таблица транслитерации зашита в
aliasmarketpro_transliterate(). Если нужного символа нет, добавьте его в массив$translit(файлfunctions.php), соблюдая порядок от длинных последовательностей к коротким. - Кнопка «Создать алиасы» не даёт результата. Убедитесь, что в таблице
cot_marketесть записи с пустымfieldmrkt_alias. Проверьте права на запись в базу данных.
Лицензия
BSD. Свободное использование и модификация при сохранении авторских прав.
Ссылки
Товар без файла для загрузки
Обсуждение страницы в Telegram
Автор контента
Онлайн
webitproff
Последняя авторизация: 06.08.2026 16:37
Чем могу помочь?
Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.
Разработки на GitHub бесплатно
Telegram
- 06.08.2026 13:55
- 06.08.2026 14:02
- Язык:
Связанные и похожие товары
Витрина Market PRO
CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.
English