1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Установка и настройка

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

Главные вкладки

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

Комментарии

Аватар пользователя 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) {
}

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

Аватар пользователя 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 в 14:56

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

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /