আপনি কীভাবে drupal_add_html_head () দ্বারা যুক্ত মেটা ট্যাগ অর্ডার করবেন?


12

আমি একটি দ্রুপাল সাইটে ওপেন গ্রাফ সমর্থন যুক্ত করছি এবং আমার কাছে একগুচ্ছ দ্রুপাল_এইডি_এইচটিএমএল () কল রয়েছে, যেমন:

  $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

# ওয়েট সম্পত্তি ব্যবহার করুন। যেমনটি ড্রুপাল_জেট_এইচটিএমএল ( হেড) মেটা ট্যাগগুলি রেন্ডার করার জন্য দ্রুপাল_রেেন্ডার () ব্যবহার করে, রেন্ডার করার সময় # ওয়েট ব্যবহৃত হয়।

আমি আমার স্থানীয় সাইটে একটি পরীক্ষা করতে নিম্নলিখিত কোড ব্যবহার করি; নোড অবজেক্টের কোনও রেফারেন্স না থাকলে এটি আপনি একই কোড ব্যবহার করছেন।

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

আপনি দেখতে পাচ্ছেন, মেটা ট্যাগগুলির ক্রম পরিবর্তন করা হয়েছে; কোড থেকে যুক্ত হওয়া মেটা ট্যাগগুলি দ্রুপাল থেকে ডিফল্ট মেটা ট্যাগ যুক্ত হওয়ার পরে উপস্থিত হয়।

_ড্রুপাল_ডিফল্ট_এইচটিএমএল (হেড) (ডিফল্ট মেটা ট্যাগগুলি ফাংশন দেয়) "কন্টেন্ট-টাইপ" মেটা ট্যাগের জন্য # ওয়েট ব্যবহার করে।

  $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()বলে: "উপাদানগুলি অভ্যন্তরীণভাবে uasort () ব্যবহার করে বাছাই করা হয়।"
কিমলালুনো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.