А это клавиатура, с помощью которой я творю...
http://kurepin.ru/php/day/url/
Rambler's Top100
PHP-2. Принципы построения URL-адресов

Прежде чем приступить к продолжению повествования, хочу попросить прощения сразу у двух групп людей: у тех, кого коробит от опечаток, (сам их не люблю, но проверять себя не люблю еще больше) и тех, кто принимает все написанное как единственно правильное руководство к действию.

Первых я хочу порадовать тем, что нашел корректора, который поправит основную массу опечаток в моих текстах, а вторым, наверное, уже ничего не поможет, но все же обращусь и к ним. Господа, все, что написано в этом курсе, а, равно как и в любом другом моем "произведении", является описанием частных конкретных случаев, да еще и при рассмотрении их с моей персональной колокольни. Поэтому все написанное не может являться истиной в последней инстанции.

Со всеми остальными читателями продолжаю обсуждать структуру сайта caricatura.ru.

В последний раз мы с вам обсуждали структуру будущего сайта и остановились на том, что все публичные адреса у нас будут без окончаний .html и т.п., что достигается использованием папок и индексных файлов в них.

Пришло время подумать, какова должна быть структура папок для разного рода содержимого.

Тут я вынужден оговориться. Дело в том, что сайт caricatura.ru существовал раньше в виде нескольких самостоятельных сайтов, которые сейчас представляют в нем отдельные рубрики. С этим связаны некоторые нелогичности в построении текущей структуры сайта. Так вот, чтобы вас не сбивали нестыковки между сказанным и сделанным, я предупреждаю, что структура настоящего сайта и структура, описываемая в этом курсе, — могут быть в чем-то различны!

Чтобы грамотно разложить контент по директориям (а мы помним, что наш сайт верстается на диск и отдается посетителю уже из статических файлов), необходимо ответить на очень важный вопрос: "какие данные мы хотим предоставить посетителю?".

Вот давайте перечислять.

Физические элементы (объекты):

1. Авторы.
2. Картинки, которые привязаны как к авторам, так и к рубрикам.

Виртуальные элементы:

1. Картинка — изображение картинки + выходные данные к ней.
2. Лист — подбор картинок по любому признаку.
3. Рубрика — список авторов и картинок по одной тематике.
4. Голос — мнение посетителя, оценившего картинку.

Пока остановимся на этом. Собственно, этого уже достаточно для создания почти всего сайта.

Опишем объект "автор":
1. Имя
2. Фамилия
3. символическое имя (потом поясню)
4. e-mail
5. COPi-номер
N. другие данные

И объект "картинка":

0. ID (идентификационный номер)
1. Автор
2. Название
3. Рубрика
4. Изображение
5. Тип изображения (mime)
6. Размер (ширина+высота)
7. Дата публикации
8. Флаг видимости (объясню позже)
N. Другие данные

Как мы будем располагать эти данные на диске? Я предлагаю размещать картинки так:

/theme/author/nnn/

где:
theme — название рубрики
author — символическое имя автора (вот оно где у нас вылезло)
nnn — уникальный идентификационный номер картинки

Почему именно так? Да потому, что это логично (как я ответил, а?!). Пользователь всегда сможет выбрать нужный ему уровень:

http://caricatura.ru/ — карикатурный сайт.
http://caricatura.ru/erotica/ — эротический раздел карикатурного сайта.
http://caricatura.ru/erotica/bandura/ — эротические карикатуры Д.Бандуры.
http://caricatura.ru/erotica/bandura/273/ — эротическая картинка N 273 Д.Бандуры.

Каждый из представленных URL является своеобразным "уровнем", смысл которых, я очень надеюсь, объяснять не надо. На любой из этих уровней пользователь может зайти, чтобы отыскать интересующую его информацию.

Разумеется, каждая из указанных папок у нас на самом деле существует и имеет свой файл index, в котором заложены правила отображения информации.

Пожалуй, это все, что нам потребуется для физического размещения рисунков и коллажей. Теперь нам надо разобраться, каким образом мы будем предоставлять эти рисунки зрителям.

Почесав репу, я решил, что буду публиковаться ежедневно. У меня уже большой опыт создания сайтов и большой опыт общения с другими создателями, чтобы не знать одной очень важной вещи: регулярность — залог любви посетителя, залог успеха. Каждый день посетитель хочет видеть что-то новое на любимом сайте. А кто такой посетитель? Это клиент. А клиент — он всегда прав! Выхода нет — делаем "ежедневку".

Если сайт ежедневно выдает новую порцию картинок, значит логично объединить их под общим названием "выпуск".

Следующий за этим вывод — если выпуски ежедневные, значит надо привязываться к датам. При этом было бы вполне логично сделать так, чтобы посетитель мог интуитивно выбрать интересующий его день. Это можно сделать двумя способами:

1. Предоставить удобную навигацию для поиска нужного дня.

2. Создать удобную систему построения адресов (URL), которая позволит также интуитивно открывать нужную дату.

Ну, о навигации внутри сайта мы пока говорить не будем, а вот какой же будет URL у ежедневных выпусков? Правильно, такой и будет:

http://caricatura.ru/yyyy/mm/dd/

где:
yyyy — год,
mm — номер месяца
dd — день в месяце

Согласитесь, так довольно просто будет найти нужный выпуск, если ты знаешь его дату.

Опять же, мы легко сооружаем многоуровневую древовидную структуру, где можно обратиться не только к конкретной дате, но и к другим уровням этого URL:

http://caricatura.ru/2003/ — 2003-й год.
http://caricatura.ru/2003/09/ — сентябрь'03.
http://caricatura.ru/2003/09/28/ — 28 сентября 2003.

Опять же, довольно удобно, согласитесь? По-моему, у нас все очень логично и просто получается.

Продолжим завтра. Переваривайте.

29.09.03

[шаг назад] [печатать] [в начало сайта]



copyright ©2000-2017 Ruslan Kurepin