2010-04-16 7 views

Trả lời

1

Trang phân loại không phải là ma thuật trong bất kỳ điều gì mà nó đòi hỏi một cái gì đó đặc biệt để tạo chủ đề cho nó. Có một tệp mẫu, một hàm tiền xử lý và một số hàm làm việc, giống như bất kỳ trang nào.

Nếu bạn muốn kiểm soát đầu ra của trang phân loại mặc định có chút thô, bạn có thể sử dụng chế độ xem để ghi đè trang mặc định. Sau đó, bạn có thể sử dụng chế độ xem để chỉ hiển thị quảng cáo xem trước nút, thực hiện một số thứ tự tùy chỉnh, sử dụng máy nhắn tin, v.v.

Nếu bạn muốn làm điều gì đó cụ thể hơn, bạn nên chỉnh sửa câu hỏi của mình để cho chúng tôi biết bạn muốn làm gì.

12

Trong Drupal 6, bạn có thể sử dụng các tệp node-taxonomy.tpl.phppage-taxonomy-term.tpl.php trong chủ đề của mình để các trang phân loại mẫu xem xét trang thứ hai là trình bao bọc đầu tiên. Hành vi node-taxonomy.tpl.php như node.tpl.phppage-taxonomy-term.tpl.php như page.tpl.php. ví dụ:

trang-phân loại-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'; ?> 

nút-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> 

Vâng, phần quan trọng nhất: Theo mặc định các node-taxonomy.tpl.php không được biết đến với Drupal, vì vậy chúng tôi cần giới thiệu đây là một đề xuất mẫu trong tệp template.php của chủ đề của chúng tôi, ở đây chúng tôi đi:

/** 
* 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); 
    } 
} 

Cũng có một taxonomy-term.tpl.php, liên quan đến Drupal 7.
Đó là một mẫu mã, không' quên sử dụng check_plain() & check_url() trên bản in.

+0

Cảm ơn Sepehr! Điều này làm việc, nhưng tất cả các lượt xem của tôi chặn trên trang có được cùng một định dạng xử lý ... (chúng được hiển thị như là trêu ghẹo nút) Có cách nào ngăn chặn việc phá hủy các quan điểm của tôi không? – askon

+0

Bạn thật tuyệt vời. – Steve

1

Bạn sử dụng tốt hơn sau mã trong template.php

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

Bởi vì bạn có thể sử dụng tên tập tin như nút hạn-BẠN HẠN-ID.tpl.php cho mỗi học kỳ.

nếu bạn muốn làm cho nó sử dụng hiệu quả hơn:

if ($hook == 'node') { 
     if (arg(0) == 'taxonomy') { 
     foreach ($vars['node']->taxonomy as $term) { 
     $vars['template_files'][] = 'node-term-'. $term->tid; 
     } 
    } 
    } //if bracket close