Вы не вошли.
Страницы 1
В ближайшие дни добавлю этот тэг в парсер.
Есть 2 варианта реализации (можно сделать одновременно оба):
Как и <a name="...">...</a>, и <span id="...">...</span>, сделать его с открывающим и закрывающим тэгами, охватывающим какой-то текст.
Синтаксис вижу такой:
[anchor=anchor_name]Здесь какой-то текст[/anchor]
Тэг не содержит в себе текста, только имя, и соответственно преобразуется в html-разметку нулевого размера.
[anchor]anchor_name[/anchor]
В обоих случаях:
anchor_name - любое сочетание заглавных и строчных латинских букв, цифр и знака подчеркивания.
как должен сторонний читатель узнать, что на данное место сообщения можно ссылаться? Добавлять иконку-ссылку? Сделать весь якорь ссылкой на самого себя (в 1 случае) ?
Ваши комментарии:
По аналогии с оформлением URL можно оставить оба варианта. Но если в будущем приходить к однообразному оформлению, то оставить первый вариант.
Чтобы как-то обозначить место куда можно ссылаться, например заголовок раздела или подраздела, перед заголовком, оформленным тегом anchor ставим жирную точку со ссылкой и title=ссылка на это место.
В общем синтаксис такой же, как в первом сообщении, реализованы оба варианта.
Имя якоря ограничивается символами латинского алфавита (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)
Я написал плюсы и минусы ссылки содержащей только якорь, никакого URL. Ты мне приводишь в качестве примера ссылку с URL+якорь.
Свойства полной ссылки не поменялись, только добавилась возможность указать в конце собственный якорь. Собственно указать якорь в конце ссылки и раньше можно было, только нужно было чтобы он совпадал с каким-нибудь реальным ID на странице. А вот указать только якорь было нельзя, такая ссылка портилась парсером.
Для чего вообще нужны ссылки без URL? Я бы такие использовал для перекрестных ссылок внутри статьи.
В ссылку вида:
<a href="#example_anchor">...</a>
Браузеры автоматом подставляют в начало полный адрес текущей страницы.
Редактировался yoorick (03.11.2011, 14:28:33)
Появилась возможность добавить якорь к заголовку (и подзаголовку) просто указав ID в тэге [ h] ([ sh])
[h=example_anchor2]Заголовок на который можно ссылаться[/h]
равносильно
[h][anchor=example_anchor2]Заголовок на который можно ссылаться[/anchor][/h]
Аналогично для подзаголовка:
[sh=example_anchor3]Подзаголовок на который можно ссылаться[/sh]
Ковырял регулярки в парсере, в глаза бросилась та, что ограничивает набор используемых символов в имени якоря, и тут понеслось...
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)
Еще раз пересмотрел допустимые символы для якоря.
Спецификация HTML 5 допускает любые символы разрешенные относительно RFC. (У нас правда сейчас в движке XHTML 1.0 Strict)
Не стал добавлять все (может быть зря?)
Новый набор символов: a-z A-Z 0-9 _ - / : . ~
Страницы 1
[ Сгенерировано за 0.016 сек, 8 запросов выполнено - Использовано памяти: 1.94 MiB (Пик: 2.01 MiB) ]