Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Структура каталогов в интернет магазине


Автор: Ripper 12.1.2014, 02:11
Добрый вечер

Хочу написать интернет магазин, простой. Делаю на laravel 4.1.
Есть таблица категорий товаров. Бесконечное количество вложений. Вывожу я эти категории в меню. В качестве URL можно было бы задать ID категории, но хочу ЧПУ. Вот не могу только понять как это делается. Допустим я ввожу в таблицу с категориями поле slug, в котором будет имя категории для url-а. Тогда URL можно строить в виде:
/phones/apple/
где phones и apple это slug-и категорий, phones отец, apple сын

Делаю в роутинге такую схему /categories/{productCategories} где последнее - параметр который содержит строку вида aaa/bbb/ccc/ddd, типа вложенные категории.

И как мне теперь достать нужную категорию? В плане, рассмотрим 2 случая:

/tablets/apple/
/phones/apple/

Я не могу просто взять последнее слово и по нему искать айдишник категории т.к. slug не уникален. Уникальна должна быть вся структура. И получается как-то геморно проходится по tablets искать всех детей, искать в них apple, проверять что больше категорий нет и т.п.

Что-то как то муторно, мне кажется все проще, просто не знаю как это проще реализовать


Автор: ksnk 12.1.2014, 12:56
Про laravel ничего не знаю, но про чпу с магазинами имеются следующие мысли
  • Команде поддержки магазина всегда хочется иметь "вечные" ссылки, которые не будут меняться в зависимости от политики администрации и набора продаваемых товаров. Всякие пиар акции и статьи на сайте имеют ссылки на товары-группы и эти ссылки нежелательно менять.
  • Ссылки, вообще говоря, должны быть информативны сами по себе. Тоесть в ссылке на товар должно быть краткое его название-описание

Сcылка на товар, например, может содержать название товара, хотя бы и на русском
http://site.ru/items/%D0%9A%D0%BE%D0%BB%D1%8F%D1%81%D0%BA%D0%B0+3+%D0%B2+1+Jane+Rider+Formula+Strata+(%D0%96%D0%B0%D0%BD%D0%B5+%D0%A0%D0%B0%D0%B9%D0%B4%D0%B5%D1%80+%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0+%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B0).1111
Ключевым моментом тут будет цифровой индекс в конце адреса, по которому вычисляется товар. В качестве живого примера можно посмотреть на темы на phpclub.ru. Ссылки на темы сделаны примерно так. Можно применить транслитерацию, но для непродвинутых посетителей магазина это будет хуже, чем по русски.

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

Тоесть, ВСЕ чпу сводится к анализу первого токена (item|article|items|...) и финального индекса. Весь остальной мусор в ссылке нужен для ее читабельности.

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

Автор: cia 12.1.2014, 20:39
Могу порекомендовать в slug писать "полный путь", тоесть "tablets/apple". Разумеется в админке, при изменении верхней категории, нужно также автоматом править и вложенные.

Автор: Gold Dragon 14.1.2014, 18:25
Цитата(Ripper @  12.1.2014,  03:11 Найти цитируемый пост)
В качестве URL можно было бы задать ID категории, но хочу ЧПУ.

Цитата(ksnk @  12.1.2014,  13:56 Найти цитируемый пост)
Ссылки, вообще говоря, должны быть информативны сами по себе. Тоесть в ссылке на товар должно быть краткое его название-описание
не соглашусь. Для пауков побоку какая ссылка, а человек всё равно не будет запоминать ссылку (да даже читать её не будет), просто скопирует себе или сделает закладку.

Лучше уж иметь сквозную идентификацию товара и получать ссылки по типу (её уж точно запомнить реально)

_http://moysite.ru/6281.html

всяко лучше чем 

_http://moysite.ru/krasnaya_shapochka_s_sinem_pumponom_dlya_malchikov.html

И ещё не нужно забывать что если магазин большой, то однозначно будут дубликаты названий

Если уж хочется, то можно добавить категорию

Автор: ksnk 14.1.2014, 19:27
Цитата(Gold Dragon @  14.1.2014,  18:25 Найти цитируемый пост)
Для пауков побоку какая ссылка, а человек всё равно не будет запоминать ссылку (да даже читать её не будет), просто скопирует себе или сделает закладку.

Ссылки иногда просто складируют в отдельный файл, бросают по скайпу и по почте.

И чем, принципиально, отличается 
http://moysite.ru/6281.html
от 
http://site.ru/items/%D0%9A%D0%BE%D0%BB%D1%8F%D1%81%D0%BA%D0%B0+3+%D0%B2+1+Jane+Rider+Formula+Strata+(%D0%96%D0%B0%D0%BD%D0%B5+%D0%A0%D0%B0%D0%B9%D0%B4%D0%B5%D1%80+%D0%A4%D0%BE%D1%80%D0%BC%D1%83%D0%BB%D0%B0+%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B0).1111
?
Цитата(ksnk @  12.1.2014,  12:56 Найти цитируемый пост)
Ключевым моментом тут будет цифровой индекс в конце адреса,


Автор: Gold Dragon 14.1.2014, 20:04
Цитата(ksnk @  14.1.2014,  20:27 Найти цитируемый пост)
И чем, принципиально, отличается 
человекопонятностью smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)