Оптимизация html в Друпале. Валидность.

О ужас. Ровно половину дня я потратил на то, чтобы привести код вебкниги.ком к валидности! При том, что модулей почти не поставлено (о модулях вебкниги можно прочитать тут: статья о модулях Drupal). Как обычно, народ на форумах буквально СТОНЕТ от выбора технических решений разработчиками.

Начнем забавного. Например, по дефолту в любой версии Друпала выдается следующая красота в хедере:

< meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
< title>Вебкнига: о жизни и о книгах
< meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
< link rel="alternate" type="application/rss+xml" title="Вебкнига: о жизни и о книгах RSS" href="http://www.webkniga.com/rss.xml" />

Иными словами, метаданные о кодировке повторяются дважды.

Я пошел выяснять, что же это глючит. Искать (в очередной раз) долго не пришлось, я не один такой "умный". На официальном сайте друпала (друпал. орг) есть довольно большая ветка на эту тему. Так вот, сюрприз: это не кривизна рук верстальщиков, не жопорукость творцов модулей! Создатели друпала сделали это СПЕЦИАЛЬНО. занавес.

Как они это объясняют? Оказывается, если в дизайне не прописать параметр кодировки в метатеге, то Друпал могут каким-то образом атаковать через этот параметр (сразу же вспоминается эпизод, когда друпал ломал мне базу данных). Поэтому бравые друпаловцы программно вшили в ядро этот пункт.

 

С комментарием "Мы это сделали, потому что не все создатели тем обращают внимание на этот метатег"!!!

Какое же лечение этого бага? Есть два варианта, в первом приходится лезть в ядро (файл common.inc) - мне не понравилось. Второй вариант задействует файл template.php в текущей теме дизайна, на нем я и остановился.

Итак, для того, чтобы убрать дублирующие метадеги в Друпале, нужно добавить в этот файл следующие строки:

function phptemplate_preprocess_page(&$vars) {
$vars['head'] = preg_replace('/]*>/', '', $vars['head']);
}

Ну это, понятное дело, не единственная проблема валидности. Начнем с того, что любой текстовый редактор Друпала вносит свои безумные коррективы в код. Валидных среди них нет. Ну это проблема не только Друпала (хотя почему у некоторых платных скриптов c этим нет проблем?)

Другой неприятной неожиданной (но простите, уже прослеживается безрадостная логика) оказалось то, что в ядре скрипта зашито огромное количество html кода. Который найти и изменить не программисту как минимум очень сложно. Наличие html в php - это, как правило как минимум - низкая квалификация программистов. Или наплевательское отношение к работе. Думаю, в случае с Друпалом оба фактора сыграли свою роль 🙂

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