web-dev-qa-db-ja.com

タクソノミー/用語/ xページにテーマを設定するにはどうすればよいですか?

他のもの(検索結果など)にテーマを設定する方法に関する情報をオンラインで見つけるのは簡単でしたが、分類法/用語/ 247ページの出力にテーマを設定する方法についての簡単な記事を見つけることは不可能ですか?

どうすればいいですか?

20
Dan Albey

Drupal 6)では、テーマの_node-taxonomy.tpl.php_ファイルと_page-taxonomy-term.tpl.php_ファイルを使用して、2番目のファイルが最初のラッパーであることを考慮して分類ページをテンプレート化できます。 _node-taxonomy.tpl.php_のように_node.tpl.php_および_page-taxonomy-term.tpl.php_のように_page.tpl.php_。例:

page-taxonomy-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'; ?>
_

node-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_はDrupalに知られていないので、これをテンプレート提案として導入する必要がありますテーマの_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);
  }
}
_

また、Drupal 7に関して、 _taxonomy-term.tpl.php_ があります。
これはコードサンプルです。プリントアウトでcheck_plain()check_url()を使用することを忘れないでください。

12
sepehr

分類法のページは、テーマを設定するために特別な何かを必要とするという点で魔法ではありません。他のページと同じように、テンプレートファイル、前処理関数、およびいくつかのテーマ関数があります。

少し生のデフォルトの分類ページの出力を制御したい場合は、ビューを使用してデフォルトのページを上書きできます。次に、ビューを使用して、ノードティーザーのみを表示したり、カスタムオーダーを実行したり、ポケットベルを使用したりできます。

より具体的なことをしたい場合は、質問を編集して、やりたいことを教えてください。

1
googletorp

Template.phpで次のコードを使用することをお勧めします

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

用語ごとにnode-term-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
1
user1438910