Как изменить HTML-код модуля просмотра drupal 5 - PullRequest
1 голос
/ 19 ноября 2008

Я использую Drupal 5 и имею множество представлений, для которых я хочу изменить вывод. Используя мастер представлений, я могу создать разные шаблоны для каждого экземпляра, но я хочу внести одинаковые изменения во все мои представления и иметь 30 файлов в швах каталога тем, как чертовски много обслуживания и кода. Кто-нибудь знает, есть ли способ адресации всех представлений по умолчанию одновременно, а затем использовать то, что у меня есть в настоящее время для одного раза?

Вот что у меня сейчас:

просмотры список-дом _______ _______ статьи latest.tpl.php

<?php 
/**
 * views template to output one 'row' of a view.
 * This code was generated by the views theming wizard
 * Date: November 17, 2008 - 2:07pm
 * View: home_articles_latest
 *
 * Variables available:
 * $view -- the entire view object. Important parts of this object are
 *   home_articles_latest, .
 * $view_type -- The type of the view. Probably 'page' or 'block' but could
 *   also be 'embed' or other string passed in from a custom view creator.
 * $node -- the raw data. This is not a real node object, but will contain
 *   the nid as well as other support fields that might be necessary.
 * $count -- the current row in the view (not TOTAL but for this page) starting
 *   from 0.
 * $stripe -- 'odd' or 'even', alternating. * $title -- Display the title of the node.
 * $title_label -- The assigned label for $title
 * $comment_count -- This will display the comment count.
 * $comment_count_label -- The assigned label for $comment_count
 * $field_abstract_value -- 
 * $field_abstract_value_label -- The assigned label for $field_abstract_value
 *
 * This function goes in your views-list-home_articles_latest.tpl.php file
 */


 //now we add the stylesheet...
 //drupal_add_css(path_to_theme() .'/views-list-home_articles_latest.css');

  ?>
  <?php print $view ?>
<div class="view-label view-field-title">
  <?php print $title_label ?>
</div>
<div class="view-field view-data-title">
  <?php print $title?>
</div>

<?php if ($comment_count != '0' && $view_type == 'block'): ?>
<div class="view-label view-field-comment-count">
  <?php print $comment_count_label ?>
</div>
<div class="view-field view-data-comment-count">
  <?php print $add?><?php print $comment_count?>
</div>
<?php endif; ?>

<?php if ($count == 0): ?>
<div class="view-label view-field-field-abstract-value">
  <?php print $field_abstract_value_label ?>
</div>
<div class="view-field view-data-field-abstract-value">
  <?php print $field_abstract_value?>
</div>
<?php endif; ?>

в template.php

/**
 * views template to output a view.
 * This code was generated by the views theming wizard
 * Date: November 17, 2008 - 2:07pm
 * View: home_articles_latest
 *
 * This function goes in your template.php file
 */
function phptemplate_views_view_list_home_articles_latest($view, $nodes, $type) {
  $fields = _views_get_fields();

  $taken = array();

  // Set up the fields in nicely named chunks.
  foreach ($view->field as $id => $field) {
    $field_name = $field['field'];
    if (isset($taken[$field_name])) {
      $field_name = $field['queryname'];
    }
    $taken[$field_name] = true;
    $field_names[$id] = $field_name;
  }

  // Set up some variables that won't change.
  $base_vars = array(
    'view' => $view,
    'view_type' => $type,
  );

  foreach ($nodes as $i => $node) {
    $vars = $base_vars;
    $vars['node'] = $node;
    $vars['count'] = $i;
    $vars['stripe'] = $i % 2 ? 'even' : 'odd';
    foreach ($view->field as $id => $field) {
      $name = $field_names[$id];
      $vars[$name] = views_theme_field('views_handle_field', $field['queryname'], $fields, $field, $node, $view);
      if (isset($field['label'])) {
        $vars[$name . '_label'] = $field['label'];
      }
    }
    $items[] = _phptemplate_callback('views-list-home_articles_latest', $vars);
  }
  if ($items) {
    return theme('item_list', $items);
  }
}

Спасибо,
Стив

Ответы [ 3 ]

2 голосов
/ 25 ноября 2008

I думаю простое создание файла с именем "views-list.tpl.php" будет применяться ко всем представлениям в стиле List (если только не присутствует более конкретный файл .tpl.php).

В противном случае может быть способ получить то, что вы хотите, используя функции темы.

0 голосов
/ 01 марта 2009

В Представлениях 5 модули не могут предоставлять файлы tpl по умолчанию, поэтому имя шаблона вам не поможет. Ключ - это функция, которая помещается в ваш файл template.php, "phptemplate_views_view_list_home_articles_latest". Это функция PHP, перехватывающая рендеринг любого представления списка с именем «home_articles_latest». Если вы хотите, чтобы он перехватывал ВСЕ представления, вы просто изменили бы название самой функции на: "phptemplate_views_view"

Имейте в виду, что это повлияет на все - блоки боковой панели создаются с представлениями, RSS-лентами и т. Д.

0 голосов
/ 19 ноября 2008

Я считаю, что каждый шаблон нужно будет обновлять независимо, если вы говорите о чем-то, что происходит внутри шаблона представления. Я не знаю, как обновить только одну небольшую часть n представлений.

Если у вас есть заголовок, который вы помещаете над шаблоном для каждого представления, вы можете сделать это с помощью вспомогательной функции в template.php или условного в node.tpl.php. Но если это еще дальше, я думаю, тебе не повезло.

...