it-swarm.com.de

Wie bestellen Sie Meta-Tags, die von drupal_add_html_head () hinzugefügt wurden?

Ich füge Open Graph-Unterstützung zu einer Drupal - Site hinzu und habe eine Reihe von drupal_add_html_head () -Aufrufen, wie:

  $og_title = array(
    '#tag' => 'meta',
    '#attributes' => array(
      'property' => 'og:title', 
      'content' => $node->title,
    ),
  );
  drupal_add_html_head($og_title, 'zujava_og_title');

 $og_url = array(
    '#tag' => 'meta',
    '#attributes' => array(
      'property' => 'og:url', 
      'content' => url('node/' . $node->nid, array('absolute' => TRUE)),
    ),
  );
  drupal_add_html_head($og_url, 'zujava_og_url');

Insgesamt habe ich 10 davon. Sie scheinen nicht in der Reihenfolge ausgegeben zu werden, in der sie aufgerufen werden (alle in einer einzigen Funktion).

Gibt es eine Gewichtung, mit der ich die Reihenfolge festlegen kann?

12
Justin

Verwenden Sie die Eigenschaft #weight. Da drupal_get_html_head ()drupal_render () zum Rendern der Meta-Tags verwendet, wird beim Rendern #weight verwendet.

Ich verwende den folgenden Code, um einen Test auf meiner lokalen Site durchzuführen. Es ist derselbe Code, den Sie verwenden, außer dass er keinen Verweis auf das Knotenobjekt enthält.

  $og_title = array(
    '#tag' => 'meta',
    '#attributes' => array(
      'property' => 'og:title', 
      'content' => "This is the title",
    ),
  );
  drupal_add_html_head($og_title, 'zujava_og_title');

 $og_url = array(
    '#tag' => 'meta',
    '#attributes' => array(
      'property' => 'og:url', 
      'content' => url('node/1', array('absolute' => TRUE)),
    ),
  );
  drupal_add_html_head($og_url, 'zujava_og_url');

  dsm(drupal_get_html_head());

Die Ausgabe, die ich erhalten habe, ist die folgende.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta property="og:url" content="http://tero.local/dr72/node/1" />
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
<meta property="og:title" content="This is the title" />

Wie Sie sehen, wird zuerst das zuletzt hinzugefügte Tag angezeigt.

Ich führe dann den folgenden Code aus.

  $og_title = array(
    '#tag' => 'meta',
    '#attributes' => array(
      'property' => 'og:title', 
      'content' => "This is the title",
    ),
    '#weight' => 10,
  );
  drupal_add_html_head($og_title, 'zujava_og_title');

 $og_url = array(
    '#tag' => 'meta',
    '#attributes' => array(
      'property' => 'og:url', 
      'content' => url('node/1', array('absolute' => TRUE)),
    ),
    '#weight' => 200,
  );
  drupal_add_html_head($og_url, 'zujava_og_url');

  dsm(drupal_get_html_head());

Die Ausgabe, die ich erhalten habe, ist die folgende.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Generator" content="Drupal 7 (http://drupal.org)" />
<meta property="og:title" content="This is the title" />
<meta property="og:url" content="http://tero.local/dr72/node/1" />

Wie Sie sehen, wurde die Reihenfolge der Meta-Tags geändert. Die aus dem Code hinzugefügten Meta-Tags werden nach den von Drupal hinzugefügten Standard-Meta-Tags angezeigt.

_ drupal_default_html_head () (die Funktion, die die Standard-Meta-Tags zurückgibt) verwendet #weight für das Meta-Tag "Content-Type".

  $elements['system_meta_content_type'] = array(
    '#type' => 'html_tag', 
    '#tag' => 'meta', 
    '#attributes' => array(
      'http-equiv' => 'Content-Type', 
      'content' => 'text/html; charset=utf-8',
    ),
    // Security: This always has to be output first. 
    '#weight' => -1000,
  );
15
kiamlaluno