Как установить порядок в подузлах древовидной структуры
Вопрос
У меня есть древовидное представление страниц в приложении CMS.Я понимаю, как сохранить дерево в базе данных.Однако у меня нет хорошего способа:
А) Изменить порядок подстраниц на определенной родительской странице.
Б) Предоставить реализацию пользовательского интерфейса, позволяющую пользователю изменять порядок.
Какие-либо предложения?
Решение
Изменение самого порядка потребует от вас сохранения определенного порядка вместе с каждой страницей в базе данных.Просто текущее максимальное/минимальное значение +/- 1, вероятно, будет хорошей отправной точкой.Как только вы установили этот порядок, переупорядочение становится случаем замены двух значений или изменения значения одной страницы между двумя другими (я думаю, вы могли бы использовать числа с плавающей запятой, но вам может потребоваться изменить нумерацию, если вы разделите их слишком много) раз).
В любом случае, как только вы это получите, вам понадобится пользовательский интерфейс.Я видел очень простой подход «замените это на то, что выше/ниже», который может быть простой веб-ссылкой или вызовом AJAX.Вы также можете представить пользователю все значения страниц и попросить его перенумеровать их по своему усмотрению.Если вы хотите пофантазировать, перетаскивание JavaScript может быть хорошим подходом.я использовал ExtJS и Mootools в качестве рамок в этой области.Если вам не нужны все виджеты Extjs, я бы сказал, что в будущем откажитесь от них и посмотрите на что-нибудь вроде Mootools. Демонстрация динамической сортировки.
Другие советы
А) У меня есть похожее приложение CMS, и я сохраняю порядковый номер на странице для определенного дерева и сортирую по этому значению - поскольку многие мои страницы появляются на совершенно разных сайтах, мне приходится поддерживать порядковый номер для страницы/дерева. комбинация.
Б) Мне тоже хотелось бы сделать это получше.В настоящее время они нажимают на узел в древовидном представлении и на экране главной страницы могут перемещать страницу.Я пробовал перетаскивать с помощью Java-скриптов и других решений, но мои пользователи никогда не могли работать с ними, не держась за руки.Мне будет интересен ответ на этот вопрос.