विशेष दृश्य मोड के लिए टेम्पलेट कैसे प्रदान करें?


46

मैं टेम्पलेट के साथ खोज परिणाम दृश्य मोड को थीम करना चाहता हूं।

मेरे सिर में यह था कि एक टेम्पलेट फ़ाइल नोड का नामकरण - लेख - खोज-result.tpl.php चाल करेगा, लेकिन मैं स्पष्ट रूप से इसके बारे में गलत हूं।

मुझे लगता है कि मैं नोड कर सकता हूं - Article.tpl.php और इस चेक के भीतर $ view_mode, लेकिन यह अन्य सभी दृश्य मोड के साथ अजीब है जिन्हें मैं टेम्पलेट नहीं करना चाहता।

विचार?

जवाबों:


45

नोड प्रीप्रोसेस फंक्शन में थीम हुक सुझाव जोड़ना ट्रिक करना चाहिए:

function MYMODULE_preprocess_node(&$vars) {
  if ($vars['node']->type == 'article' && $vars['view_mode'] == 'search_result') {
    $vars['theme_hook_suggestions'][] = 'node__article__search_result';
  }
}

कैश साफ़ करने के बाद आपको अपने टेम्पलेट फ़ाइल नाम के लिए नोड - लेख - खोज-result.tpl.php का उपयोग करने में सक्षम होना चाहिए।

एनबी। MYTHEME_preprocess_node()इसके बजाय आप फ़ंक्शन को कॉल करके अपने थीम के टेम्पलेट.php फ़ाइल में भी ऐसा कर सकते हैं ।


2
प्रतिभाशाली! धन्यवाद। बस यहाँ एक ही सलाह के लिए एक कड़ी जोड़ने के बारे में था: mearra.com/blogs/juha-niemi/drupal-7-custom-node-view-modes
artfulrobot

1
कोई समस्या नहीं है :) बस FYI करें, search_resultपहले से ही ऐसा आप को लागू करने की जरूरत नहीं है एक दृश्य मोड के रूप में घोषित किया जाता है hook_entity_info_alter()आपके मामले में
क्लाइव

3

इकाई दृश्य मोड मॉड्यूल इन टेम्पलेट सुझाव जोड़ता है

Drupal 7 उत्तराधिकारी टू मोड मोड जो प्रशासकों को संस्थाओं के लिए कस्टम व्यू मोड परिभाषित करने की अनुमति देगा। कस्टम इकाइयां हुक_ेंटिटी_info_alter () के माध्यम से इकाई रजिस्ट्री में जोड़ी जाती हैं, इसलिए वे किसी भी कोड के लिए उपलब्ध होते हैं जो एक इकाई के लिए व्यू मोड की सूची प्रदान करने के लिए unit_get_info () का उपयोग करता है। इसमें नोड और उपयोगकर्ता संदर्भ फ़ील्ड, दृश्य आदि शामिल हैं।


2

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

फिर drush cache-clear theme-registryइसे काम करने के लिए कॉल करें ।

अपने विषय के नाम के साथ इसे बदलने के लिए उपयोग करने के लिए, और इसे अपने विषयों में रखें। फ़ाइल।

उदा। Droid नामक थीम के लिए आप इसे कॉल करेंगे droid_preprocess_node(&$variables, $hook) {...

function THEME_preprocess_node(&$variables, $hook) {
  $view_mode = $variables['view_mode'];
  $content_type = $variables['type'];
  $variables['theme_hook_suggestions'][] = 'node__' . $view_mode;
  $variables['theme_hook_suggestions'][] = 'node__' . $view_mode . '_' . $content_type;

  $view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode . '_' . $content_type;
  if (function_exists($view_mode_preprocess)) {
    $view_mode_preprocess($variables, $hook);
  }

  $view_mode_preprocess = 'THEME_preprocess_node_' . $view_mode;
  if (function_exists($view_mode_preprocess)) {
    $view_mode_preprocess($variables, $hook);
  }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.