При выводе $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.



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