Задаем значение DOCTYPE в TYPO3
Иногда в процессе создания сайта на 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.