प्रोग्राम को दृश्य मोड कैसे बदलें?


11

मैं नोड के दृश्य मोड को प्रोग्रामेटिक रूप से बदलना चाहता हूं। मैंने hook_preprocess_node(&$vars)दृश्य मोड का उपयोग और सेट किया है:

function moduleName_preprocess_node(&$vars) {
      // if conditions to apply particular view mode
      $vars['view_mode'] = 'teaser';
      $vars['elements']['#view_mode'] = 'teaser';
}

लेकिन यह अपेक्षा के अनुरूप काम नहीं कर रहा है। क्या मुझसे कोई चूक हो रही है?


क्या आपने इसकी समीक्षा करने की कोशिश की? drupal.org/node/1334206
chrisjlee 19

जवाबों:


13

प्रीप्रोसेस फंक्शन में व्यू मोड को बदलना बहुत देर से कर रहा है।
दृश्य मॉड्यूल को बदलने का सही तरीका हुक_एंटिटी_व्यू_मोड_अल्टर () को लागू कर रहा है , जिसे इकाई सामग्री प्रदान करने से पहले कहा जाता है। उदाहरण के लिए, नोड_व्यू () में , उस हुक को नोड_बिल्ट / कॉन्टेंट () से मंगाया जाता है , जिसे पहले फ़ंक्शन कहा जाता है node_view()

  if (!isset($langcode)) {
    $langcode = $GLOBALS['language_content']->language;
  }

  // Populate $node->content with a render() array.
  node_build_content($node, $view_mode, $langcode);

4
धन्यवाद। कृपया ध्यान दें कि इस हुक के लिए drupal> = 7.17
cissharp

6

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


धन्यवाद। लेकिन मेरा परिदृश्य अलग है। मैं एक ही सामग्री प्रकार के साथ नोड्स के लिए अलग-अलग दृश्य मोड का उपयोग करना चाहता हूं। मैं नोड में उपयोग किए गए टैक्सोनॉमी पर व्यू मोड को बदलना चाहता हूं। मेरा मतलब है कि नोड्स में समान URL पैटर्न होंगे।
cissharp
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.