Как поменять шаблон генерации URL?

#1 10 января 2016 в 18:20
Мне нужно чтобы URL формировались как "сайт/тип-контента/имя-автора-публикации/id-публикации"

В настройках типов контента по-умолчанию прописано "тип-контента/{id}-{title}". А как добавить еще имя автора публикации? То есть хорошо было бы увидеть где-то список значений кроме {id} и {title}, которые можно добавлять в шаблон генерации URL.

Еще было бы очень хорошо, если бы URL можно было делать полностью кириллическими, поскольку я планирую создать сайт на кириллическом домене, но это как я понимаю, будет уже совсем не просто сделать?
#2 11 января 2016 в 03:36
Все доступные поля показал на картинке:

Это пример добавления поста блога в демо. В левой колонке — доступные поля. В правой колонке видны значения переменных из примера.

Ваш шаблон генерации URL: {user_nickname}/{id}
Поддержки кириллических адресов пока нет. Русский ник будет транслитерирован и переведён в нижний регистр. "Администратор" -> "administrator"

Обратите внимание, что в текущей версии InstantCMS2 это очень проблемный вариант!

Первая проблема. На данный момент в Двойке реализована уникальность полей в пользовательском профиле только для id и email. Для ников это пока не сделано. Это значит, что при Вашем шаблоне адреса Вы рискуете получить ситуацию с материалами разных пользователей в одной и той же "папке". Во-первых, из-за транслитерации (например, для пользователей Виктор и Viktor). Во-вторых, из-за невозможности запретить разным пользователям задавать себе одинаковые имена. Эта тема уже несколько раз поднималась на форуме.

Вторая проблема Вашего варианта на данный момент в том, что любой пользователь в любой момент может изменить своё имя (ник). А значит, его старые материалы по прежним адресам останутся, а новые материалы уже будут создаваться в "папке" с другим именем. Получите несколько "папок" для одного и того же пользователя.

Единственный вариант, который я вижу для Вас, если очень нужно сделать именно так, как Вы описали — создание отдельного уникального поля, которое обычно называют "Логин". Стандартными средствами поле в профиле можно добавить в Админке. Но оно уникальным не делается, значит это уже хак системы или, если возможно, хук. Это поле должно попадать в вышеприведённый набор переменных — это либо второй хак, либо, если возможно, ещё хук. Это поле должно вводиться пользователем один раз и далее быть недоступно для изменения им — тоже хак или хук. Если получится только хуками — это лучше. Возможно ли это, я не знаю, так как ещё не разбирался со всеми событиями в системе.

Я сейчас столкнулся с аналогичной задачей, только более широкой. Буду её решать через создание системного поля "Логин" и несколько хаков. Что из этого получится и когда закончу — пока не знаю. Если разработчики будут не против, выложу то, что получится в свой блог.
#3 11 января 2016 в 11:46
Спасибо, WebMan, за исчерпывающий ответ! Можно прям в документацию InstantCMS заносить smile

Имя пользователя в УРЛе мне нужно для того, чтобы была возможность добавлять виджеты на страницы с публикациями отдельных пользователей. Для этого подходит и id пользователя. Тогда отпадают все проблемы, которые Вы описали, и которые возникают при использовании имени пользователя.

Отдельное спасибо за таблицу со значениями, которые можно использовать в шаблоне URL. Думаю, многим пригодится.

И еще надеюсь, что когда-то появится поддержка кириллических URL, что в первую очередь нужно для кириллических доменов. Ведь, например, мойсайт.рф/новости/новости-дня смотрится как-то лучше чем мойсайт.рф/news/novosti-dnya
#4 11 января 2016 в 18:05

И еще надеюсь, что когда-то появится поддержка кириллических URL

boanro
На сколько я понимаю, это реализовать не сложно. Основная проблема в том, что программисты не любят русский язык, из-за возможных конфликтов.
У меня есть самописный движок, на котором кириллические урлы прекрасно работают. Однажды даже предлагал его отдать R2, но ему оказалось не интересно. Видимо разработчики инстанта пока не готовы перейти рубеж английский/русский.
#5 11 января 2016 в 18:11

мойсайт.рф

boanro
Да потому что кириллические домены — это сплошной гемор, а еще и ссылки добавлять кириллические — это вообще кошмар. smile
#6 11 января 2016 в 18:55

Да потому что кириллические домены — это сплошной гемор

Melon
Зря Вы так, довольно часто они очень выручают, а русские урлы на много приятнее смотрятся в поиске, и даже, думаю
в некоторых случаях имеют преимущество в ранжировании.
#7 11 января 2016 в 19:02
Я тоже так думаю! В результатах поиска кириллические домены и урлы хорошо выделяются среди латинских. Это одна из причин, из-за которой я хочу делать новый свой контентный проект на кириллическом домене (пусть даже с не полностью кириллическими урлами).


а русские урлы на много приятнее смотрятся в поиске,

Alexprofi
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.