it-swarm-vi.com

Hiển thị danh sách các thuật ngữ phân loại được phân tách bằng dấu phẩy?

Drupal 7.

Trong node.tpl.php của tôi, tôi muốn in ra một danh sách các thuật ngữ phân loại (phân loại được gọi là "kênh."). Nếu tôi sử dụng:

<?php print render($content['field_channel']); ?>

Nó hoạt động, rõ ràng, nhưng điều tốt nhất tôi có thể làm để đưa chúng vào dòng là sử dụng CSS để thả chúng sang trái. Tôi muốn chúng được phân tách bằng dấu phẩy. Có ý kiến ​​gì không?

Cám ơn.

10
Mike

Bạn có thể thử theo chủ đề trường bằng cách sử dụng field.tpl.php hoặc theme_field() .

Ví dụ: sử dụng field.tpl.php):

  1. Sao chép field.tpl.php Vào thư mục chủ đề của bạn từ "mô-đun/trường/chủ đề"
  2. Tạo một bản sao của tệp đó và đổi tên thành field--field-channel.tpl.php
  3. Chỉnh sửa tập tin theo cách bạn muốn.

Là một ví dụ nhanh/bẩn để làm việc này, field--field-channel.tpl.php Có thể trông như sau:

<div class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
  <?php if (!$label_hidden) : ?>
    <div class="field-label"<?php print $title_attributes; ?>><?php print $label ?>:&nbsp;</div>
  <?php endif; ?>
  <div class="field-items"<?php print $content_attributes; ?>>
    <?php foreach ($items as $delta => $item) : ?>
      <div style="display:inline;" class="field-item <?php print $delta % 2 ? 'odd' : 'even'; ?>"<?php print $item_attributes[$delta]; ?>>
        <?php 
          print render($item);
          // Add comma if not last item
          if ($delta < (count($items) - 1)) {
            print ','; 
          }
        ?>
      </div>
    <?php endforeach; ?>
  </div>
</div>

Có thể có nhiều cách để thực hiện điều này bằng cách sử dụng tệp .tpl, nhưng đây chỉ là một tùy chọn. Tôi khuyên bạn nên thêm một lớp vào DIV thay vì một kiểu và thực hiện các thay đổi trong biểu định kiểu của bạn thay vì sử dụng các kiểu nội tuyến.

11
Laxman13

Mô-đun Trình định dạng văn bản hiện có sẵn cho Drupal 7 và cho phép bạn thực hiện việc này mà không cần làm việc theo chủ đề tùy chỉnh.

11
jhedstrom

Đây là một cách để sử dụng phương pháp theme_field (thêm nó vào tệp template.php):

/**
 * Implements theme_field()
 *
 * Make field items a comma separated unordered list
 */
function THEMENAME_field__NAME_OF_FIELD__NAME_OF_CONTENT_TYPE($variables) {
  $output = '';

  // Render the label, if it's not hidden.
  if (!$variables['label_hidden']) {
    $output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . ':&nbsp;</div>';
  }

  // Render the items as a comma separated inline list
  $output .= '<ul class="field-items"' . $variables['content_attributes'] . '>';
  for ($i=0; $i < count($variables['items']); $i++) {
    $output .= '<li>'. drupal_render($variables['items'][$i]);
    $output .= ($i == count($variables['items'])-1) ? '</li>' : ', </li>';
  }
  $output .= '</ul>';

  return $output;
}
7
cdmo

Bạn có thể làm điều này dễ dàng chỉ bằng CSS:

[.__.]. trường loại-phân loại-thuật ngữ-tham chiếu .field-items .field-item {[.__.] display: inline-block; [.__.] * display: inline; [.__.] * zoom: 1; [.__.]} [.__.]. trường loại-phân loại-thuật ngữ-tham chiếu .field-items .field-item: sau {[.__.] nội dung: ","; 
} [.__.]. trường loại-phân loại-thuật ngữ-tham chiếu .field-items .field-item: last-child: after {[.__.] nội dung: ""; [.__.]} [.__.]
4
Steven Wright
2
ipwa
<?php
if ($node->taxonomy) {
    foreach($node->taxonomy as $term) {
        if ($term->vid == 3) { // the id of the vocabulary
            $my_terms[] = l(
                t($term->name),
                'taxonomy/term/' . $term->tid
            );
        }
    }
}

if ($my_terms) { ?>
    <div class="clear-block">
        <div class="terms">
            <?php print implode(", ", $my_terms); ?>
        </div>
    </div>
<?php } ?>
0
brunorios1

Thậm chí dễ dàng hơn cho dấu phân cách và trình bao bọc, bạn sử dụng mô đun Phân loại biểu mẫu phân loại: http://drupal.org/project/taxonomy_formatter

Thêm chi tiết từ trang dự án:

Đây là một mô-đun nhỏ được viết để cung cấp một định dạng tùy chỉnh cho các mục phân loại. Các trình định dạng mặc định cả hai đều xuất các thuật ngữ được gói trong div. Mô-đun này thêm một trình định dạng mới cho phép bạn chỉ định loại phần tử, loại trình bao bọc, các lớp cho cả hai, dấu phân cách được sử dụng và nếu chúng có liên kết đến các trang thuật ngữ hay không. Điều này cho phép tùy chọn bố trí tùy biến hơn nhiều.

0
Greta