it-swarm.com.ru

Как я могу тему таксономии / термин / х страница?

Несмотря на то, что было легко найти некоторую информацию в Интернете о том, как тематизировать другие элементы (например, результаты поиска), невозможно найти простую статью о том, как оформить тему вывода страницы таксономии/term/247?

Как мне это сделать?

20
Dan Albey

В Drupal 6 вы можете использовать файлы node-taxonomy.tpl.php и page-taxonomy-term.tpl.php в своей теме для шаблонирования страниц таксономии, учитывая, что второй является оберткой для первых. Вести себя node-taxonomy.tpl.php как node.tpl.php и page-taxonomy-term.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>

Ну, самая важная часть: по умолчанию 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);
  }
}

Также есть taxonomy-term.tpl.php относительно Drupal 7.
Это пример кода, не забудьте использовать 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