MODx Evolution: сформировать SEF-ссылки самостоятельно

Текущий материал посвящен написанию собственного простейшего плагина для CMS/CMF MODx Evolution, который будет формировать псевдонимы ресурсов по заранее заданному нами сценарию. Делаем свой TransAlias!

Как создать псевдоним программно при сохранении ресурса на MODx Evolution:

1. Создайте новый плагин, в поле ввода программного кода вставьте следующий фрагмент текста:

/**
 * Инициализация параметров:
 */
if (!isset ($alias)) { return ; }

/**
 * Обработка события 'OnStripAlias':
 */
$me =& $modx->event;
switch ($me->name ) :
  case 'OnStripAlias':       
    $output = str_replace('_', '-', $alias);
    $me->output($output);
    $me->stopPropagation();
    break;
  default:
    return;
endswitch;

2. Затем перейдите на вкладку События и выставите флажок напротив события под названием OnStripAlias, т.е. транслитерации псевдонимов. Сохранитесь и можете спокойно тестировать работу плагина.

MODx Evolution прикрепить плагин к событию

Краткие пояснения:

В показанном выше примере псевдоним страницы будет сформирован из заголовка ресурса при возникновении события. Знаки подчеркивания будут заменены на дефисы.

  • Переменная $alias  -  это текущий псевдоним документа также именуемого ресурсом.
  • Переменная $output — в неё мы сохраняем конечный результат.

Из дополнительных оговорок: на время эксперимента временно отключите плагин под названием TransAlias, если он включен.

Опубликовано 19-12-2012 в 13:41


Комментариев к записи: 3

  1. Harand:

    Не совсем понимаю логику работы с событиями у MODx Evo — зачем одновременно делается проверка в коде case 'OnStripAlias':и одновременно ставится галочка на событии?
    Буду благодарен за краткое объяснение.

    • Администратор:

      Делается это с тем расчетом, что пользователь Модикса на вкладке с Событиями может поставить галку не в том месте, т.е. на событие отличное к примеру от того же OnStripAlias. Так вот, чтобы плагин срабатывал в любом случае только на заданное программистом OnStripAlias и производится эта проверка.

      Иначе, если я к примеру выберу какое-нибудь OnCreateDocGroup, то код плагина выполнится с ошибками и ещё N знает чем, образно говоря. С принудительной проверкой же никаких внештатных ситуаций не возникнет, т.к. действия будут выполнятся строго при заданном событии.

  2. Harand:

    И, если у вас найдётся время, интересно было бы посмотреть на пример плагина, выполняющего следующие задачи:
    Если шаблон_документа равен одному из списка_шаблонов, то $alias = $id, иначе return, событие OnStripAlias. Здесь $id — это id документа (ресурса). Список шаблонов задаётся в Конфигурации плагина.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>











Свежие комментарии

  • krasnov8953: к записи Не работает как мне кажется строчка $newTvId = $ »
  • Dimanski: к записи ничего не понимаю. Ставлю ModX на хостинг r01.ru »
  • Дмитрий: к записи Спасибо! Очень выручили. С битриксом беда, а прав »
  • леонид: к записи как сделать что были в ряд? у меня получается по о »
  • Администратор: к записи Статический IP. »
  • Steel: к записи Администратор, вы данную проблему решили подключен »
  • Дмитрий: к записи Хотел узнать как прикрутить данное окно (http://re »

Последние твиты