web-dev-qa-db-ja.com

特定のメタタグを削除する方法

Drupal 7)でこれらのタグをページから削除するにはどうすればよいですか?

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

pdate:ジェネレータと標準タグを削除する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]); 
    }
  }
}

誰かがショートリンクタグを削除するために何かを追加できますか?

17
user332

これは、変数$ headの html.tpl.php に表示されます。 $ -headは drupal_get_html_head() を使用して template_process_html の変数に追加されます。その関数では、 hook_html_head_alter() が呼び出されていることがわかります。

これらを削除することができます。

ただし、これらのリンクはSEOにとって重要である可能性があることに注意してください。たとえば、node/nidとエイリアスを介してノードが利用可能である場合、サイトにコンテンツが重複していると検索エンジンが判断しないようにします。

11
Berdir

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

私はショートリンクも解決し、コードを変更しました。

私はそれを適切に配置する方法がわからないので、誰かがそれを適切に片付けることができました。ただし、不要なリンクが頭から消えます。

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

はい、それは正規のリンクに対する肉屋の態度ですが、より良い結果が出なくなるまで、これはまだより良いです。

それが理由:優先ページではない複製ページにのみ表示される正規リンクが必要です。元のページはそのままにする必要があります。標準ページは表示されません。だからこそ、私はまだ肉屋です。

4
Levente