Форум → Программирование → PHP для идиотов → Человечные урлы в каталоге (теория иерархии)
Человечные урлы в каталоге (теория иерархии)
-
Форумчане, дайте совет, я что-то заблудился в 3х соснах. Задача - сделать каталог, в отличие от сложных - мой по одной теме, поэтому уровней вложения всего 2, без перекрестных ассоциаций. Хотелось бы чтобы листался он по такому принципу:
http://dir.yahoo.com/Computers_and_Internet/Programming_and_Development/
т.е.
<домен.ру><каталог><группа><категория1>
——————————-<категория2>
——————————-<категорияN>
Вот у меня и раскололась голова, т.к. до этого я подобного не делал. У меня для упрощения даже появилась мысль пойти на создание физических папок уровня <группа> (их всего 9 и меняться они не будут), в каждой из которых будет лежать шаблон страницы, который уже "пролистывает" содержимое уровня "категория". Особо морочит наличие многих задач, в том числе - представление структуры в базе. При стандартном решении
Group:
[id_group] [name_txt] [name_url]
и
Category:
[id_group] [id_category] [name_txt] [name_url]
возникают вопросы, как представлять потом список категорий, а точнее их коды, выпадающим списком или формой с чекбоксами. Поэтому даже показалось что надо представить весь каталог одноуровневым. Для снятий нагрузки с базы, для некоторых этапов иметь заготовленные списки категорий в виде html файлов (с оформлением в виде дропдаун списков, листов с радиобаттнами/чекбоксами и в виде прочих элементов форм) А при изменении со стороны админа - такие списки(файлы) автоматом перезаписывать.
Короче пока не могу даже вопрос сформулировать. Я надеюсь поймете о чем я. Из главного - хотелось бы меньше дергать базу и хитаксесс. И конечно сделать урлы без всяких &group. Кстати, каким образом поступила яху? Короче говоря - образумьте. -
Апрель 8, 2008, 1:11 д.п., спустя 48 минут 27 секунд
Собственно вопроса не понял =)
На счет структуры - то она точно такая, просто id не auto_increment'ный, а строковый, естественно, уникальный.
Дальше работать точно так - принципиальной разницы никакой.возникают вопросы, как представлять потом список категорий, а точнее их коды, выпадающим списком или формой с чекбоксами
Тут вообще не понял. Ну точно так представлять, как и всегда представляют. Что значит их коды? Зачем чекбоксы?Из главного - хотелось бы меньше дергать базу и хитаксесс.
Ну базу придется при каждой выборке дергать по-любому. Для ЧПУ, опять же, я бы заюзал мод реврайт. Можно обойтись и без него, но, имхо, мод реврайт рулит =)Поэтому даже показалось что надо представить весь каталог одноуровневым. Для снятий нагрузки с базы, для некоторых этапов иметь заготовленные списки категорий в виде html файлов (с оформлением в виде дропдаун списков, листов с радиобаттнами/чекбоксами и в виде прочих элементов форм) А при изменении со стороны админа - такие списки(файлы) автоматом перезаписывать.
Не надо снимать нагрузку с базы, там где она должна быть.У меня для упрощения даже появилась мысль пойти на создание физических папок уровня <группа> (их всего 9 и меняться они не будут), в каждой из которых будет лежать шаблон страницы, который уже "пролистывает" содержимое уровня "категория"
Ага, а можно вообще все сделать на хтмл. -
Апрель 8, 2008, 2:12 д.п., спустя 1 час 1 минуту 38 секунд
Да, этот вопрос в стиле "мысли вслух". Но всеже …
Тут вообще не понял. Ну точно так представлять, как и всегда представляют. Что значит их коды? Зачем чекбоксы?
Коды - дубликаторы, для "внутреннего пользования". Может потребоваться при необходимости в одном дропдауне поместить все группы и категории каталога (,а не только категории одной группы). Потом, в базе, не будет же каждый элемент(товар) в виде принадлежности к категории, содержать строку ее названия?! И в хтмл это не может быть
Так что цифровые коды нужны. Но так ли это?<select value="import">импорт</input>
Если представление было правильное:
GROUPS (group_id, group_name):
1, import
2, export
CATEGORIES (category_id, group_id, category_name):
1, 1, bolts
2, 2, bolts
Как в таком случае вывести список всех категорий и групп (например на странице занесения товара), болту (корорый может быть ипортным и экспортным) приписываем одну категорию с помощью одного дропдауна. Код списка же не может выглядеть вот так:
<select name="category">
<option disabled>ИМПОРТ</option>
<option value="bolts"> Болты</option>
<option disabled>ЭКСПОРТ</option>
<option value="bolts"> Болты</option>
</select>
Мне кажется поэтому уникальной строкой категории не обойтись. Решение может выглядить как
<option value="1_1"> Болты</option> <!– этот болт импортный –>
но такое значение, придется каждый раз парсить … -
Апрель 8, 2008, 3:15 д.п., спустя 1 час 2 минуты 18 секунд
И в хтмл это не может быть
<select value="import">импорт</input>
Почему не может?Так что цифровые коды нужны. Но так ли это?
Чем принципиально отличаются цифровые индексы от строковых? -
Апрель 8, 2008, 9:30 д.п., спустя 6 часов 15 минут 25 секунд
Не надо снимать нагрузку с базы, там где она должна быть.
ИМХО при больших нагрузках на магазин и не ежеминутно меняющемся ассортименте это вполне оправдано и называется кэширование…о_О -
Апрель 8, 2008, 11:20 п.п., спустя 13 часов 49 минут 32 секунды
Насчет "кеширования" - это серьезно и разумно. Меняются только товары, категории могут не измениться хоть год. Поэтому дергать базу бывает неблагоразумно.
-
S.A.P. не могут потому что названия могут повторяться. Поэтому дал пример с болтами.
-
Я видимо был не прав и увел тему не в то русло. Как вы думаете, как реализовано на яху? Я понимамаю что не на пхп )), но сомневаюсь что это подобие мод рерайта.
Что я совсем не могу понять, как отловить "виртуальные" папки и съимитировать их в адресной строке. -
Апрель 8, 2008, 11:45 п.п., спустя 25 минут 45 секунд
S.A.P. не могут потому что названия могут повторяться. Поэтому дал пример с болтами.
А вы посмотрите, в некоторых инет магазинах как сделаны товары в урлах. По типу /Mobiles/Mobile-IPhone-2GB.
Ваша задача как раз в том и состоит, чтобы следить за уникальностью ключа на программном уровне. Болты тоже разные бывают, и я не вижу никакой проблемы, чтобы сделать для них разные индексы.Как вы думаете, как реализовано на яху? Я понимамаю что не на пхп )), но сомневаюсь что это подобие мод рерайта.
Я думаю, это знают только на яху =) Могу только дать ссылку на большинство способов, которыми реализуется ЧПУ.
http://spectator.ru/technology/php/user_friendly_urls
Мод реврайт из них самый нормальный. -
Апрель 9, 2008, 12:09 д.п., спустя 24 минуты 1 секунду
pyhtelkin, слишком много вопросов в одном:
1. Как с помощью modrewrite получить и разобрать URL? (Про папки забудт нафиг)
2. Как хранить рубрики в базе?
3. Как извлекать то что хранится в пункте 2 с помощью того, что получено в пункте 1?
4. Как организовать кешироване того, что извлечено в пункте 3?
Давай последовательно, в каком из пунктов у тебя проблема? -
Апрель 10, 2008, 12:27 д.п., спустя 1 день 17 минут
Давай последовательно, в каком из пунктов у тебя проблема?
Да, я тоже понял что сий вопрос слишком объемлющь. Спасибо за понимание, ступор немного сдвинулся, сейчас немножко почитаю и отпишусь.
S.A.P., если вы говорите что надо таки отказаться от кодов категорий, мне всетаки не хочется верить что тем самым вы предлагаете в свойствах (каждого!) товара категорию указывать тоже строчкой, типа 'export-bolts-m8x1'. Но ведь это же не "спортивно" … -
-
Март 14, 2010, 3:47 п.п., спустя 703 дня 14 часов 1 минуту
помогите нубу из ссылки вида
http://site.ru/video_files.php?cat_id=1
сделать http://site.ru/video/cat/1
прбоввал так, не пашШет
RewriteEngine On
RewriteRule ^video/cat/([0-9]+)$ video_files.php?cat_id=$1 [L,QSA] -
Март 14, 2010, 3:49 п.п., спустя 1 минуту 58 секунд
полностью .htaccess покаживсе умрут, а я изумруд -
Март 14, 2010, 3:56 п.п., спустя 7 минут 19 секунд
полностью .htaccess покажиRewriteEngine On
RewriteRule ^video/cat/([0-9]+)$ video_files.php?cat_id=$1 [L,QSA]
# задаем соответствие mime типов расширению
AddType text/vnd.wap.wml;charset=utf-8 .wml
AddType application/vnd.sonyericsson.mms-template tpl
AddType application/vnd.wap.wmlc .wmlc
AddType text/vnd.wap.wmlscript .wmls
AddType application/vnd.wap.wmlscriptc .wmlsc
AddType image/vnd.wap.wbmp .wbmp
AddType application/vnd.eri.thm .thm
AddType application/vnd.mophun.application .mpn
AddType application/vnd.mophun.certificate .mpc
AddType text/vnd.sun.j2me.app-descriptor .jad
Addtype text/x-vmel .mel
Addtype audio/imelody .imy
AddType application/vnd.smaf .mmf
Addtype text/x-vmel .emy
AddType audio/amr .amr
AddType audio/x-wav .wav
AddType application/x-tar .hid
Addtype image/jpeg .jpg
Addtype image/jpeg .jpeg
Addtype image/gif .gif
Addtype image/png .png
Addtype image/bmp .bmp
Addtype text/x-imelody .imy
Addtype text/x-emelody .emy
Addtype text/x-vcard .vcf
Addtype text/x-vcalendar .vcs
Addtype text/calendar .ics
Addtype application/smil .smil
Addtype application/smil .smi
Addtype application/java-archive .jar
Addtype application/vnd.symbian.install .sis
Addtype audio/wav .wav
Addtype audio/midi .midi
Addtype audio/midi .mid
Addtype audio/rmf .rmf
Addtype application/vnd.wap.mms-message .mms
AddType video/flv .flv
AddType video/mp4 .mp4
Addtype video/3gpp .3gp
Addtype application/zip .zip
Addtype audio/mpeg .mp3 -
Март 14, 2010, 8:58 п.п., спустя 5 часов 2 минуты 27 секунд
mmf еще жив…https://smappi.org/ - платформа по созданию API на все случаи жизни -
Пожалуйста, авторизуйтесь, чтобы написать комментарий!