Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Задаем значение DOCTYPE в TYPO3

typo3 doctypeИногда в процессе создания сайта на TYPO3 (да и вообще веб разработки) возникает ситуация, когда, казалось бы, шаблон проекта подключен правильно без единой ошибки, но отображаемая «картинка» в некоторых браузера попросту разваливается. Первое, что нужно проверить в таком случае – значение элемента DOCTYPE для вашей веб страницы. Пару раз в свое практике сталкивался с этой проблемой и в первые разы потратил на ее решение почти что несколько часов. Выявить причину неполадки оказалось достаточно сложно – ведь все элементы веб сайта и исходного сверстанного шаблона были правильны, без ошибок и малейших неточностей. Как потом оказалось проблема закралась в самую первую строку HTML страницы, где и располагается пресловутый DOCTYPE.

Вообще DOCTYPE – это элемент, задающий тип текущего документа DTD (document type definition). Он указывает браузеру как нужно интерпретировать ту или иную веб страницу, ведь существует несколько различных версий HTML, плюс к тому же имеется так называемый XHTML (расширенный язык разметки). К тому же для разных версий имеются свои виды разметки, так например для HTML 4.01 есть строгий (Strict) и переходной (Transitional) синтаксис, а также значение указывающее наличие фрэймов (Frameset). В общем, при верстке нужно совершенно однозначно указывать браузеру как именно понимать веб документ – с чем нам DOCTYPE и помогает. Я не буду вдаваться с подробности данного тега, информации об этом много и так, можно почитать хотя бы в htmlbook.

Таким образом, у вас есть верстка макета сайта, где уже указан определенный DOCTYPE, и нужно его же указать в системе TYPO3. Для этого в cms есть определенный функционал – настройки производятся в шаблоне сайта (Template Setup) с использованием TypoScript. Например:

config.doctype = xhtml_11
config.xhtmlDoctype = xhtml_11
config.xmlprologue = none
config.xhtml_cleaning = all

Для определения DOCTYPE могут использоваться следующие значения:

  • xhtml_trans (XHTML 1.0 Transitional doctype)
  • xhtml_frames(XHTML 1.0 Frameset doctype)
  • xhtml_strict (XHTML 1.0 Strict doctype)
  • xhtml_basic (XHTML basic doctype)
  • xhtml_11 (XHTML 1.1 doctype)
  • xhtml_2 (XHTML 2 doctype)
  • none (без doctype вообще)

Значение тега XML prologue может быть таким:

  • xml_10 (XML 1.0 prologue)
  • xml_11 (XML 1.1 prologue)
  • none (XML prologue не установлен)

Ну, и для переменной XHTML cleaning есть такие варианты:

  • all (содержание обрабатывается всегда перед тем как может быть сохранено в кэше)
  • cached (обработка если страница сохраняется в кэш)
  • output (применяется только к выходному коду перед выводом)

Признаться честно, относительно переменных XHTML cleaning и XML prologue я особо конкретного ничего сказать не могу, знаю только что для них почти всегда используются стандартные значения, указанные выше. Собственно, для всех сайтов так и делаю:

config.xmlprologue = none
config.xhtml_cleaning = all

Подробнее про эти переменные и вообще DOCTYPE можете почитать в документации TSRef. Напоследок, скажу лишь, что по умолчанию значение DOCTYPE в TYPO3 равно:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

Как вы видели выше, значения переменных для DOCTYPE везде касаются xhtml. Если хотите использовать любое другой, то можно просто дописать его в виде значения переменной doctype. Так, например, в последнем сайте, что пришлось делать верстальщик использовать какой-то нестандартный DOCTYPE, поэтому я не особо долго думаю «тупо скопировал» строку из его верстки для Template Setup:

config.doctype = <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

После чего сайт стал корректно отображаться и в IE. Даже сложно поверить, что всего одна строка меняет внешний вид веб страницы настолько кардинально, но это факт:) Поэтому не забывайте о DOCTYPE.

09.05.10

Категории: TYPO3.

Теги: , , ,

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.