विशेष कस्टम सामग्री प्रकार प्रविष्टि के लिए उम्मीदवार पृष्ठ टेम्पलेट फ़ाइल नाम


11

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

इसलिए मैंने थीम डेवलपर मॉड्यूल को सक्रिय और खोला, और इस विशेष सामग्री प्रकार पृष्ठ प्रविष्टि के लिए उम्मीदवार का नाम पाने के लिए निकाय क्षेत्र पर क्लिक किया। और यह मुझे नीचे स्क्रीन देता है जिसका मेरे लिए कोई मतलब नहीं है: / जब मैं नोड क्षेत्र पर क्लिक करता हूं, तो यह ठीक है, यह नोड - work.tpl.php देता है, लेकिन मुझे पृष्ठ की आवश्यकता है। मैंने "पृष्ठ - work.tpl.php" की कोशिश की, यह काम नहीं किया।

मुझे किसकी याद आ रही है?

यहाँ छवि विवरण दर्ज करें

जवाबों:


12
function mytheme_process_page(&$variables) {
    $variables['theme_hook_suggestions'][] = 'page__'. $variables['node']->type;
}

अपने मशीन-पठनीय सामग्री प्रकार नाम को "कार्य" मानकर, पृष्ठ - work.tpl.php काम करेगा।

अधिक जानकारी के लिए इस धागे का संदर्भ लें ।


वाह! यह बहुत अच्छा काम किया! मैं पृष्ठ को संबोधित कर सकता हूं - work.tpl.php अब :) हालांकि यह ठीक काम करता है, मेरे पास d.pr/EaMa जैसा एक त्रुटि संदेश है और मैंने हल किया और अभी भी कोशिश कर रहा है ... कोई विचार? अपने व़क्त के लिए बहुत - बहुत शुक्रिया!!
द्रुपाल पुरुष

ओह, मुझे लगता है कि यह थीम डेवलपर मॉड्यूल के कारण था। मैं मॉड्यूल को अक्षम करता हूं और त्रुटि हो गई है :) बहुत बहुत धन्यवाद!
द्रुपाल पुरुष

2

Template.php में जोड़ें:

function themeName_preprocess_page(&$vars) {
  if (isset($vars['node'])) {
    // If the node type is "blog" the template suggestion will be "page--blog.tpl.php".
    $vars['theme_hook_suggestions'][] = 'page__'. str_replace('_', '--',    $vars['node']->type);
  }
}

तुम चूक सकते हो str_replace(); परीक्षण करें कि कौन सा संस्करण आपके लिए सबसे अच्छा काम करता है।

फिर, एक टेम्प्लेट फ़ाइल बनाएँ जिसका फ़ाइल नाम पृष्ठ है- [content_type] .tpl.php। (सामग्री प्रकार मशीन के नाम के साथ [content_type] बदलें।)

Http://drupal.org/node/1089656#comment-4426790 देखें ।


1

यदि आप नोड आईडी भी चाहते हैं, तो इसका उपयोग करें।

function mytheme_process_page(&$variables) {
  if (isset($variables['node'])) { 
    $variables['theme_hook_suggestions'][] = 'page__type__'. $variables['node']->type;
    $variables['theme_hook_suggestions'][] = 'page__node__' . $variables['node']->nid;
  }
}

0

प्रत्येक सामग्री प्रकार के लिए अलग टेम्प्लेट होने के कारण द्रुपाल के लोगों के अनुसार एक अच्छा अभ्यास नहीं है। यही कारण है कि आपको page--work.tpl.phpउम्मीदवार टेम्पलेट फ़ाइल सूची में नहीं मिलता है। उन्हें लगता है कि केवल नोड टेम्पलेट फाइलें अलग होनी चाहिए। हालाँकि अगर आप हैक करना चाहते हैं, तो आगे बढ़ें।

सामग्री प्रकार के आधार पर पथ सेट करने के लिए पथ उपनाम का उपयोग करें। और फिर इस कोड को डालें

 if (module_exists('path')) {
    $alias = drupal_get_path_alias(str_replace('/edit','',$_GET['q']));
    if ($alias != $_GET['q']) {
      $template_filename = 'page';
      foreach (explode('/', $alias) as $path_part) {
        $template_filename = $template_filename . '-' . $path_part;
        $vars['template_files'][] = $template_filename;
      }
    }
  }

में phptemplate_preprocess_page(&$vars)में समारोह template.phpविषय फ़ोल्डर में।

यद्यपि आप इसे अधिक कुशल बनाने के लिए कोड को थोड़ा संशोधित कर सकते हैं।

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