У меня есть большая, основанная на PHP CMS, которая управляет веб-страницами. Все элементы организованы в древовидную структуру. Когда я редактирую элемент, кнопка «назад» обычно указывает на его родительский элемент. Итак, обычный рабочий процесс перемещается по дереву.Как вы решаете «неструктурированную» навигацию в PHP?
Теперь время от времени возникает потребность в рабочем потоке, который «перескакивает» на другие элементы без учета структуры.
Например, когда пользователь редактирует веб-страницу, может потребоваться открыть шаблон, к которому прикреплена страница (другой элемент в совершенно другой ветке), внести изменения там, и при нажатии «сохранить» ожидание чтобы вернуться к странице, которую они редактировали.
На данный момент, я решить эту проблему с помощью
domain.com/admin/template/edit?from=/frontpage/edit
, где «от» переменных определяют целевые URL-кнопка «сохранить» и «отменить».
Это работает до определенного момента, когда путь становится слишком длинным и сложным. Например, что если пользователь
- редактирует страницу
- открывает прилагаемому шаблону
- предварительные просмотры, что шаблон в передней торцевой вид
- , а затем рассчитывает быть легко приняты обратно на страницу они редактировались?
В настоящее время «история» заканчивается на последнем элементе, так что, когда пользователь возвращается с внешнего вида, ссылка на исходную страницу теряется, и они должны искать ее вручную.
Еще одна проблема, которая может произойти быстро, что GET URL, содержащий все «от» значения становится слишком длинным, или полностью хаотичным:
domain.com/admin/template/edit?from=/frontpage/edit&from=/somepage/edit
&from=/template/preview&/from=template/edit&/from=template_preview ...
(вы получите дрейф)
Я решил это элегантно, открывая отдельные окна в прошлом, но я действительно хочу реализовать бесшовный рабочий процесс с одним окном, который работает повсеместно, главным образом потому, что несколько окон имеют тенденцию путать пользователей.
Как вы это решаете?
Вы реализовали надежную «неструктурированную» навигацию, которая хорошо работает с несколькими открытыми окнами (= один пользователь делает несколько разных вещей с разными путями навигации)?
Как вы это делаете на стороне интерфейса пользователя?
Лучший подход, который я могу придумать, - передать значение «от», указывающее на временную запись в базе данных или сеансе. Эта запись содержит всю информацию о текущем пути и поэтому может всегда предоставлять правильное значение «назад к странице x».
Что я хотел бы услышать больше всего - это опыт людей, которые успешно реализовали это и как они это сделали.
Вы можете посмотреть, как большие CMS, такие как Drupal, Wordpress и Joomla, решили это. Вероятно, они сделали некоторые исследования по этому вопросу и (надеюсь) приняли хорошее решение. –
Возможно, вы могли бы попытаться сжать свои переменные GET? – jkndrkn