ЧПУ для пользователей и пользовательских групп

 
Посетитель
small user social cms
Сообщений: 75
Добрый день.

Подскажите, пожалуйста, как решить следующую задачу на InstantCms 2.x.

Допустим, создаем сайт, на котором будут регистрироваться пользователи и есть пользовательские группы.

URL-адреса персональных страничек зарегистрированных пользователей сейчас выглядят так:
http://nazvanie-saita.domen/users/1
http://nazvanie-saita.domen/users/2
....

URL-адреса пользовательских групп выглядят так:
http://nazvanie-saita.domen/groups/1
http://nazvanie-saita.domen/groups/2
....

Нужно получить следующий вид.

URL-адреса персональных страничек зарегистрированных пользователей:
http://nazvanie-saita.domen/u/nickname-pervogo-polzovatelya
http://nazvanie-saita.domen/u/nickname-vtorogo-polzovatelya
или
http://nazvanie-saita.domen/u/chpu-imja-pervogo-polzovatelya
http://nazvanie-saita.domen/u/chpu-imja-vtorogo-polzovatelya
....

URL-адреса пользовательских групп:
http://nazvanie-saita.domen/g/nazvanie-pervoj-gruppy
http://nazvanie-saita.domen/g/nazvanie-vtoroj-gruppy
или
http://nazvanie-saita.domen/g/chpu-imja-pervoj-gruppy
http://nazvanie-saita.domen/g/chpu-imja-vtoroj-gruppy
....

Буду благодарен за советы и подсказки, как это можно реализовать.
Движок - это не роскошь, а средство передвижения информации. ;)
Посетитель
small user social cms
Сообщений: 75
- - - - - -

Есть вот такой мануал:
http://docs.instantcms.ru/manual/settings/rewriting

Он позволяет решить часть задачи, заменить в URL-адресах "users" на "u", "groups" на "g".
Движок - это не роскошь, а средство передвижения информации. ;)
Реклама
cms
Посетитель
small user social cms
Сообщений: 75
- - - - - -

Вторая часть задачи посложнее.

Нужно заменить в URL-адресах ID пользователя и ID группы на ЧПУ-строки (уникальные строки с использованием букв на английском, цифр, без пробелов и других специальных знаков, за исключением, возможно, "-" и "_").

- - - - - -

В моем случае поле "Nickname" будет содержать ФИО участника, допускается использовать кириллические символы.
Поэтому для ЧПУ-строки можно создать отдельное поле "Адрес Вашей странички" (системное имя - например, "chpu-url").

Для этого в админке идем в "Компоненты", выбираем "Профили пользователей", затем "Добавить поле".
Проставляем галочки "Поле должно быть заполнено" и "Только латинские буквы и цифры".

Остается прописать код, который будет для каждого пользователя при формировании URL получать значение поля "chpu-url" и подставлять его вместо ID.

Как это сделать - пока не знаю.
Буду благодарен за подсказки.

- - - - - -

Для пользовательских групп (групп, в которых группируются пользователи, контент, не путайте с группами уровня доступа) сложнее.

В админке управление настройками отдельных групп недоступно, а во фронт-части сайта есть возможность изменить название и описание группы, но нет возможности добавлять новые поля.

В моем случае количество пользовательских групп ограничено, создавать их могут только администраторы сайта.
Поэтому вполне допустимо не создавать специальное настраиваемое поле, а прописать напрямую в коде соответствие:
ID группы -> ЧПУ-адрес (это называется хеш-таблица, если не ошибаюсь).

- - - - - -

Нашел небольшой внешний мануальчик, как прописывать ЧПУ:
http://www.phpinfo.su/articles/practice/chpu_na_php.html

Доходчиво, возможно, пригодится.

- - - - - -

Бегло глянул в исходники сайта.
Пользователи и группы в движке реализованы как компоненты.

Не силен в PHP-программировании, но интуитивно догадываюсь, что можно подправить код в файлах "/system/controllers/users/action/profile.php" и "/system/controllers/groups/action/groups.php".

Данное решение будет корявым и негибким, поскольку при обновлении движка все прописанные изменения в коде сотрутся.
Более эффективным решением будет вынести, если это возможно, изменения в коде в отдельный компонент.

- - - - - -
Движок - это не роскошь, а средство передвижения информации. ;)
Посетитель
small user social cms
Сообщений: 75
Еще одна часть, которую нужно обязательно учесть при замене ID на ЧПУ-строки.

Да, можно прописать код, который для адресов
http://nazvanie-saita.domen/u/chpu-imja-pervogo-polzovatelya
http://nazvanie-saita.domen/g/chpu-imja-vtoroj-gruppy
будет корректно выдавать информацию.

Но ведь остальная часть движка по-прежнему будет генерировать старые урлы.
Например, компонент "Генератор карты сайта", ...., да просто навигация по сайту!!

Поэтому корректно все запрограммировать - не так-то просто.

Возможно, решение уже есть.
Буду благодарен за наводки.
Движок - это не роскошь, а средство передвижения информации. ;)
Посетитель
small user social cms
Медаль
Сообщений: 123
Владмир, какое решение нашли?
Интерес один - http://kznmed.ru
Проверенный хостинг под Instant http://goo.gl/6W6WV
Монетизирую сайт тут http://goo.gl/vux68
Посетитель
no avatar
Сообщений: 40
ivanish:

Владмир, какое решение нашли?

Вроде не гите чпу для группу уже есть. Похоже будет в коробке в следующей версии движка.
Посетитель
small user social cms
Сообщений: 11
Хмм.. Можно запилить дополнительную таблицу алиасов с полем алиасов в таблице users
Спойлер
и лефтджойнить их на совпадения. Так как URL в InstantCMS не формируется, а парсится функцией route(), то в функции runController() класса cmsCore нужно еще будет дописать нечто похожее на это
Спойлер
Ну и естественно переписать все ссылки в шаблоне. Ну это как один из возможных вариантов реализации))
Редактировалось: 2 раз (Последний: 22 мая 2017 в 06:26)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.