Для того, чтобы при расшаривании в соцсетях можно было указать конкретную картинку установлен Metatag: OpenGraph. Единственная проблема: он вставляет какуюто ерунду в самый верх HTML кода сайта
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" xmlns:og="http://ogp.me/ns#" xmlns:article="http://ogp.me/ns/article#" xmlns:book="http://ogp.me/ns/book#" xmlns:profile="http://ogp.me/ns/profile#" xmlns:video="http://ogp.me/ns/video#" xmlns:product="http://ogp.me/ns/product#" class="js" lang="ru">
Как убрать все эти " xmlns:og" ?
Комментарии
оффтоп//
Продолжаешь все с мельницами бороться?)
//оффтоп
если бы знал сколько мельниц я уже сам поборол. тут только вершина айсберга.
А да не сказал зачем это. Эти теги не дают проходить валидацию на w3.org
https://validator.w3.org/nu/?doc=http%3A%2F%2Fkapital-trans.ru%2F
пишет:
Error Attribute xmlns:og not allowed here.
Ну не проходит и что?)
yandex.ru тоже не проходит, живет как-то)
В хтмл.тпл.пхп. просто захардкодь, что надо.
Если в html.tpl.php написать просто - модуль все равно подставляет эти теги. Посмотрю какие в модули функции может и перепишу их. Хотя согласитесь, какой-то "дурной" код в html-е.
А можешь скинуть код, что именно прописал?
Задачу решил так. В модуле есть пара функций, очевидно недописанных.
<?php
// @TODO Would it be worth dynamically identifying whether these should be
function metatag_opengraph_preprocess_html(&$variables) {
// Fall back to hook_rdf_namespaces if the rdf module is enabled.
if (module_exists('rdf')) {
return;
}
// added, or just output them all?
// Need an extra namespace for the 'og' tags.
$variables['rdf_namespaces'] .= "\n xmlns:og=\"http://ogp.me/ns#\"";// Need an extra namespace for the "article" tags.
$variables['rdf_namespaces'] .= "\n xmlns:article=\"http://ogp.me/ns/article#\"";
// Need an extra namespace for the "book" tags.
$variables['rdf_namespaces'] .= "\n xmlns:book=\"http://ogp.me/ns/book#\"";
// Need an extra namespace for the "profile" tags.
$variables['rdf_namespaces'] .= "\n xmlns:profile=\"http://ogp.me/ns/profile#\"";
// Need an extra namespace for the "video" tags.
$variables['rdf_namespaces'] .= "\n xmlns:video=\"http://ogp.me/ns/video#\"";
// And for product tags.
$variables['rdf_namespaces'] .= "\n xmlns:product=\"http://ogp.me/ns/product#\"";
} /**
* Implements hook_rdf_namespaces().
*/
function metatag_opengraph_rdf_namespaces() {
return array(
'og' => 'http://ogp.me/ns#',
'article' => 'http://ogp.me/ns/article#',
'book' => 'http://ogp.me/ns/book#',
'profile' => 'http://ogp.me/ns/profile#',
'video' => 'http://ogp.me/ns/video#',
'product' => 'http://ogp.me/ns/product#',
);
} ?>
Если функцию function metatag_opengraph_preprocess_html(&$variables) убрать - лишние теги уходят.
А как ее в свою тему добавить? Попробовал переименовать переименовать по названию темы и оставить пустой.
function mytheme_opengraph_preprocess_html(&$variables) {
}
нефига. А как правильно?
Очевидно же, что в своей теме эту функцию не надо оставлять пустой, а надо выпилить лишние переменные.
<?php
if (module_exists('rdf')) {
return;
}
?>
А если включить RDF?
Они для мня все лишние эти переменные.
RDF включал. И что дальше?
Тогда
<?php
$variables =array();
?>
Так имя модуля - metatag_opengraph и соответственно нужен preprocess_html()
Либо в html.tpl.php из тега html убрать вывод $rdf_namespaces, если rdf атрибуты вообще не нужны в целом
Ну так очевидно из логики функции, что если включить rdf модуль, то строку rdf_namespaces будет он заполнять без участия metatag. Если модуль выключен, то metatag "вставляет какуюто ерунду" (с).
Включал модуль rdf и ничего не менялось.
"соответственно нужен preprocess_html()"
т.е. в теме оформления сделать function mytheme_preprocess_html(&$variables) {}- будет перекрывать то, что в модуле? Попробую.
в html.tpl.php прописал просто
<html>
или я не понял тебя.
И после этого всё равно прописались атрибуты к тэгу html? Это как минимум очень странно.
так это ж модуль делает
Очень сомнительно, что модуль может переопределять то, что уже выведено статикой в шаблоне.
он не переопределяет он добавляет к теги внутрь
<html ... >
Может ты не туда шаблон положил или назвал неправильно, или кэш не сбросил. Такого просто не может быть - статика, записанная в шаблон, уже ничем не обрабатывается, а идёт прямиком в ответ сервера.
Ну, не знаю. Может и я виноват. Пока в модуле TODO, пока врядли будет изящное решение этого вопроса.
Всем спасибо. Для себя проблему я решил.