Битрикс и HTML 4.01 Transitional

При выводе $APPLICATION->ShowCSS(), $APPLICATION->ShowMeta("keywords"), $APPLICATION->ShowMeta("description") отображаются одиночные теги, закрытые слешем. Как сделать, чтоб вместо, например, <meta name="keywords" content="1С-Битрикс, CMS, PHP, bitrix, система управления контентом" /> выводилось бы <meta name="keywords" content="1С-Битрикс, CMS, PHP, bitrix, система управления контентом" > (без слеша в конце)?

Не рекомендую верстать, используя HTML 4.01 Transitional, однако, если так уж получилось (например, вам дали готовую верстку), то вот один простой совет, который мне посоветовали в тех. поддержке Битрикса. Используйте на своё усмотрение, лично я не считаю, что это лучший вариант. Создаем вот такой триггер:

AddEventHandler("main", "OnEndBufferContent", "RemoveSlash");
function RemoveSlash(&$content)
{
	$content = str_replace("/>",">", $content);
}

При выполнении события в функцию приходит весь контент сайта, до того как он будет выведен на экран

Update

Для ядра версии 8.5.3 и выше можно использовать следущую функцию:

CMain::ShowMeta(
string property_id,
string meta_name = false,
bool bXhtmlStyle = true
)

bXhtmlStyle &ndash параметр, устанавливающий, по какому стандарту оформляются HTML-теги. Если значение true, то теги выводятся по стандарту XHTML (<meta />), иначе по стандарту HTML 4 (<meta>). Необязательный, по умолчанию true.

Дата: 26 декабря 2009
Теги: верстка, html, transitional, валидность
Добавить в закладки:

Комментарии (5)

Тайлер, 26 Декабря 2009

А на сколько это увеличивает нагрузку на сервер и выдачу страницы? Напрме на сайте с посещаемостью 3.000 человек в сутки.

Александр Живетьев
Александр Живетьев, 26 Декабря 2009

Да посещаемость тут особо не важна. Всё зависит от длины сгенерированного html-кода. Если страница получилась из 10 строчек html, то никакой разницы. Если из 2000, то, думаю, уже значительно будет влиять

Евгений, 14 Января 2010

CMain::ShowMeta( string property_id, string meta_name = false, bool bXhtmlStyle = true ) bXhtmlStyle-Параметр, устанавливающий, по какому стандарту оформляются HTML-теги. Если значение true, то теги выводятся по стандарту XHTML (<meta />), иначе по стандарту HTML 4 (<meta>). Параметр появился в версии 8.5.3 ядра. Необязательный, по умолчанию true. Все уже придумано.

Александр Живетьев
Александр Живетьев, 14 Января 2010

Евгений, спасибо, добавил в пост. Когда я это писал, ещё не было версии 8.5.3 :)

гость, 21 Апреля 2011

Почему бы не заменять вот так?
<code>preg_replace('/<(meta|img|input|link)(.*)\/>/U', '<$1$2>', $content);</code>
Какие-то теги возможно и забыл, можно их добавить.