Объявление

Хотите приглашение на сайт? Пишите: niikto@samovarchik.info


 

Re: Тэг якоря [anchor]

В ближайшие дни добавлю этот тэг в парсер.

Есть 2 варианта реализации (можно сделать одновременно оба):

  1. Как и <a name="...">...</a>, и <span id="...">...</span>, сделать его с открывающим и закрывающим тэгами, охватывающим какой-то текст.
    Синтаксис вижу такой:

    [anchor=anchor_name]Здесь какой-то текст[/anchor]
  2. Тэг не содержит в себе текста, только имя, и соответственно преобразуется в html-разметку нулевого размера.

    [anchor]anchor_name[/anchor]

В обоих случаях:

  • anchor_name - любое сочетание заглавных и строчных латинских букв, цифр и знака подчеркивания.

  • как должен сторонний читатель узнать, что на данное место сообщения можно ссылаться? Добавлять иконку-ссылку? Сделать весь якорь ссылкой на самого себя (в 1 случае) ?

Ваши комментарии:

Re: Тэг якоря [anchor]

По аналогии с оформлением URL можно оставить оба варианта. Но если в будущем приходить к однообразному оформлению, то оставить первый вариант.
Чтобы как-то обозначить место куда можно ссылаться, например заголовок раздела или подраздела, перед заголовком, оформленным тегом anchor ставим жирную точку со ссылкой и title=ссылка на это место.

Re: Тэг якоря [anchor]

В общем синтаксис такой же, как в первом сообщении, реализованы оба варианта.
Имя якоря ограничивается символами латинского алфавита (A-Z) любого регистра, знаком подчеркивания и цифрами.  (см. ниже)

Как это работает.

Полная ссылка

[url=http://samovarchik.info/viewtopic.php?id=3309#example_anchor]Полная ссылка[/url]

Сокращенная ссылка

[url=#example_anchor]Сокращенная ссылка[/url]

Этот текст помечен якорем #example_anchor

Изначально ссылки содержащие только якорь парсером не поддерживались, теперь поддерживаются.
Плюсы:

  • Работают даже в предпросмотре при редактировании/создании сообщения

  • Спокойно переживут смену адресации страниц (например включение/отключение ЧПУ)

Минусы (точнее это скорее особенность):

  • Можно расположить только на той же странице, что и якорь.

Внешнего проявления якори не имеют, но при желании им можно придать оформление через CSS (класс .bbanchor).

Редактировался yoorick (07.02.2012, 13:34:46)

Re: Тэг якоря [anchor]

yoorick пишет

Минусы (точнее это скорее особенность):

  • Можно расположить только на той же странице, что и якорь.

Что то с этим не понял немного. Вот здесь я поставил ссылку с якорем на другую страницу и вроде работает.

Re: Тэг якоря [anchor]

Я написал плюсы и минусы ссылки содержащей только якорь, никакого URL. Ты мне приводишь в качестве примера ссылку с URL+якорь.

Свойства полной ссылки не поменялись, только добавилась возможность указать в конце собственный якорь. Собственно указать якорь в конце ссылки и раньше можно было, только нужно было чтобы он совпадал с каким-нибудь реальным ID на странице. А вот указать только якорь было нельзя, такая ссылка портилась парсером.

Для чего вообще нужны ссылки без URL? Я бы такие использовал для перекрестных ссылок внутри статьи.
В ссылку вида:

<a href="#example_anchor">...</a>

Браузеры автоматом подставляют в начало полный адрес текущей страницы.

Редактировался yoorick (03.11.2011, 14:28:33)

Re: Тэг якоря [anchor]

Понял. Спасибо.

Re: Тэг якоря [anchor]

Появилась возможность добавить якорь к заголовку (и подзаголовку) просто указав ID в тэге [ h] ([ sh])

[h=example_anchor2]Заголовок на который можно ссылаться[/h]

равносильно

[h][anchor=example_anchor2]Заголовок на который можно ссылаться[/anchor][/h]

Аналогично для подзаголовка:

[sh=example_anchor3]Подзаголовок на который можно ссылаться[/sh]

Re: Тэг якоря [anchor]

Ковырял регулярки в парсере, в глаза бросилась та, что ограничивает набор используемых символов в имени якоря, и тут понеслось...

Fragment identifier на википедии.
Семантика fragment identifier на www.w3.org

Отсюда помимо прочего получаем подтверждение того, что идентификатор фрагмента (а именно так правильнее называть то, что идет в URL после символа #) не должен передаваться от клиента к серверу. О чем я вскользь высказывалсятут

Fragment в RFC3986 (спецификация URI)

Где допустимые символы для идентификатора фрагмента:

fragment    = *( pchar / "/" / "?" )

После чего с помощью Ctrl + F находим Appendix A, а в нем следующее:

pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded   = "%" HEXDIG HEXDIG
sub-delims    = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="

Но это ограничение касается лишь того, что я могу записать после символа # в URL.
HTML накладывает свои ограничения: определение атрибутов ID и CLASS и тип NAME

--------------------------------

Подправил регулярку и теперь:

  • допустимые символы: a-z A-Z 0-9 _ -

  • первый символ имени: a-z A-Z

Символы : и . разрешать не стал (хоть и можно по спецификации), по той же причине, по которой и сам их использовать не буду в разметке - такие ID не допустимы с точки зрения CSS. (см. ниже)

Редактировался yoorick (07.02.2012, 13:33:23)

Re: Тэг якоря [anchor]

Еще раз пересмотрел допустимые символы для якоря.
Спецификация HTML 5 допускает любые символы разрешенные относительно RFC. (У нас правда сейчас в движке XHTML 1.0 Strict)
Не стал добавлять все (может быть зря?)

Новый набор символов: a-z A-Z 0-9 _ - / : . ~

 

Дизайн сайта отсутствует
оформление: Группа «САМОВАРчик»

[ Сгенерировано за 0.013 сек, 8 запросов выполнено - Использовано памяти: 1.93 MiB (Пик: 2.01 MiB) ]