Jak usunąć niektóre metatagi?

18

Jak mogę usunąć te tagi z moich stron w Drupal 7?

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

Aktualizacja : Mam kod dla template.php, który usuwa generator i tagi kanoniczne.

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]); 
    }
  }
}

Czy ktoś może dodać coś, aby usunąć tag krótkiego linku?

Pierre.Vriens
źródło
1
Wszystko wygląda dobrze, ale po co wyprowadzać kanonikę? To jest naprawdę pomocne.

Odpowiedzi:

11

Jest to wyświetlane w pliku html.tpl.php w zmiennej $ head. $ head jest dodawany do zmiennych w template_process_html za pomocą drupal_get_html_head () . W tej funkcji można zobaczyć, że wywoływana jest hook_html_head_alter () .

Możesz je usunąć.

Pamiętaj jednak, że te linki mogą być ważne dla SEO, aby uniknąć sytuacji, w której wyszukiwarka uzna, że ​​masz zduplikowane treści w witrynie, jeśli na przykład węzeł jest dostępny za pośrednictwem node / nid i aliasu.

Berdir
źródło
hmm, znajduję go, ale nadal nie mogę go usunąć :) Myślę, że powinienem wkrótce nauczyć się php :) Znajduję kod, który można dodać do template.php (w szablonie) i kod usuwa wiersz „Generator”. funkcja program_html_head_alter (& $ head_elements) {unset ($ head_elements ['system_meta_generator]]); }
ale nadal mam problem z 2 dodatkowymi liniami, które muszę usunąć. Nie jest to dobre dla SEO, jeśli masz niestandardową stronę główną i kanoniczny adres URL nie dla domeny głównej tylko dla podstrony ... to samo z krótkim linkiem - dlaczego ktoś może zobaczyć, że ten artykuł ma dodatkowy adres z /node/...głupi pomysł, aby dodać te linie do d7
Więc jeśli mam nową instalację D7 z czystymi adresami URL i pathauto, kanoniczny link URL zostanie ustawiony automatycznie?
Andy
Tak powinno być.
Berdir
5

Korzystam z następującej funkcji w moim pliku 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
źródło
Nie działało to dla mnie - 'metatag_canonicali 'metatag_shortlinknie istnieje jako indeks $head_elements(jest to w Drupal 7). Odpowiedź udzielona przez @Levente działała dobrze.
4

Rozwiązałem też skrót, modyfikując twój kod.

Ktoś może to porządnie uporządkować, ponieważ nie wiem, jak to właściwie ułożyć, i nie ma skutków ubocznych w ten sposób, czy nie. Jednak sprawia, że ​​niechciane linki znikają z głowy.

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]);
    }
  }
}

Tak, jest to podejście rzeźnika do powiązań kanonicznych, ale dopóki nie pojawi się lepsze pochłanianie, jest jeszcze lepiej.

DLACZEGO: potrzebujesz linków kanonicznych pokazanych TYLKO na zduplikowanych stronach, które nie są preferowaną wersją. Oryginalne strony należy pozostawić w spokoju: żaden kanoniczny nie powinien się tam pokazywać! Dlatego wciąż się rozbiję.

Levente
źródło