15:24

URL

Embrace your dreams and prove your honor...
Сегодня немного о том, как правильно писать запросы в браузер (URL).

Итак. Большинство запросов (и все, с которыми нам придётся иметь дело тут) состоит не более чем из 3 частей.


Первая - строго обязательная. Она по сути указывает, куда нам нужно попасть. Начинается с "http://" ("https://") и заканчивается расширением (например, ".htm"), верхним доменным именем (".com", ".ru",..) либо последним символом '/' в строке (внимание: не путать с '\', который используется в Windows!).

Например, в URL "http://pay.diary.ru/~diary-tips/?newpost" первая часть - "http://pay.diary.ru/~diary-tips/", а в "http://pay.diary.ru/~diary-tips/p168451169.htm#top" - "http://pay.diary.ru/~diary-tips/p168451169.htm".

Единственная причина, по которой нам интересна эта часть - возникающая время от времени ошибка с доступом к дневнику пользователя, ранее пользовавшегося платным аккаунтом, но позже перешедшего на обычный. Т.е., если при переходе по ссылке вида "http://XYZ.diary.ru/p1234567890.htm" вы получаете ошибку, попробуйте "http://diary.ru/~XYZ/p1234567890.htm". В случае, если дневник\пост ещё существуют, и у вас есть права на их просмотр - вы попадёте как раз куда вам надо.


Во второй части мы передаём скриптам параметры. В дайри это может быть фильтр по тэгам или, например, необходимость сортировать записи в порядке следования. Необходимость отображать не сам дневник, а избранное, форму новой записи или, скажем, цитатник - всё это тоже тут. Начинается блок всегда с символа '?', после этого идёт перечисление переменных и их значений (вида "имя_переменной=значение_переменной") (для некоторых переменных смысл имеет только сам факт передачи, поэтому значение не передаётся (т.е. в примере выше отсутствует часть "=значение_переменной" либо "значение_переменной")), разделяемых символами '&'. В дайри использование этого (во всяком случае, прописывая вручную) имеет смысл достаточно редко, но вот вам несколько примеров, когда оно полезно:

1. "http://diary.ru/~diary-tips/?order=frombegin&tag=364468&from=5&oam".
Отображение только записей с тегом 364468 ("Теги оформления записи") в сообществе Diary Tips, причём отсортированных в порядке следования, с раскрытыми MORE и начиная с 5-ой.

2. "http://diary.ru/list/?from=9000".
Когда для того, чтобы добраться до нужной записи, надо слишком много листать, быстрее просто подправить число в строке. В данном случае, ссылка кидает на список всех дневников (отсортированный по умолчанию, т.е. по времени последней записи), начиная с 9000.

3. "http://diarycss.diary.ru/?post=p0m1".
Если вы знаете о возможности передать какие-либо параметры, но для этого нет кнопки, можно их просто написать. В данном случае, это ссылка на more (описание тут).

Параметры, которые могут понадобиться в diary:
- order. Указывает на порядок отображения записей. Может принимать три значения: frombegin (в порядке следования), fromend (в обратном порядке) (по умолчанию) и last_comment (по последним комментариям).
- tag. Отображение только записей с заданным тегом. Внимание: в качестве значения указывается не сам тег, а его ID (что-то вроде порядкового номера в системе), так что перед тем, как писать вручную, узнайте его (найдите в списке тегов нужного вам дневника, наведите и прочитайте в строке состояния).
- userid. Отображение только записей с заданным тегом. Имеет смысл для сообществ. ID можно посмотреть в профилях юзеров. Важно, что не работает вместе с параметром tag.
- from. Пропуск N записей с начала, где N - значение параметра. Используется тут для пейджинга повсеместно.
- oam. Открытие всех more.
- post. Для прямых ссылок на more. О нём выше.


И, наконец, третья часть ссылки. Это ссылка на "якорь". Стандартное использование - переход к части страницы (к т.н. "якорю") либо снятие перезагрузки страницы при нажатии на кнопку (если она используется для других целей). Кроме того, в последнее время это часто видно на сайтах с ajax (например, в твиттере или в одноклассниках) для передачи переменных в JS "на лету", но здесь это нас не касается, верно? Что важно - это возможность повесить якорь в пост, а потом дать ссылку прямо на него. Начинается ссылка на якорь с символа '#', после этого идёт имя якоря. Имя якоря - параметр name в теге <a>. Другими словами:

Вот якорь (если не нужно отображать его - текст можно не вводить).


А вот ссылка на этот якорь (работает только при условии, что данный пост ещё висит на главной странице сообщества).


Стоит также запомнить 2 вещи. Первая - это якорь "#top". В diary он висит везде (или почти), висит вверху страницы (а ещё на него всегда есть ссылка, но в зависимости от типа дизайна она может быть скрыта). Вторая - для того, чтобы дать на якорь ссылку, которая будет переходить не перезагружая страницу, в diary придётся помучаться - создать флешку (.swf) со ссылкой типа parent, которая будет указывать на этот якорь, и вставить в пост её в виде объекта (embed). Кроме того, совсем всегда эти ссылки будут работать только в платных дневах\сообществах, иначе работоспособность будет зависеть ещё и от того, является ли нажимающий пользователем платных сервисов или нет (связано с отличиями в первой части URL).


В общем как-то так. Feel free to use. ^__^

@темы: Записи

Комментарии
05.01.2012 в 03:43

Fucking hero
вопрос: можно ли якорь привязать к определенному посту, чтоб он не слетал при перемещении поста по дневнику?
05.01.2012 в 04:31

Embrace your dreams and prove your honor...
Якорь и вписывается в посты. Он - HTML, текст по сути. А вот возможности привязать его к куску страницы для более продвинутой проработки интерфейса нет. Так же, как нет возможности создать ссылку на такую штуку. Впрочем, можно попробовать сделать аналогичные вещи через CSS-имитацию кнопки, да...
05.01.2012 в 19:56

Fucking hero
D Ash, в общем, я про ссылку на него и говорю. потому что какой тогда смысл-то, без ссылки