Как удалить определенные метатеги?

18

Как я могу удалить эти теги со своих страниц в Drupal 7?

<link rel="shortlink" href=" .... " />
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
<link rel="canonical" href="...." />

Обновление : у меня есть код для template.php, который удаляет генератор и канонические теги.

function program_html_head_alter(&$head_elements) {
  unset($head_elements['system_meta_generator']);
  foreach ($head_elements as $key => $element) {
    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical') {
      unset($head_elements[$key]); 
    }
  }
}

Кто-нибудь может добавить что-нибудь, чтобы удалить ярлык короткой ссылки?

Pierre.Vriens
источник
1
Все выглядит хорошо, но зачем вынимать каноническое? Это на самом деле полезно.

Ответы:

11

Это отображается в html.tpl.php в переменной $ head. $ head добавляется к переменным в template_process_html с помощью drupal_get_html_head () . В этой функции вы можете видеть, что вызывается hook_html_head_alter () .

Там вы можете удалить их.

Однако обратите внимание, что эти ссылки могут быть важны для SEO, чтобы избежать того, что поисковая система считает, что у вас есть дублированный контент на вашем сайте, если, например, узел доступен через node / nid и псевдоним.

Berdir
источник
хм, я нахожу это, но все еще не могу удалить это :), я думаю, что я должен изучить php скоро :), я нахожу код, который можно добавить к template.php (в шаблоне), и код удаляет строку "Generator". function program_html_head_alter (& $ head_elements) {unset ($ head_elements ['system_meta_generator']); }
но у меня все еще проблема с 2 дополнительными строками, которые мне нужно удалить. Это не очень хорошо для SEO, если у вас есть пользовательская домашняя страница и канонический URL-адрес, а не для основного домена только для подстраницы ... то же самое с короткой ссылкой - почему кто-то может увидеть, что в статье есть дополнительный адрес с /node/...stupid идеей добавить эти строки для d7
Так что, если у меня будет новая установка D7 с чистыми URL-адресами и pathauto, каноническая ссылка будет автоматически установлена?
Энди
Должно быть, да.
Бердир
5

Я использую следующую функцию в моем файле template.php:

/**
 * Used to remove certain elements from the $head output within html.tpl.php
 *
 * @see http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_html_head_alter/7
 * @param array $head_elements
 */
function YOUR_THEME_NAME_html_head_alter(&$head_elements) {
    $remove = array(
        'system_meta_generator',
        'metatag_canonical',
        'metatag_shortlink'
    );

    foreach ($remove as $key) {
        if (isset($head_elements[$key])) {
            unset($head_elements[$key]);
        }
    }

    // Use this loop to find out which keys are available.
    /* -- Delete this line to execute this loop
    echo '<pre>';
    foreach ($head_elements as $key => $element) {
        echo $key ."\n";
    }
    echo '</pre>';
    // */
}
Fleshgrinder
источник
Это не сработало для меня - 'metatag_canonicalи 'metatag_shortlinkне существует в качестве индексов $head_elements(это в Drupal 7). Ответ, данный @Levente, работал нормально.
4

Я тоже решил шортлинк, модифицируя ваш код.

Кто-то может привести в порядок это правильно, потому что я не знаю, как правильно это поставить, и ни то, ни другое, имеет ли это побочные эффекты или нет. Это заставляет ненужные ссылки исчезать из головы.

function nameof_mytheme_html_head_alter(&$head_elements) {
  unset($head_elements['system_meta_generator']);
  foreach ($head_elements as $key => $element) {
    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'canonical') {
      unset($head_elements[$key]);
    }

    if (isset($element['#attributes']['rel']) && $element['#attributes']['rel'] == 'shortlink') {
      unset($head_elements[$key]);
    }
  }
}

Да, это отношение мясника к каноническим связям, но до тех пор, пока не придет лучшего sulotion, это еще лучше.

Вот почему: вам нужны канонические ссылки, показанные ТОЛЬКО на дублирующих страницах, те, которые не являются предпочтительной версией. Оригинальные страницы должны быть оставлены в покое: там не должно показываться ничего канонического! Вот почему я до сих пор мясник вокруг.

Levente
источник