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


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

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

削除できます。

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


うーん、私はそれを見つけましたが、まだそれを削除することはできません:)私はすぐにPHPを学ぶべきだと思います:)template.php(テンプレート内)に追加できるコードを見つけ、コードは「Generator」行を削除します。function program_html_head_alter(&$ head_elements){unset($ head_elements ['system_meta_generator']); }

しかし、私は削除する必要がある2つの追加行にまだ問題があります。あなたがカスタムホームページを持っていると、サブページだけにメインドメイン用のURLを与える正規のURLがある場合は良くありません...ショートリンクと同じ-誰かがその記事に/ node / ...これらの行はd7

クリーンなURLとpathautoを使用してD7を新規インストールした場合、正規のURLリンクが自動的に設定されますか?
アンディ

はい、そうです。
ベルディール

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.