मैं page.tpl में खोज बॉक्स कैसे डाल सकता हूं?


27

मैं अपने विषय में प्रोग्रामेटिक रूप से खोज बॉक्स (सर्च ब्लॉक) कैसे डाल सकता हूं?

जवाबों:


39

अपने टैग के अनुसार, आप एक D7 समाधान की तलाश कर रहे हैं। Drupal 7 page.tpl.php $ search_box चर अब और नहीं है। हालाँकि आप इसे अपने टेम्पलेट में प्रीप्रोसेस फ़ंक्शन में जोड़ सकते हैं।

<?php
/*
 *  Preprocess page.tpl.php to inject the $search_box variable back into D7.
 */
function MYTHEME_preprocess_page(&$variables){
  $search_box = drupal_render(drupal_get_form('search_form'));
  $variables['search_box'] = $search_box;
}

फिर आपको बस अपने page.tpl.php में वैरिएबल प्रिंट करना होगा:

<?php print $search_box; ?>

आप मॉड्यूल_invoke का भी उपयोग कर सकते हैं, लेकिन आपको टेम्पलेट फ़ाइलों में php तर्क नहीं होना चाहिए:

<?php
  $block = module_invoke('search', 'block_view', 'search');
  print render($block); 
?>

धन्यवाद, मुझे तीसरा कोड ब्लॉक कहां रखना चाहिए? (सीधे page.tpl.php में या template.php में और फिर इसे page.tpl से एक्सेस करें?)
Nick.h

1
तीसरे ब्लॉक को page.tpl.php में रखा जाना चाहिए। एक आशुलिपि के रूप में आप भी उपयोग कर सकते हैं: "प्रिंट रेंडर (मॉड्यूल_इनवोक ('खोज', 'ब्लॉक_व्यू', 'सर्च'));"
बाला क्लार्क

2
"सख्त चेतावनी से बचने के लिए: [विषय-नाम] _preprocess_page () ([विषय-नाम] /template.php की लाइन xx) में संदर्भ द्वारा केवल चर पास किए जाने चाहिए।" अपने theme_preprocess_page को चेतावनी इस प्रकार होनी चाहिए: / * * इम्प्लीमेंटेशन theme_preprocess_page ()। * / समारोह [विषय-नाम] _preprocess_page (($ चर) {$ search_form = drupal_get_form ('search_form'); $ search_box = drupal_render ($ search_form); $ चर ['search_box'] = $ search_box; }
कुबनेर

7

इसके बजाय इसे सही तरीके से करें और ब्लॉक का उपयोग करें।
Page.tpl के अंदर हार्डकोडिंग तत्व, IMHO चीजों में से एक है जो अभी भी "अच्छे पुराने दिनों" के बाद से चारों ओर तैरता है।

इसके बजाय ब्लॉक सिस्टम का उपयोग करें; यह आपको सड़क के और लचीलेपन का रास्ता देता है। आप चाहें तो Blockify मॉड्यूल को भी देख सकते हैं ।

यह मॉड्यूल कई मुख्य Drupal तत्वों को ब्लॉक के रूप में उजागर करता है।



1

आप ब्लॉक सिस्टम का भी उपयोग कर सकते हैं और पेज में सर्च फॉर्म ब्लॉक को जोड़ सकते हैं

व्यवस्थापक> संरचना> ब्लॉक: खोज फ़ॉर्म

नेविगेशन मेनू में जगह के लिए, ब्लॉक को क्षेत्र में रखें

"पथ प्रदर्शन"

और फिर CSS के साथ संरेखित करें।

नेविगेशन मेनू के अधिकार में रखना पसंद है:

#navigation #block-search-form{
  position: absolute;
  right: 10px;
  top: 0;
}

यह काम करेगा, लेकिन सवाल एक कार्यक्रम समाधान के लिए संदर्भित था।
timofey.com
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.