Drupal में कुछ पृष्ठ में प्रदर्शित करने के लिए ब्लॉक कैसे प्रदर्शित करें?


10

एक मॉड्यूल रेगिस्तान पर विचार करें:

  • पृष्ठ 1:- deserts/*
  • पृष्ठ 2:- deserts/*/*
  • पेज 3:- deserts/*/*/*

एक गतिशील सामग्री ...

मेरे तीन ब्लॉक हैं, अर्थात्, बी और सी:

  • ब्लॉक केवल पृष्ठ 1 में प्रदर्शित होना चाहिए
  • ब्लॉक बी को केवल पृष्ठ 2 में प्रदर्शित किया जाना चाहिए
  • ब्लॉक केवल पृष्ठ 3 में प्रदर्शित होना चाहिए

उस प्रतिबंध को कैसे करना चाहिए?


द्रुपाल ६ या 7? 6 ब्लॉक दृश्यता के लिए PHP कोड को परिभाषित करना आसान बनाता है।
मौलॉट

यह Drupal7 मोलोट है
अजमल

2
@ अजमल यह उपयोगी होगा यदि आप दिए गए उत्तरों पर टिप्पणी कर सकते हैं और समझा सकते हैं कि उन्होंने मदद क्यों नहीं की। लोग (स्वाभाविक रूप से) मानते हैं कि उच्च-मतदान का उत्तर सही है, और एक विकल्प प्रदान करने के लिए नहीं जाना है, यदि आपने समझाया नहीं है कि यह उत्तर आपके लिए काम क्यों नहीं करता है।
क्लाइव

मेरे पास वह पृष्ठ है जिसके लिए desert/*/*/ desert/*/editमेरे ब्लॉक को सभी के लिए प्रदर्शित करना चाहिए desert/*/*, desert/*/edit इस तरह के मामले में यह मेरे लिए काम नहीं करता है ..
अजमल

1
शायद यह सिर्फ मुझे है, लेकिन यह भ्रामक लगता है। *वाइल्डकार्ड का मतलब है। तो एक समाधान के लिए पूछ रहा है जहां ब्लॉक का desert/*/*तात्पर्य है कि यह उस मामले के लिए या, के लिए दिखाना चाहिएdesert/*/editdesert/*/whatever
cdmo

जवाबों:


18

संदर्भ मॉड्यूल का उपयोग करें । हालांकि मैं आमतौर पर इस मॉड्यूल का प्रशंसक नहीं हूं, लेकिन यह उन मामलों में से एक है जहां यह काम आता है।

एक पथ के लिए एक शर्त जोड़ें। इसलिए अगर मुझे पेज 1 पर एक ब्लॉक चाहिए, लेकिन पेज 2 या 3 नहीं, तो मैं इस तरह के रास्तों को लिखूंगा, प्रत्येक ब्लॉक के लिए:

केस 1 - ब्लॉक ए

रेगिस्तान / *
~ रेगिस्तान / * / *
~ रेगिस्तान / * / * / *

केस 2 - ब्लॉक बी

~ रेगिस्तान / *
रेगिस्तान / * / *
~ रेगिस्तान / * / * / *

केस 3- ब्लॉक सी

~ रेगिस्तान / *
~ रेगिस्तान / * / *
रेगिस्तान / * / * / *

~ इस मामले में बाहर करने का मतलब है। उसके बाद, ब्लॉक को उस क्षेत्र में जोड़ें जिसे आप दिखाना चाहते हैं। आप विशिष्ट पथों में भी वापस जोड़ सकते हैं जिन्हें अन्यथा बाहर रखा जा सकता है, और इसके विपरीत।


यह इस मामले के लिए अच्छा है। लेकिन हम इसे सभी संभावित परिदृश्यों के लिए ठीक करना चाहते हैं, यह मूल समाधान है, एक ऐसा मामला है जहां यह अच्छा नहीं है। मैंने ऊपर उस मामले को समझाया है। तो कृपया कृपया देखें कि
अजमल

मैंने अपना जवाब अपडेट किया, इसलिए उम्मीद है कि यह इसे बेहतर ढंग से समझाएगा। आप प्रत्येक ब्लॉक के लिए एक नियम बनाएंगे।
14

4

आप "उन पृष्ठों का उपयोग कर सकते हैं जिन पर यह PHP कोड TRUE (केवल विशेषज्ञ)" दृश्यता विकल्प देता है। लेकिन डेटाबेस में PHP कोड डालना, IMHO, एक बुरा अभ्यास है। इसके बजाय, विस्तारित ब्लॉक दृश्यता मॉड्यूल या hook_block_list_alter()इस तरह के कार्यान्वयन जैसे कुछ का उपयोग करने पर विचार करें

function MODULE_block_list_alter(&$blocks) {
  global $theme_key;
  foreach ($blocks as $key => $block) {
    if (!isset($block->theme) || !isset($block->status) || $block->theme != $theme_key || $block->status != 1) {
      // This block was added by a contrib module, leave it in the list.
      continue;
    }
    switch ("{$block->module}_{$block->delta}") {
      case "moduleA_deltaA":
        if (arg(0) != 'deserts' || !arg(1) || arg(2)) {
          unset($blocks[$key]);
        }
        break;
      case "moduleB_deltaB":
        if (arg(0) != 'deserts' || !arg(1) || !arg(2) || arg(3)) {
          unset($blocks[$key]);
        }
        break;
      case "moduleC_deltaC":
        if (arg(0) != 'deserts' || !arg(1) || !arg(2) || !arg(3)) {
          unset($blocks[$key]);
        }
        break;
    }
  }
}

नोट: आपके दृश्यता नियम को लागू करने का एक बेहतर तरीका है।


0

आपको नियम ब्लॉक दृश्यता मॉड्यूल का उपयोग करके काम करने में सक्षम होना चाहिए । यहाँ इसके परियोजना पृष्ठ का एक उद्धरण है:

नियम ब्लॉक दृश्यता मॉड्यूल ब्लॉक दृश्यता को नियंत्रित करने के लिए नियम घटकों का उपयोग करने की अनुमति देता है । यह Drupal प्रशासक और डेवलपर्स को नियंत्रित करने में चरम लचीलापन प्रदान करता है जब Drupal द्वारा प्रदान की गई डिफ़ॉल्ट दृश्यता विकल्पों के अलावा, ब्लॉक को अपनी वेबसाइटों पर प्रदर्शित किया जाना चाहिए।

सामान्य विचार यह है कि यदि आप इसे नियमों के साथ कर सकते हैं, तो आप इसका उपयोग ब्लॉक दृश्यता को नियंत्रित करने के लिए कर सकते हैं, इसलिए संभावनाएं असीम हैं:

  • केवल एक महीने पहले पंजीकृत उपयोगकर्ताओं के लिए एक ब्लॉक दिखाने की आवश्यकता है?

  • शायद आपके पास एक ब्लॉक है जिसे केवल सप्ताह के 8 am-5pm के बीच दिखाया जाना चाहिए?

  • वर्तमान मौसम की स्थिति के आधार पर ब्लॉक को प्रदर्शित करने या छिपाने के बारे में क्या?

यह सब नियम ब्लॉक दृश्यता का उपयोग करके किया जा सकता है।

उस के साथ, और " यदि आप इसे नियमों के साथ कर सकते हैं, तो आप इसे ब्लॉक दृश्यता को नियंत्रित करने के लिए उपयोग कर सकते हैं " के रूप में, आपने अपने पेज 1, पेज 2 और पेज 3 के अनुरूप विभिन्न नियमों को इंटरसेप्ट बनाने के लिए अपने प्रश्न को कम कर दिया है ।

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