आप drupal_add_html_head () द्वारा जोड़े गए मेटा टैग कैसे ऑर्डर करते हैं?


12

मैं एक Drupal साइट में Open Graph समर्थन जोड़ रहा हूं और मेरे पास drupal_add_html_head () का एक गुच्छा है, जैसे:

  $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');

कुल मिलाकर, मेरे पास इनमें से 10 हैं। वे उसी क्रम में आउटपुट नहीं करते हैं, जिसे वे कहते हैं (सभी एक ही कार्य में)।

क्या आदेश को सेट करने के लिए मैं किसी तरह का भार उठा सकता हूं?

जवाबों:


15

# वजन वाली संपत्ति का उपयोग करें। के रूप में drupal_get_html_head () का उपयोग करता है drupal_render () , मेटा टैग रेंडर करने के लिए जब उन्हें प्रतिपादन #weight प्रयोग किया जाता है।

अपनी स्थानीय साइट पर परीक्षण करने के लिए मैं निम्नलिखित कोड का उपयोग करता हूं; यह वही कोड है जिसका आप उपयोग कर रहे हैं, सिवाय इसके कि नोड ऑब्जेक्ट के लिए कोई संदर्भ नहीं है।

  $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());

मुझे जो आउटपुट मिला वह निम्नलिखित है।

<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" />

जैसा कि आप देखते हैं, अंतिम जोड़ा टैग पहले दिखाई देता है।

मैं फिर निम्न कोड चलाता हूं।

  $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());

मुझे जो आउटपुट मिला वह निम्नलिखित है।

<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" />

जैसा कि आप देखते हैं, मेटा टैग का क्रम बदल दिया गया है; कोड से जोड़े गए मेटा टैग डिफॉल्ट मेटा टैग के Drupal से जोड़े जाने के बाद दिखाई देते हैं।

_drupal_default_html_head () (फ़ंक्शन जो डिफ़ॉल्ट मेटा टैग लौटाता है) "सामग्री-प्रकार" मेटा टैग के लिए #weight का उपयोग करता है।

  $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,
  );

बहुत अच्छे धन्यवाद! काम किया। ऐसा लगता है कि मैं कहीं बहुत स्पष्ट रूप से याद किया। मेरी अपनी शिक्षा के लिए, आपको यह दस्तावेज कहां से मिला?
जस्टिन

1
एक बार जब मैंने देखा कि मेटा टैग के साथ प्रतिपादन किया गया है drupal_render(), तो मैंने यह देखने की कोशिश की है कि क्या # वेट का उपयोग किया गया था, क्योंकि इसका उपयोग ऐसे तत्वों के लिए किया जाता है जो उसी फ़ंक्शन के माध्यम से प्रस्तुत किए जाते हैं। दस्तावेज़ के लिए drupal_render()कहता है: "तत्वों को आंतरिक रूप से यूसोर्ट () का उपयोग करके सॉर्ट किया जाता है।"
kiamlaluno
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.