특정 메타 태그를 제거하는 방법은 무엇입니까?


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

누구든지 짧은 링크 태그를 제거하기 위해 무언가를 추가 할 수 있습니까?


1
모든 것이 좋아 보이지만 왜 표준을 사용하지 않습니까? 실제로 도움이됩니다.

답변:


11

이것은 $ head 변수의 html.tpl.php 에 표시됩니다 . drupal_get_html_head () 를 사용하여 $ head가 template_process_html 의 변수에 추가됩니다 . 이 함수에서 hook_html_head_alter () 가 호출 되었음을 알 수 있습니다 .

이것들을 제거 할 수 있습니다.

그러나 노드가 노드 / 니드 및 별명을 통해 사용 가능한 경우 검색 엔진이 사이트에 중복 컨텐츠가 있다고 생각하지 않도록 SEO에이 링크가 중요 할 수 있습니다.


흠 나는 그것을 찾을 수 있지만 여전히 그것을 제거 할 수 없습니다 :) 나는 곧 PHP를 배워야한다고 생각합니다 :) template.php (템플릿에서)에 추가 할 수있는 코드를 찾고 코드는 "Generator"줄을 제거합니다. 함수 program_html_head_alter (& $ head_elements) {unset ($ head_elements [ 'system_meta_generator']); }

하지만 여전히 제거 해야하는 2 개의 추가 줄에 문제가 있습니다. 사용자 정의 홈페이지가 있고 정규 페이지에 주 도메인에 대한 URL이 아닌 서브 페이지에 대해서만 URL을 제공하는 경우 서재응에 좋지 않습니다. 이 라인을 d7에

따라서 깨끗한 URL과 pathauto를 사용하여 D7을 새로 설치하면 표준 URL 링크가 자동으로 설정됩니까?
Andy

그렇습니다.
Berdir

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>';
    // */
}

이것은 나를 위해 작동하지 않았습니다- '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이 나오지 않을 때까지 이것은 더 좋습니다.

그 이유 : 중복 버전 페이지에만 선호되는 표준 링크가 아닌 표준 링크가 필요합니다. 원본 페이지는 그대로 두어야합니다. 정식 페이지는 표시되지 않아야합니다. 그래서 나는 아직도 정육점입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.