gv0zd
Новичок
Организация и разбор ЧПУ. Узел, бренд, товар
С самими чпу проблем нет, вопрос в том как их правильно организовать и разбирать 
Сейчас использую в структуре каталогов nested sets. К каждой строке для удобства разбора ЧПУ добавил 2 поля
Т.е. для
Каталог
--Мобильные телефоны
----Nokia
Таблица nodes имеет след вид
node_id|l|r|parent|title|rewrite|rewrite_path
1|1|6|0|Каталог|catalog|/catalog/
2|2|5|1|Мобильные телефоны|mobile|/catalog/mobile/
3|3|4|2|Nokia|nokia|/catalog/mobile/nokia/
Таблица товаров products имеет след вид
product_id|node|title|rewrite
1|3|E71|e71
2|3|6500 Classic Bronze|6500-classic-bronze
Таким образом, если через чпу приходит запрос /catalog/mobile/nokia/6500-classic-bronze /
И если запрос
SELECT … FROM `nodes`, `products` WHERE `products`.`node` = `nodes`.`node_id` AND `products`.`rewrite` = ‘6500-classic-bronze’ AND `nodes`.`rewrite_path` = ‘/catalog/mobile/nokia/’
возвращает одну строку, значит это товар
Если же прилетает запрос /catalog/mobile/nokia/
То я сначала ищу
SELECT … FROM `nodes`, `products` WHERE `products`.`node` = `nodes`.`node_id` AND `products`.`rewrite` = ‘nokia’ AND `nodes`.`rewrite_path` = ‘/catalog/mobile/’
Естественно ничего не нахожу и тогда отправляю второй запрос
SELECT … FROM `nodes` WHERE `nodes`.`rewrite_path` = ‘/catalog/mobile/’
возвращает только одну строку, значит это узел
Все работает и нет у меня претензий кроме одного, Бренд у меня включен в структуру. Что неправильно и неудобно при поиске
Таким образом хочется вынести бренды в отдельную таблицу, в структуре каталога избавиться от лишних узлов, а к каждому товару добавить поле бренд для связи
Если раньше у нас в чпу были в параметра узел и товар, то сейчас еще и влазит бренд. Значит возрастет количество оперций для определения того что запросили в урл:
-товар
-узел
- либо перечень товаров одного бренда в узле
Так же непонятно как организовать урл если у товара нет бренда, лепить для простоты noname?
С самими чпу проблем нет, вопрос в том как их правильно организовать и разбирать 
Сейчас использую в структуре каталогов nested sets. К каждой строке для удобства разбора ЧПУ добавил 2 поля
Т.е. для
Каталог
--Мобильные телефоны
----Nokia
Таблица nodes имеет след вид
node_id|l|r|parent|title|rewrite|rewrite_path
1|1|6|0|Каталог|catalog|/catalog/
2|2|5|1|Мобильные телефоны|mobile|/catalog/mobile/
3|3|4|2|Nokia|nokia|/catalog/mobile/nokia/
Таблица товаров products имеет след вид
product_id|node|title|rewrite
1|3|E71|e71
2|3|6500 Classic Bronze|6500-classic-bronze
Таким образом, если через чпу приходит запрос /catalog/mobile/nokia/6500-classic-bronze /
И если запрос
SELECT … FROM `nodes`, `products` WHERE `products`.`node` = `nodes`.`node_id` AND `products`.`rewrite` = ‘6500-classic-bronze’ AND `nodes`.`rewrite_path` = ‘/catalog/mobile/nokia/’
возвращает одну строку, значит это товар
Если же прилетает запрос /catalog/mobile/nokia/
То я сначала ищу
SELECT … FROM `nodes`, `products` WHERE `products`.`node` = `nodes`.`node_id` AND `products`.`rewrite` = ‘nokia’ AND `nodes`.`rewrite_path` = ‘/catalog/mobile/’
Естественно ничего не нахожу и тогда отправляю второй запрос
SELECT … FROM `nodes` WHERE `nodes`.`rewrite_path` = ‘/catalog/mobile/’
возвращает только одну строку, значит это узел
Все работает и нет у меня претензий кроме одного, Бренд у меня включен в структуру. Что неправильно и неудобно при поиске
Таким образом хочется вынести бренды в отдельную таблицу, в структуре каталога избавиться от лишних узлов, а к каждому товару добавить поле бренд для связи
Если раньше у нас в чпу были в параметра узел и товар, то сейчас еще и влазит бренд. Значит возрастет количество оперций для определения того что запросили в урл:
-товар
-узел
- либо перечень товаров одного бренда в узле
Так же непонятно как организовать урл если у товара нет бренда, лепить для простоты noname?
как мне кажется