web-dev-qa-db-fra.com

Comment supprimer certaines balises META?

Comment puis-je supprimer ces balises de mes pages dans Drupal 7?

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

pdate: J'ai le code pour template.php, qui supprime le générateur et les balises canoniques.

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

Quelqu'un peut-il ajouter quelque chose pour supprimer la balise de lien courte?

17
user332

Ceci est affiché dans html.tpl.php dans la variable $ head. $ head est ajouté aux variables dans template_process_html en utilisant drupal_get_html_head () . Dans cette fonction, vous pouvez voir que hook_html_head_alter () est appelé.

Vous pouvez les supprimer.

Cependant, notez que ces liens peuvent être importants pour le référencement, pour éviter qu'un moteur de recherche pense que vous avez du contenu en double sur votre site, si par exemple un nœud est disponible via node/nid et l'alias.

11
Berdir

J'utilise la fonction suivante dans mon fichier 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

J'ai également résolu le raccourci, en modifiant votre code.

Quelqu'un pourrait le ranger correctement, car je ne sais pas comment le dire correctement, et ni s'il a des effets secondaires de cette façon ou non. Cela fait cependant disparaître les liens indésirables de la tête.

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

Oui, c'est l'attitude d'un boucher envers les liens canoniques, mais jusqu'à ce qu'il n'y ait pas de meilleure émotion, c'est encore mieux.

C'EST POURQUOI: vous avez besoin de liens canoniques affichés UNIQUEMENT sur les pages en double, celles qui ne sont pas la version préférée. Les pages originales doivent être laissées seules: aucune canonique ne doit y être affichée! C'est pourquoi je bouge toujours.

4
Levente