सामग्री क्षेत्रों को अलग-अलग क्षेत्रों में विभाजित करना


11

मेरी स्थिति इस प्रकार है: मेरे पास ए, बी, और सी के साथ एक सामग्री प्रकार सेमिनार है। मेरे पास हेडर, फुटर, कंटेंट और साइडबार लेफ्ट हैं। संगोष्ठी में कुछ क्षेत्र हैं जिन्हें मैं सामग्री क्षेत्र में प्रदर्शित करना चाहता हूं, लेकिन साइडबार वाम क्षेत्र में भी।

मैं यह कार्य कैसे करूं? माफी अगर यह पहले ही जवाब दिया जा चुका है। मैं एक डेवलपर हूं और हुक और प्रीप्रोसेसर कार्यों में गोता लगाने में संकोच नहीं कर रहा हूं। मेरे पास व्यू मॉड्यूल स्थापित है, लेकिन इसका उपयोग कभी नहीं किया है (यह मेरी पहली Drupal साइट है, यदि आप नहीं बता सकते हैं: P)।

चीयर्स।

EDIT: यह Drupal 7 के लिए है


Drupal का कौन सा संस्करण?
केवड़ा

क्षमा करें, यह Drupal 7 के लिए है। मैंने उस जानकारी को अपने मूल प्रश्न में जोड़ दिया है।
लेस्टर पीबॉडी

जैसे ही मैं समस्या का समाधान करूंगा, मैं एक उत्तर स्वीकार कर लूंगा। मैं वर्तमान में पता लगा रहा हूं कि सामग्री को प्रदर्शित करने के लिए अपने सुझावों को उचित तरीके से कैसे सेट किया जाए ...
लेस्टर पीबॉडी

जवाबों:


11

पृष्ठ पर विभिन्न क्षेत्रों के लिए नोड की सामग्री को जोड़ने के लिए बॉक्स से बाहर कोई आसान तरीका नहीं है। इस समस्या से निपटने के कई तरीके हैं।

गैर-कोडिंग तरीका: दृश्य और ब्लॉक

एक दृश्य बनाएँ

  • प्रकार: ब्लॉक
  • प्रासंगिक फ़िल्टर: सामग्री: एनआईडी
    • डिफ़ॉल्ट मान: वर्तमान पृष्ठ से पकड़ो
  • फ़ील्ड्स: जो भी आप चाहते हैं
  • फिल्टर:
    • सामग्री प्रकार: संगोष्ठी

(प्लस जो भी अतिरिक्त सेटिंग्स आप चाहते हैं)

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

सभी क्षेत्रों के लिए दोहराएं

Theme_preprocess_region () के साथ कोडिंग का तरीका:

कोड कुछ इस तरह दिखेगा

MYTHEME_preprocess_region(&$variables) {
  if (isset($node) && ($node->type == 'seminar' )) {
     //add new variable here.     
  }
}

यह केवल ड्रुपल 7 के लिए है। अब अपने क्षेत्र में इसकी avaiable.pl.php।


1
विचार / ब्लॉक दृष्टिकोण वास्तव में वह है जिसे मैं पसंद करता हूं, लेकिन सुझाए गए डिस्प्ले सूट के बाद से कुछ इसे और अधिक अनुमानित लगता है।
जेदस्ट्रॉम

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

तरह-तरह के पागल, जो मैंने लगभग एक महीने में पूछा, जवाब स्वीकार कर लिया, लेकिन अभी इस जवाब के आवेदन के लिए मिल रहा हूं (हालांकि मैंने एक टन के बाद से दृश्य का उपयोग किया है)। क्या आप Drupal 7 के लिए अपने दृश्य के उपयोग को थोड़ा स्पष्ट कर सकते हैं? ऐसा प्रतीत होता है कि तर्क: द्रुपाल के लिए दृश्य 3 में nid मौजूद नहीं है। धन्यवाद।
लेस्टर पेबॉडी

मैं यह समझ गया। तर्क की धारणा को उन्नत के तहत प्रासंगिक फिल्टर द्वारा प्रतिस्थापित किया गया है।
लेस्टर पीबॉडी

डी 7, प्रासंगिक फ़िटर: सामग्री: एनआईडी। संपादित करें: इससे पहले कि मैं जवाब दे सकता था, आप इसे देख सकते हैं
iStryker

7

प्रदर्शन सुइट मॉड्यूल आपको ऐसा करने की अनुमति देता है। नोड घटकों के लिए लक्ष्य के रूप में विषय क्षेत्रों को उजागर करने के लिए आपको प्रदर्शन सूट एक्स्ट्रा मॉड्यूल को सक्षम करने की आवश्यकता होगी। यह कैसे करें के बारे में जानकारी प्रदर्शन सूट प्रलेखन के ब्लॉक पेज में फ़ील्ड में मिल सकती है


5

मुझे भी यही समस्या हुई है। समाधान काफी आसान है। आप इस तथ्य को आधार बना सकते हैं कि Drupal 7 में हम अपने स्वयं के view_mode को परिभाषित कर सकते हैं, न केवल FULL और TEASER (जैसा कि हम सबसे पुराने संस्करणों से जानते हैं)। इसलिए, अपने क्षेत्र में उपयोग करने के लिए एक और view_mode परिभाषित करें: जैसे LEFTHAND। Drupal सामग्री क्षेत्र में FULL view_mode प्रदर्शित करता है। इसलिए, आपको साइडबार वाम क्षेत्र में LEFTHAND प्रदर्शित करने के लिए Drupal से कहना होगा।

  1. Template_preprocess_page () में

    if ($vars['node']) {
    $vars['page']['sidebar_left'][] = node_view($vars['node'], 'lefthand');
    }

  2. नोड में। लेफ्टहैंड व्यू मोड के लिए नया डिस्प्ले जोड़ें

    if ($view_mode == 'lefthand') {
    // render content fields here
    }


1
यह उत्तर सुपर-अल्ट्रा-चतुर है, और दृश्य मोड को परिभाषित करने के अलावा किसी भी बाहरी मॉड्यूल की आवश्यकता नहीं है। प्रदर्शन सूट के लिए सरल विकल्प इकाई दृश्य मोड है: drupal.org/project/entity_view_mode
paul-m

मैंने वास्तव में इसे पसंद किया। इसे एक फ़ंक्शन में लपेटें केवल कुछ पृष्ठों पर दिखाई देने के लिए। मैं if (array_key_exists('block_14',$vars['page']['main_content'])){}इसे केवल विशिष्ट ब्लॉक वाले पृष्ठों पर प्रदर्शित करने के लिए उपयोग करता था।
डोमिनिक वुडमैन

3

यदि डिस्प्ले सूट आपकी ज़रूरतों के लिए बहुत अधिक लगता है (यह एक महान मॉड्यूल है, लेकिन यह ओवरकिल हो सकता है यदि आपको बस कुछ क्षेत्रों को स्थानांतरित करने की आवश्यकता है) केवल इस उद्देश्य के लिए एक मॉड्यूल है -> CCK ब्लॉक

मुझे पता है कि इसे 'CCK' ब्लॉक कहा जाता है, लेकिन यह Drupal 7 के साथ काम करता है (जो मूल में CCK की कार्यक्षमता लाया है)।


1

@Patrik Lucan के उत्तर में थोड़ा बदलाव, if ($vars['node'])मुझे उन पृष्ठों पर समस्या पैदा कर रहा था , जो नोड नहीं थे, जैसे ब्लॉक या व्यू पेज के साथ कस्टम फ्रंट पेज।

में परिवर्तित किया गया:

if (array_key_exists('node', $vars))

जिससे लगता है कि समस्या हल हो गई है।


0

इस बीच इसके लिए एक मॉड्यूल है। मॉड्यूल पृष्ठ से:

ब्लॉक के रूप में फ़ील्ड एक ब्लॉक में वर्तमान नोड के एक या अधिक फ़ील्ड प्रदर्शित करने का एक आसान तरीका प्रदान करता है।

इस मॉड्यूल का उद्देश्य पैनल्स और डिस्प्ले सूट जैसे मॉड्यूल के लिए एक हल्के वजन का विकल्प होना है, या केवल एक क्षेत्र को पुनः प्राप्त करने वाले ब्लॉक को परिभाषित करने के लिए व्यू का उपयोग करना है।

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