2010-04-16 36 views
20

儘管很容易在網上找到關於如何主題化其他內容的信息(例如搜索結果),但是不可能找到關於如何爲分類/術語/頁面輸出提供主題的簡單文章?我如何主題分類/術語/ x頁面?

我該怎麼辦?

回答

1

分類頁面並不神奇,它需要一些特殊的東西來標題。有一個模板文件,一個預處理函數和一些主題函數,就像任何頁面一樣。

如果您想要控制默認分類頁面的輸出有點粗糙,您可以使用視圖來覆蓋默認頁面。然後,您可以使用視圖來僅顯示節點查詢,執行一些自定義排序,使用尋呼機等。

如果您想要做更具體的事情,您應該編輯您的問題以告訴我們您想要做什麼。

12

在Drupal 6中,您可以使用主題中的node-taxonomy.tpl.phppage-taxonomy-term.tpl.php文件模板分類法頁面,因爲第二個文件是第一個文件的包裝。像node.tpl.phppage-taxonomy-term.tpl.php一樣行爲node-taxonomy.tpl.php,如page.tpl.php。例如:

頁面的分類法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> 

嘛,最重要的部分:在默認情況下Drupal並不知道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,關於Drupal的7
這是一個代碼示例,不要」別忘了打印件上使用check_plain() & check_url()

+0

謝謝Sepehr:如果你想讓它更有效地利用

!這有效,但我的所有視圖塊在頁面上得到相同的格式處理...(它們顯示爲節點teasers)有沒有辦法阻止破壞我的意見? – askon 2010-06-20 19:20:47

+0

你真了不起。 – Steve 2013-07-31 04:54:02

1

您更好地使用下面的的template.php

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

代碼,因爲你可以使用的文件名,如節點長期-YOUR-TERM-ID.tpl.php每個術語。

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