हुक_पेज_ल्टर और प्रीप्रोसेस_पेज के बीच अंतर?


10

मुझे पूरी तरह से समझ में नहीं आता है कि मुझे Drupal 7 में hook_page_alter (& $ पेज) या template_preprocess_page (& $ var, $ हुक) का उपयोग कैसे करना चाहिए।

टेम्पलेट.php में उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है?

धन्यवाद

जवाबों:


16

अंतर उनका उद्देश्य है।

पृष्ठ स्तर पर तत्वों को निकालने, बदलने या जोड़ने के लिए हुक_पेज_बिल्ड () और हुक_पेज_अल्टर () का उपयोग किया जाता है। प्रत्येक ब्लॉक क्षेत्र के लिए शीर्ष स्तर के तत्वों
को hook_page_alter()शामिल करने के लिए पारित $ पेज सरणी । डिफ़ॉल्ट रूप से वे निम्नलिखित हैं:

  • page_top
  • हैडर
  • sidebar_first
  • सामग्री
  • sidebar_second
  • page_bottom

कार्यान्वयन का एक उदाहरण निम्नलिखित हो सकता है:

function mymodule_page_alter(&$page) {
  // Add help text to the user login block.
  $page['sidebar_first']['user_login']['help'] = array(
    '#weight' => -10, 
    '#markup' => t('To post comments or add new content, you first have to log in.'),
  );
}

प्रीप्रोसेस फ़ंक्शंस को वे चर बदलने के लिए कहा जाता है जो टेम्प्लेट फ़ाइल में पास किए जाते हैं। वे पृष्ठ की संरचना को बदल नहीं सकते हैं, लेकिन वे पृष्ठ के कुछ तत्वों की सामग्री को उन चरों की सामग्री को बदल सकते हैं।
उदाहरण के लिए, ओवरले मॉड्यूल प्राथमिक टैब को हटा देता है जब पृष्ठ की कल्पना की जा रही है ओवरले।

function overlay_preprocess_page(&$variables) {
  if (overlay_get_mode() == 'child') {
    unset($variables['tabs']['#primary']);
  }
}

1
लेकिन हुक प्रीप्रोसेस_पेज के साथ मैं $ var [[पेज '] के अंदर सामान बदलकर पेज संरचना को बदल सकता हूं। मैं इसका उपयोग करता हूं क्योंकि नोड पेज के लिए हुक_पेज_ल्टर के साथ एनआईडी प्राप्त करने के लिए मेरे पास कठिन समय था।
गागरिन

2
आप menu_get_object ()
andrewmacpherson
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.