Alias Market PRO - Управление алиасами

Автоматически создаёт читаемые, транслитерированные алиасы (URL‑пути) для товаров модуля market на Cotonti. Интерфейс управления алиасами, заголовками и метазаголовками в админке плагина.

Опубликовано в: Модули и Плагины для 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       # Шаблон админ‑панели

Установка

  1. Скачайте ZIP‑архив плагина из официального репозитория.
  2. Распакуйте архив в папку plugins/ вашего сайта.
  3. Зайдите в админ‑панель Cotonti → Расширения.
  4. Найдите «Alias Market PRO» и нажмите «Установить».

После установки плагин сразу начинает работать (при добавлении/редактировании товаров алиас будет генерироваться автоматически, если поле не заполнено).


Настройка плагина в админке

Настройки доступны по пути Расширения → Alias Market PRO → Конфигурация.

ПараметрТипПо умолчаниюОписание
translitradio1 (вкл.)Включает транслитерацию нелатинских символов (кириллицы) в латиницу.
prepend_idradio0 (выкл.)Добавлять ID товара в начало алиаса. Пример: 123-название-товара.
on_duplicateselectIDДействие при обнаружении дубликата алиаса (если prepend_id выключен): ID — добавить ID товара в конец; Random — добавить случайное число от 2 до 99.
sepselect-Разделитель слов: дефис (-), подчёркивание (_), точка (.).
lowercaseradio1 (вкл.)Приводить алиас к нижнему регистру.

Использование

Автоматическое создание алиаса

Когда вы добавляете или редактируете товар в модуле market и оставляете поле «Alias» пустым, плагин срабатывает на хуках market.add.add.done и market.edit.update.done. Процесс генерации алиаса:

  1. Берётся заголовок товара (fieldmrkt_title).
  2. Если включена транслитерация, строка пропускается через внутреннюю функцию aliasmarketpro_transliterate(), которая заменяет все кириллические символы (русские и украинские) согласно единой таблице.
  3. Удаляются все символы, кроме букв, цифр, дефиса, подчёркивания и пробела (регулярное выражение [^\p{L}0-9\-_ ]).
  4. Пробелы заменяются на выбранный разделитель.
  5. Если включена опция «Приводить к нижнему регистру», все буквы становятся строчными.
  6. Если включена опция «Добавить ID в начало», перед алиасом ставится {id}{разделитель}.
  7. Проверяется уникальность: если сгенерированный алиас уже существует у другого товара и prepend_id выключен, то в конец добавляется ID товара или случайное число (в зависимости от настройки on_duplicate).
  8. Готовый алиас записывается в поле fieldmrkt_alias.

Административная панель (три вкладки)

Панель доступна через Админка → Инструменты → Alias Market PRO.

Вкладка «Статистика»

Показывает четыре числа:

  • Всего товаров — количество товаров с непустым заголовком.
  • С алиасом — товары, у которых заполнено поле fieldmrkt_alias.
  • Без алиаса — товары с пустым алиасом.
  • Без Meta Title — товары, у которых не заполнен мета‑заголовок (fieldmrkt_metatitle).

Кнопки действий:

  • Создать алиасы — запускает генерацию алиасов для всех товаров, где алиас отсутствует.
  • Очистить все алиасы — стирает алиас у всех товаров (требуется подтверждение).
  • Конфигурация — переход к настройкам плагина.

Вкладка «Списки и Алиасы»

Отображает таблицу всех товаров (с пагинацией по 25 записей на странице) со столбцами:

  • ID
  • Заголовок (является ссылкой на страницу товара на сайте)
  • Meta Title
  • Алиас

Предназначена для быстрого обзора состояния алиасов.

Вкладка «Управление»

Позволяет редактировать заголовок, Meta Title и алиас сразу для нескольких товаров на одной странице (по 10 записей). Поле ID не редактируется.

Чтобы изменить данные:

  1. Внесите правки в нужные поля.
  2. Нажмите кнопку «Обновить».

После сохранения вы останетесь на той же странице пагинации, с которой начали.


Подробное описание каждого файла

Ниже — детальное описание всех файлов плагина.


aliasmarketpro.setup.php

Назначение: регистрация плагина в системе Cotonti и описание его настроек.

Содержит две обязательные секции:

  • [BEGIN_COT_EXT] … [END_COT_EXT] – метаданные:
    • Code – уникальный идентификатор aliasmarketpro.
    • Name – отображаемое имя.
    • Categoryseo (категория в админке).
    • Version – текущая версия (2.5.0 в данном файле).
    • Requires_modulesmarket.
    • Права доступа гостей и пользователей.
  • [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

Формирует страницу администрирования плагина (в разделе «Инструменты»). Логика работы:

  1. Определяет текущую вкладку (tab) и действие (a) из URL.
  2. Назначает переменные навигации для шаблона (активные вкладки, ссылки).
  3. Обработка специальных действий (до вывода вкладок):
    • a=create – выбирает все товары с пустым алиасом, для каждого вызывает aliasmarketpro_update(), выводит сообщение с количеством созданных алиасов.
    • a=clear_aliases – обнуляет поле fieldmrkt_alias у всех товаров, выводит сообщение об очистке.
    • После выполнения редиректит на ту же вкладку (с сохранением параметров).
  4. Формирование содержимого вкладок:
    • Статистика – выполняет четыре SQL‑запроса для подсчёта показателей, передаёт их в шаблон, а также URL для кнопки «Создать алиасы».
    • Списки и Алиасы – получает данные с пагинацией (LIMIT/OFFSET) из таблицы cot_market. Для каждого товара вычисляет URL через cot_market_url(), присваивает переменные LIST_ROW_* и парсит блок LIST_ROW. При отсутствии товаров выводит LIST_EMPTY. Добавляет пагинацию.
    • Управление – аналогично получает данные с пагинацией. Если пришёл POST‑запрос с a=update, в цикле обновляет заголовок, мета‑заголовок и алиас для всех ID, переданных в форме. Использует $backUrl с номером текущей страницы (durl), чтобы после сохранения вернуться на ту же страницу. Проблема с & в URL решается заменой && перед редиректом.
  5. Выводит системные сообщения, парсит главный блок MAIN и возвращает HTML.

inc/aliasmarketpro.functions.php

Содержит три основные функции плагина.

aliasmarketpro_transliterate($str)

Внутренняя функция транслитерации. Принимает строку и пропускает через единый массив замен, отсортированный от длинных последовательностей к коротким:

  • Украинские уникальные буквы: Є, є, Ї, ї, Ґ, ґ, І, і.
  • Русские буквы, отсутствующие в украинском: ё, Ё, ы, Ы, э, Э, ъ, Ъ.
  • Общие многосимвольные комбинации: ЩShch, ЖZh, ХKh, ЦTs, ЧCh, ШSh, ЮYu, ЯYa.
  • Одиночные буквы (общие для русского и украинского): АA, бb и т.д.
  • Мягкий знак и апострофы заменяются на пустую строку (удаляются).

Возвращает строку с заменёнными символами. Не зависит от внешних файлов.

aliasmarketpro_convert($title, $id, $duplicate)

Основная функция преобразования заголовка в алиас. Выполняет шаги:

  1. Если translit включён, вызывает aliasmarketpro_transliterate().
  2. Удаляет запрещённые символы через preg_replace('#[^\p{L}0-9\-_ ]#u', '', $title).
  3. Заменяет пробелы на разделитель из конфига.
  4. При lowercase=1 приводит к нижнему регистру.
  5. Если prepend_id=1 и $id не пуст, добавляет префикс $id . $sep.
  6. Если $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} == '...' -->.


Пример использования

Ситуация: сайт с русским интерфейсом, но товар добавлен с украинским названием «Новий електроскутер». Алиас не заполнен.

  1. Пользователь сохраняет товар.
  2. Плагин вызывает aliasmarketpro_transliterate('Новий електроскутер').
  3. Символы заменяются:
    • НN, оo, вv, иy, йy,
    • еe, лl, кk, тt, рr, оo,
    • сs, кk, уu, тt, еe, рr.
    • Пробел заменяется на дефис (sep=-).
  4. С включённым lowercase получаем novyj-elektroskuter.
  5. Алиас уникален — записывается в базу.

Если бы старая версия плагина использовала русскую таблицу, то и превратилась бы в i (получилось бы novij), что не соответствует украинской транслитерации.


Устранение неполадок

  • Алиас не создаётся. Убедитесь, что плагин активен и что вы не заполняли поле «Alias» вручную — плагин работает только при пустом поле.
  • В админке не отображаются строки таблиц. Проверьте, что файл шаблона aliasmarketpro.admin.tpl соответствует последней версии, а блоки LIST_ROW и MANAGE_ROW находятся непосредственно внутри MAIN (не обёрнуты в другие блоки).
  • После сохранения в «Управлении» URL содержит &amp;. Эта проблема исправлена в версии 2.5.1 путём принудительной замены &amp;& в URL редиректа. Если всё ещё проявляется, убедитесь, что у вас актуальный admin.php.
  • Транслитерация работает не так, как ожидается. Таблица транслитерации зашита в aliasmarketpro_transliterate(). Если нужного символа нет, добавьте его в массив $translit (файл functions.php), соблюдая порядок от длинных последовательностей к коротким.
  • Кнопка «Создать алиасы» не даёт результата. Убедитесь, что в таблице cot_market есть записи с пустым fieldmrkt_alias. Проверьте права на запись в базу данных.

Лицензия

BSD. Свободное использование и модификация при сохранении авторских прав.




Рейтинг на основе отзывов:
Звезд получено: 0
Oтзывов всего: 0
Средняя оценка: 0
9 минут чтения
Владелец: Carbonate Sodium

Отзывы к товарам

Отзывов пока нет


Добавить в корзину

Товар без файла для загрузки

 

Обсуждение страницы в Telegram

Автор контента

webitproff

Онлайн

webitproff

Последняя авторизация: 06.08.2026 16:37

  • Чем могу помочь?

    Оказываю весь спектр услуг по CMF Cotonti. Разработка открытых и закрытых корпоративных интернет порталов, небольших социальных сетей, торговые площадки, маркетплейсы, биржи фриланса, каталоги товаров оптовых поставщиков, интернет-магазин под заказ, чтобы делать совместные покупки и групповые совместные продажи от имени нескольких продавцов.

  • Разработки на GitHub бесплатно
    • 06.08.2026 13:55
    • 06.08.2026 14:02
    • Язык:

    Витрина Market PRO

    CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.