Id вместо alias в URL

Добрый день!
В MODx Evo, если не указывать псевдоним ресурса, то в дружественных URL используется его id.
Как тоже самое сделать для MODx Revo?
Максим
13 сентября 2017, 14:46
modx.pro
1
5 265
+1

Комментарии: 10

Максим
14 сентября 2017, 06:54
0
Например, ссылка на данную страницу выглядит вот так https://modx.pro/help/13302/
Т.е. ID вместо Alias!
Как так же сделать?
Через плагин не работает, т.к. до события и до плагина не доходит дело, вылезает сразу сообщение о том, что не заполнено обязательное поле «псевдоним».
    Максим
    14 сентября 2017, 09:01
    0
    Интересно, заминусовал спам-робот какой-то? Если минусуете, объясните причину.
      Пётр Молчанов
      14 сентября 2017, 10:28
      0
      т.е. по факту вы хотите чтобы в поле «псевдоним» автоматом подставлялся id создаваемого документа?
        Максим
        14 сентября 2017, 11:16
        0
        Мне нужно именно когда пустое поле «псевдоним», то вместо него использовалось бы id в дружественных URL.
        А как оно будет реализовано не так важно.
        Можно чтоб подставлялось id вместо «псевдоним», можно чтоб как-то при генерации URL проверка делалась.
        В Evo так было устроено в самом ядре.
        Илья Уткин
        14 сентября 2017, 10:36
        3
        +3
        Да, перед проверкой псевдонима никакое событие не вызывается. Здесь используется дополнение Tickets — тикеты это расширенные ресурсы с дополнительным функционалом, в том числе, со своим механизмом генерации URL.

        Можно как костыль использовать такое решение:
        1. Включаем автоматическую генерацию псевдонима
        2. В плагине проверяем — если псевдоним ресурса такой же, как его сгенерировал бы MODX, заменяем псевдоним:
        <?php
        switch ($modx->event->name) {
            case 'OnDocFormSave':
                $generated = $resource->cleanAlias($resource->pagetitle);
                if ($resource->alias == $generated) {
                    $resource->set('alias', $resource->id);
                }
                $resource->save();
                break;
            default:
                break;
        }

        Но это, конечно, очень грязный хак — ведь где-то автоматически сгенерированный псевдоним будет реально нужен. Нужно ограничивать работу плагина, например, родителем ресурса или его шаблоном.
          Максим
          14 сентября 2017, 11:17
          0
          Спасибо, помогло!
          Да, может не идеально, но хоть что-то!
            Олег
            14 сентября 2017, 13:45
            0
            Мне кажется есть еще вариант повесить плагин на OnBeforeDocFormSave, при выключенной «живой» генерации псевдонима в этот момент поле алиас должно быть пустым, и в этот момент выполнять проверку — при пустом алиасе вставить псевдоним.

            Но тут могут быть нестыковки, писал навскидку.
              Илья Уткин
              14 сентября 2017, 13:52
              0
              Не, я проверил — валидация прерывает процесс сохранения до события OnBeforeDocFormSave
            Владимир
            14 сентября 2017, 10:51
            0
            А modx.com/extras/package/customurls не помогает? Там есть возможность перезаписать алиас по шаблону. Делал много раз им то что вы пишете, нормально работает (для обычных ресурсов)
              Максим
              14 сентября 2017, 11:09
              0
              Не помогает. Кучу правил прописывать придется вручную для разных шаблонов, типов страниц и т.п.
              Не удобно, хочется автоматизации.
              Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
              10