Статья
Версия для печати
Обсудить на форуме (2)
BBcode в SMF.


Автор: Чернышов Роман (RXL)
Дата написания: 2005
Последнее изменение: 25.08.2011.


Специальные символьные конструкции для разметки текста — BBcode — называются по имени движка phpBB, в котором были реализованы. Идея оказалась настолько удачной, что ее переняли разработчики других движков. Сегодня я расскажу об использовании BBcode в движке SMF (Simple Machines Forum) версии 1.1.x


За годы эксплуатации SMF на форуме forum.shelek.ru некоторые теги претерпели изменения и были добавлены новые. В соответствующих местах это будет отмечено знаком [shelek]. Запрещенные на forum.shelek.ru будут отмечены знаком [shelek]

Оглавление



Некоторые сведения о BBcode в SMF.

Все теги набираются в нижнем регистре.
Все теги классифицированы по типам.

Специфичная информация.
Типы (из комментария в Source/Subs.php):
  • (missing): [tag]parsed content[/tag]
  • unparsed_equals: [tag=xyz]parsed content[/tag]
  • parsed_equals: [tag=parsed data]parsed content[/tag]
  • unparsed_content: [tag]unparsed content[/tag]
  • closed: [tag]...[tag /]
  • unparsed_commas: [tag=1,2,3]parsed content[/tag]
  • unparsed_commas_content: [tag=1,2,3]unparsed content[/tag]
  • unparsed_equals_content: [tag=...]unparsed content[/tag]

То же, но по-русски:
  • (missing). Простой тег. Текст между тегами может содержать другие теги. Может содержать именованные параметры.
    Пример: [img width=100]image url[/img]
  • unparsed_equals. Необрабатываемый параметр. Текст между тегами может содержать другие теги.
    Пример: [color=yellow]text[/color]
  • parsed_equals. Обрабатываемый параметр. Текст между тегами может содержать другие теги.
    Пример: [quote=source]text[/quote]
  • unparsed_content. Текст между тегами может содержать любой текст - он не обрабатывается.
    Пример: [email]mailbox@example.com[/email]
  • closed. Одиночный тег без параметров. Пример: [hr]
  • unparsed_commas. Параметр-список. Текст между тегами может содержать другие теги.
    Пример: [shadow=black,bottom]text[/shadow]
  • unparsed_commas_content. Параметр-список. Текст между тегами может содержать любой текст - он не обрабатывается.
    Пример: [flash=200,100]flash url[/flash]
  • unparsed_equals_content. Параметр сложного формата. Текст между тегами может содержать любой текст - он не обрабатывается.
    Пример: [code=main.cpp,1,10-12]code[/code]

Необрабатываемый текст может содержать конструкции, похожие на BB-code, но не обрабатываемые движком.
Также теги могут иметь дополнительные именованные параметры.

Теги, поддерживаемые SMF.

Цвет текста

black, blue, green, red, white — Парные теги, без параметров. Могут содержать другие теги.
color — Парный тег. Один параметр — цвет: слово или #rrggbb (как в HTML). Может содержать другие теги.

Базовые свойства шрифта.

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

b — жирный (bold).
i — курсив (italic).
s — зачеркнутый (strict).
sub — нижний индекс (subscript).
sup — верхний индекс (superscript).
u — подчеркнутый (underline).

Строчные теги.

Парные теги. Могут содержать другие теги.

abbr, acronym — аббревиатура, текст с пояснением в виде всплывающей подсказки. Параметр - всплывающий текст.
grow — спецэффект с подсветкой символов. Параметр списочный: цвет,strength. [shelek]
move — двигающийся текст (marquee). [shelek]
tt — моноширинный (teletyped)
shadow — спецэффект с тенью. Параметр списочный: цвет,положение_тени. Положение тени задается словами left, right, top, bottom или в градусах. Реально же есть всего 5 градаций: <50, <100, <190, <280 и >=280. [shelek]

move, grow и shadow по-разному работают в разных браузерах. Лучше их не применять.

Выравнивание текста.

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

center — выравнивание текста по центру.
justify — выравнивание текста по обоим краям. [shelek]
left — выравнивание текста по левому краю.
right — выравнивание текста по правому краю.

Управление шрифтами.

Парные теги.

font — задает тип (или имя) шрифта. Можно задать списком - используется первый поддерживаемый.
size — задает размер шрифта числом, числом с указанием единицы измерения (pt и px) или словом (как в CSS).

Так как браузеры по-разному обрабатывают размер шрифта, заданный без указания единицы измерения, то лучше будет всегда укзывать единицу.

Направление текста.

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

ltr — слева направо.
rtl — справа налево.

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

Блочные теги.

code — блок исходного кода. Если код - php (содержит <?php ?>), то выполняется автоматическая встроенная в php подсветка. Текст между тегами не обрабатывается. Необязательный параметер просто копируется в заголовок блока.
h1 ... h6 — заголовок. Аналог HTML заголовков. [shelek]
html — блок для чистого html-кода. Текст между тегами не обрабатывается. [shelek]
me — блок, оформленный согласно CSS-классу "meaction". Имеет один параметр, подставляемый в начало текста. Может содержать другие теги. [shelek]
nobbc — блок, внутри которого текст не обрабатывается. [shelek]
offtop и offtopic — полушутошный блочный тег. Смысл: автор сам помечает офтоп в своих текстах, чтобы модератору было проще его вырезать. [shelek]
para — параграф (в русской терминологии - абзац) с отсупом на первой строке. [shelek]
php — аналог code. Текст изначально считается php-кодом.
pre — форматированный текст. Выводится моноширинным шрифтом. Сохраняются все пробелы. Может содержать другие теги.
quote — цитирование. Может содержать другие теги. Имеет необязательные параметры (но устанавливаться должны все сразу):
  • 'author' - текст - 1..192 любых символа, кроме символов "<" и ">"
  • 'link' - ссылка одного из следующих форматов:
                    [board=НОМЕР;]topic=НОМЕР[.msgНОМЕР#msgНОМЕР][;start=НОМЕР]
                    [board=НОМЕР;]action=profile;u=НОМЕР
  • 'date' - время в формате unix timestamp

Списки.

li — элемент списка. Может содержать другие теги.
list — Задает список. Может содержать только теги li. В параметре type можно указать внешний вид списка: none, disc, circle, square, decimal, decimal-leading-zero, lower-roman, upper-roman, lower-alpha, upper-alpha, lower-greek, lower-latin, upper-latin, hebrew, armenian, georgian, cjk-ideographic, hiragana, katakana, hiragana-iroha, katakana-iroha.

Таблицы.

table — таблица. Может содержать только теги tr. Границы ячеек и таблицы не отображаются.
td — ячейка таблицы. Допустим только внутри tr. Может содержать другие теги.
tr — строка таблицы. Допустим только внутри table. Может содержать только теги td.

Ссылки.

anchor — якорь (точка, на которую можно ссылаться). Имеет один параметр: идентификатор, начинающийся с латинской буквы и содержащий латинские буквы, арабские цифры, знаки '_' и '-'. В начале идентификатора может стоять символ '#'. Может содержать другие теги.
email — ссылка на почту (mailto:). E-mail передается в параметре, иначе - используется текст между открывающим и закрывающим тегами. Может содержать другие теги.
flash — flash-объект. Параметры аналогичны параметрам email. Текст между тегами не обрабатывается.
ftp — ссылка на ftp. Работает аналогично email.
img — картинка. Ссылка задается между открывающим и закрывающим тегами. Текст между тегами не обрабатывается. Имеет необязательные параметры:
  • alt - текст, отображаеммый при отключенных картинках
  • width - ширина
  • height - высота
Специально для  forum.shelek.ru  были добавлены следующие модификации тега img:
  • Если у тега есть параметры, то картинка оборачивается ссылкой на ту же картинку для просмотра в отдельном окне или закладке браузера.
  • Вариант unparsed_equals_content: [img=параметры]ссылка[/img], где параметры разделены запятыми и не имеют строго порядка:
    • border — контур вокруг картинки.
    • Положение картинки:
      • block — значение по умолчанию — текст не огибает картинку, расположенную в левой части сообщения.
      • center — текст не огибает картинку, расположенную по середине сообщения.
      • inline — картинка является элементом строки текста.
      • left — текст огибает картинку справа.
      • right — текст огибает картинку слева.
    • Подпись под картинкой, обернутая в двойные кавычки.
    • Ширина в пикселях.
    Пример: [img=center,border,300,"Рис. 1."]ссылка на картинку[/img]
iurl — ссылка. URL задается между тегами либо параметром. В первом случае текст между тегами не обрабатывается. В последнем случае можно написать идентификатор, заданный в anchor и начинающийся с символа '#'.
url — общая ссылка. Работает аналогично email. Текст между тегами не обрабатывается.

Прочие.

br — принудительный перевод строки. Одиночный тег без параметров.
hr — горизонтальная линия. Одиночный тег без параметров.
time — выводит сформатированную дату. Обязательный параметер - время формата unix timestamp. Текст между тегами не обрабатывается.

Индекс кодов

...
Версия для печати
Обсудить на форуме (2)