Как убрать теги в html от модуля Metatag: OpenGraph ?

Аватар пользователя VasyOK VasyOK 18 мая 2018 в 18:25

Для того, чтобы при расшаривании в соцсетях можно было указать конкретную картинку установлен 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" ?

0 Thanks

Комментарии

Аватар пользователя VasyOK VasyOK 18 мая 2018 в 18:42

если бы знал сколько мельниц я уже сам поборол. тут только вершина айсберга.

А да не сказал зачем это. Эти теги не дают проходить валидацию на w3.org
https://validator.w3.org/nu/?doc=http%3A%2F%2Fkapital-trans.ru%2F
пишет:
Error Attribute xmlns:og not allowed here.

Аватар пользователя VasyOK VasyOK 18 мая 2018 в 20:29

Если в html.tpl.php написать просто - модуль все равно подставляет эти теги. Посмотрю какие в модули функции может и перепишу их. Хотя согласитесь, какой-то "дурной" код в html-е.

Аватар пользователя VasyOK VasyOK 18 мая 2018 в 21:46

Задачу решил так. В модуле есть пара функций, очевидно недописанных.

 <?php
function metatag_opengraph_preprocess_html(&$variables) {
  
// Fall back to hook_rdf_namespaces if the rdf module is enabled.
  
if (module_exists('rdf')) {
    return;
  }

  

// @TODO Would it be worth dynamically identifying whether these should be
  // 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) {
}

нефига. А как правильно?

Аватар пользователя gun_dose gun_dose 18 мая 2018 в 22:56

Очевидно же, что в своей теме эту функцию не надо оставлять пустой, а надо выпилить лишние переменные.

Аватар пользователя negociant negociant 19 мая 2018 в 1:42
VasyOK wrote:

function metatag_opengraph_preprocess_html(&$variables) {
А как ее в свою тему добавить? Попробовал переименовать переименовать по названию темы и оставить пустой.

function mytheme_opengraph_preprocess_html(&$variables) {

}
нефига. А как правильно?

Так имя модуля - metatag_opengraph и соответственно нужен preprocess_html()

Либо в html.tpl.php из тега html убрать вывод $rdf_namespaces, если rdf атрибуты вообще не нужны в целом

Andruxa wrote:

А если включить RDF?

Ну так очевидно из логики функции, что если включить rdf модуль, то строку rdf_namespaces будет он заполнять без участия metatag. Если модуль выключен, то metatag "вставляет какуюто ерунду" (с).

Аватар пользователя VasyOK VasyOK 19 мая 2018 в 10:13

Включал модуль rdf и ничего не менялось.

"соответственно нужен preprocess_html()"
т.е. в теме оформления сделать function mytheme_preprocess_html(&$variables) {}- будет перекрывать то, что в модуле? Попробую.

gun_dose wrote:

А можешь скинуть код, что именно прописал?

в html.tpl.php прописал просто <html>

или я не понял тебя.

Аватар пользователя gun_dose gun_dose 19 мая 2018 в 10:24

И после этого всё равно прописались атрибуты к тэгу html? Это как минимум очень странно.

Аватар пользователя gun_dose gun_dose 19 мая 2018 в 11:56

Очень сомнительно, что модуль может переопределять то, что уже выведено статикой в шаблоне.

Аватар пользователя gun_dose gun_dose 19 мая 2018 в 14:56

Может ты не туда шаблон положил или назвал неправильно, или кэш не сбросил. Такого просто не может быть - статика, записанная в шаблон, уже ничем не обрабатывается, а идёт прямиком в ответ сервера.

Аватар пользователя VasyOK VasyOK 22 мая 2018 в 16:01

Ну, не знаю. Может и я виноват. Пока в модуле TODO, пока врядли будет изящное решение этого вопроса.
Всем спасибо. Для себя проблему я решил.