Страниц: 1
title
Description
Body
Здесь и сейчас рассмотрим как перейти на настоящий XHTML. Если уж брать за основу вёрстку в XHTML, то указание одного доктайпа маловато будет.
1. По дефолту сервер передаёт нам html-файлы с типом text/html, но это уже "не модно"
теперь же нам необходимо чтобы он передавал файлы с типом application/xhtml+xml. Для этого указываем в настройках сервера в каком типе передавать нам файлы (если доступа к настройкам нет, то это делается в файле .htaccess (если сервер Apache), который распологает в корневой директории сайта).
DefaultType application/xhtml+xml
2. Теперь нам надо непосредственно подготовить страницу для передачи её в виде XHTML.
Первым делом указываем что страница связана с XML. Данное действие необходимо лишь в том случае, если кодировка документа отлична от UTF-8! Здесь важным моментом является проблема с IE 6 (ну а как же без этого, хотя IE 7 здесь исправился, но далеко не до конца), дело в том, что IE 6 ищет доктайп только в первой строке, а когда не находит, то переключается в Quirks Mode (где ваш сайт может перекосячить весьма неплохо).
<?xml version="1.0" encoding="windows-1251" ?>
Дальше необходимо указать доктайп, здесь выбор различный, главное чтобы это был XHTML-документ. Например:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Так же необходимо добавить параметр xmlns в тег <html>, это необходимо чтобы обозначить принадлежность элементов на странице к зарегистрированному для XHTML пространству имен, а так же дополнительно можно указать язык документа:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
И в завершении необходимо указать в мета-теге то, что мы указывали в самом начале для сервера, а именно — тип документа с передаваемой информацией:
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
Вот теперь у нас есть полноценный XHTML.
Шаблоны для PunBB/PE теперь выглядит следующим образом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="<pun_content_direction>"> <head> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=<pun_char_encoding>" /> <pun_head> </head> <body> ...
Неактивен
интересно. может мне завести специальную группу "колумнисты" или "журналисты" и дать доступ к написанию "статей"?
Неактивен
даже не знаю. а оно надо? %)
Неактивен
это зависит от активности пользователей, тебя в частности. мне бы хотелось создать условия, когда активные пользователи генерируют полезный контент.
Неактивен
Надумал небольшое дополнение к первому посту по поводу улучшения предложенного, но столкнулся с досаднейшей ошибкой в IE7 (IE6 при этом работает вроде даже исправно)
Который не отображает сайт если указан контент-тайп как application/xhtml+xml, он его просто предлагает скачать ибо не может определить тип и соответвенно не знает что с ним делать. Баг ли это и будут ли он пофиксен, неизвестно ![]()
Дело было в том, чтобы избавиться от запесей в .htaccess (тип/кодировка) и этой строчки в голове шаблона:
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=<pun_char_encoding>" />
тем самым сберегая спички на уменьшении кода 8) Да и по сути она не нужна, т.к. не используется так как надо, настройки сервера в данном случае имееют привелегию в данном вопросе.
Передавать заголовок и кодировку хотелось непосредственно средствами php. Касательно punbb нам надо было залезть в include/header.php, найти 33-ю строку где идут параметры заголовка и после них вставить эту строку:
header('Content-Type: application/xhtml+xml; charset=utf-8');Но как всегда IE не перестаёт "радовать". Так что о полноценном xhtml придётся всем ненадолго позабыть, немногим смячает участь то, что xhtml так же позволяет передавать данные в text/html, то при этом документ не является xml-документом, а просто набором тегов.
header('Content-Type: text/html; charset=utf-8');Отредактированно Grace (04.06.2008 14:46:09)
Неактивен
Ха! Пришлось проделать небольшой финт ушами. Оказывается мы можем спросить у браузера поддерживает ли он указанный контент-тайп или нет, и тем самым кто поддерживает — отсылать application/xhtml+xml, а кто нет (IE) — text/html.
Для этого открываем include/header.php и вместо
header('Content-Type: text/html; charset=utf-8');ставим это:
if ( stristr($_SERVER["HTTP_ACCEPT"], "application/xhtml+xml") ) {
header('Content-Type: application/xhtml+xml; charset=utf-8');
}
else {
header('Content-Type: text/html; charset=utf-8');
}Неактивен
кстати настоятельно рекомендую использовать данную конструкцию на этапе отладки и разработки, уже нашел и пофиксил пару синтаксических ошибок
Неактивен
Страниц: 1