@lolrofl01

Как строятся иерархические маршруты в ларе и какую логику обработки порекомендуете?

Добрый день. Имеется сайт с:
1) Посты
2) Товары
3) Категории (в большом количестве)
4) Страницы
5) Медиа (всякие ссылки на видео)

Сайт раньше был на вордпрессе, поэтому все урлы есть в индексе и все они однотипны:
site.ru/query, где query - может быть всем чем угодно, хоть страницей, хоть постом, хоть категорией или видосом, а может это и товар. Ситуация еще сильнее усугубляется тем, что есть 3 уровня категорий, и урл в их случае формируется так:
site.ru/cat/query или site.ru/cat/cat/cat/query.
Так же можно открывать и категории, которые могут быть и вида site.ru/cat и site.ru/cat/cat и site.ru/cat/cat/cat.

Так вот, профи, как бы вы реализовали такую маршрутизацию?)

Я час ломал голову и пришел к таким вопросам:
1) Сильно ли будет тормозить страницу проверка query по всем таблицам? Ведь мы изначально не знаем, что запрашивает юзер, и урл никак не можем менять, ибо уже в индексе. Какой самый простой способ сразу отдать юзеру то, зачем он пришел?

2) Для категорий необходимо использовать nestedset? Можно ли обойтись другим способом? Вроде как доходит дело до иерархии - все кричат про нестед. Но мне очень не хочется менять логику приложения, добавлять доп поля в таблицы. Да и в целом, на этапе 70% готовности проекта очень страшно добавлять чужие пакеты. Даже если все отлично, никогда не знаешь на каком этапе это привнесет сюрпризы.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Kostik_1993
Web Developer
1) да
2) не нравится используйте что хотите, нам то откуда знать что вам может подойти

Чтобы первое не да, лучше завести отдельную сущность которая будет хранить в себе идентификаторы страниц и экшн который должен ее обработать
Ответ написан
pLavrenov
@pLavrenov
Разработка сайтов
Можно же пойти по пути "предков" и сделать 301 редиректы со старых ссылок на новые и они сами заменятся в поисковой выдаче.

Или почитать про "laravel recursive relationship"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы