2010-04-16 24 views
20

हालांकि थीम के अन्य सामान (उदाहरण के लिए खोज परिणाम) के बारे में कुछ जानकारी ऑनलाइन ढूंढना आसान था, लेकिन वर्गीकरण/अवधि/247 पृष्ठ के आउटपुट को थीम के विषय में एक सरल लेख ढूंढना असंभव है?मैं वर्गीकरण/शब्द/एक्स पृष्ठ कैसे थीम कर सकता हूं?

मैं यह कैसे कर सकता हूं?

उत्तर

1

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

यदि आप डिफ़ॉल्ट वर्गीकरण पृष्ठ के आउटपुट को नियंत्रित करना चाहते हैं जो थोड़ा कच्चा है, तो आप डिफ़ॉल्ट पृष्ठ को ओवरराइट करने के लिए विचारों का उपयोग कर सकते हैं। इसके बाद आप केवल नोड टीज़र दिखाने के लिए विचारों का उपयोग कर सकते हैं, कुछ कस्टम ऑर्डरिंग कर सकते हैं, पेजर इत्यादि का उपयोग कर सकते हैं

यदि आप कुछ और विशिष्ट करना चाहते हैं तो आपको यह बताने के लिए अपना प्रश्न संपादित करना चाहिए कि आप क्या करना चाहते हैं।

12

ड्रूपल 6 में, आप टेम्पलेट वर्गीकरण पृष्ठों पर अपनी थीम में node-taxonomy.tpl.php और page-taxonomy-term.tpl.php फ़ाइलों का उपयोग कर सकते हैं क्योंकि दूसरा व्यक्ति पहले के लिए रैपर है। node-taxonomy.tpl.phpnode.tpl.php और page-taxonomy-term.tpl.php जैसे page.tpl.php जैसे Behave। उदाहरण के लिए:

पेज-वर्गीकरण विज्ञान term.tpl.php

<?php require 'header.tpl.php'; ?> 
    <body class="<?php echo $body_classes; ?>"> 
     <div id="page"> 
      <?php require 'page-navigation.tpl.php'; ?> 
      <div id="main"> 
     <h2>Taxonomy term page</h2> 
     <div class="taxonomy-content"> 
      <?php if ($tabs): echo '<div id="tabs-wrapper" class="clear-block">'; endif; ?> 
      <?php if ($title && !$node): echo '<h2'. ($tabs ? ' class="with-tabs"' : '') .'>'. $title .'</h2>'; endif; ?> 
      <?php if ($tabs): echo '<ul class="tabs primary">'. $tabs .'</ul></div>'; endif; ?> 
      <?php if ($tabs2): echo '<ul class="tabs secondary">'. $tabs2 .'</ul>'; endif; ?> 
      <?php if ($show_messages && $messages){ echo $messages; } ?> 
      <?php echo $help; ?> 
      <?php echo $content; // contains the output of node-taxonomy.php, that's why I call this wrapper template file. ?> 
     </div> <!-- #taxonomy-content -->     
      </div> <!-- #main -->   
     </div> <!-- #page --> 
     <?php echo $closure; ?> 
    </body> 
<?php require 'page-footer.tpl.php'; ?> 

नोड taxonomy.tpl.php

<div id="node-<?php echo $node->nid; ?>" class="node<?php if($sticky) echo ' sticky'; ?><?php if(!$status) echo ' node-unpublished'; ?>"> 
    <div class="taxonomy-node"> 
     <div class="node-body"> 
     <a class="node-title" href="<?php echo $node_url ?>" title="<?php echo $title ?>"> 
      <?php echo $title ?> 
     </a> 
     <span class="node-cck-field"> 
      <?php echo $node->field_cck_blah[0]['view']; ?> 
     </span>        
     </div>     
    </div> 
</div> 

खैर, सबसे महत्वपूर्ण हिस्सा: डिफ़ॉल्ट रूप से node-taxonomy.tpl.php ड्रूपल को ज्ञात नहीं है, इसलिए हमें इसे टेम्पलेट सुझाव के रूप में हमारे विषय की template.php फ़ाइल में पेश करने की आवश्यकता है, ये हम चले:

/** 
* Adding custom PHPTemplate suggestions on taxanomy pages. 
* 
* @param $vars 
* A sequential array of variables to pass to theme template. 
*/ 
function phptemplate_preprocess_node(&$vars) { 
    if(arg(0) == 'taxonomy'){ 
    $suggestions = array('node-taxonomy'); 
    $vars['template_files'] = array_merge($vars['template_files'], $suggestions); 
    } 
} 

इसके अलावा वहाँ एक taxonomy-term.tpl.php ड्रुपल 7
के बारे में यह एक कोड नमूना है, न 'प्रिंटआउट पर check_plain() & check_url() उपयोग करने के लिए भूल जाते हैं।

+0

धन्यवाद Sepehr! यह काम करता है, लेकिन पृष्ठ पर मेरे सभी दृश्य ब्लॉक समान प्रारूपण उपचार प्राप्त करते हैं ... (वे नोड टीज़र के रूप में प्रदर्शित होते हैं) क्या मेरे विचारों को नष्ट करने से कोई रास्ता बंद है? – askon

+0

आप अद्भुत हैं। – Steve

1

आप क्योंकि आप प्रत्येक शब्द के लिए इस तरह के नोड अवधि-your-सावधि-ID.tpl.php के रूप में फ़ाइल नाम का उपयोग कर सकते template.php

foreach ($vars['node']->taxonomy as $term) { 
    $vars['template_files'][] = 'node-term-'. $term->tid; 
    } 

में कोड निम्नलिखित बेहतर उपयोग।

आप इसे और अधिक कुशल उपयोग करना चाहते हैं:

if ($hook == 'node') { 
     if (arg(0) == 'taxonomy') { 
     foreach ($vars['node']->taxonomy as $term) { 
     $vars['template_files'][] = 'node-term-'. $term->tid; 
     } 
    } 
    } //if bracket close 
संबंधित मुद्दे