在drupal中打印字段

时间:2011-09-12 22:37:31

标签: php drupal-7 field drupal-field-api

我正在尝试让Drupal在同一个数组中打印一个包含两个不同字段的列表。首先是字段A,然后是字段B,它以这种方式打印,直到打印整个数组。

我想要得到的结果就像是

<tr>
  <td>Field_1[value1]</td>
  <td>Field_2[value1]</td>
</tr><tr>
  <td>Field_1[**value'n'**]</td>
  <td>Field_2[**value'n'**]</td>
</tr>

直到打印完所有值。

EDIT。 想出了一种直接在节点中实现这一点的方法 - testnode.tpl.php。

<table>
<?php if ($content['field_test'][1]): ?>
        <tr><td><?php print render($content['field_test'][0])?></td><td><?php print render($content['field_test'][1])?></td></tr>
      <?php endif; ?>
<?php if ($content['field_test'][3]): ?>
        <tr><td><?php print render($content['field_test'][2])?></td><td><?php print render($content['field_test'][3])?></td></tr>
      <?php endif; ?>     
<?php if ($content['field_test'][5]): ?>
        <tr><td><?php print render($content['field_test'][4])?></td><td><?php print render($content['field_test'][5])?></td></tr>
      <?php endif; ?>   
</table>

第二个问题,只有手动工作就是说你想要多少次重复。

<dl class="My Class">
        <?php
            $i = 0;
            $counter = 2 * render ($content['field_counter_slides'][0]) -1;
                while ($i <= $counter):
                    if ($content['field_test'][1]){
                        echo "<dt>";
                        print render ($content['field_test'][$i]);
                        $i++;
                        echo "</dt><dd>";
                        print render ($content['field_test'][$i]);
                        echo "</dd>";
                        $i++;
                    }
                endwhile;
        ?>
    </dl>

1 个答案:

答案 0 :(得分:0)

如果不了解更多内容就很难回答,但这样的事情可能会这样做:

$header = array();
$rows = array();
foreach ($node->field_my_field[$langcode] as $key => $field_entry) {
  $rows[] = array(
    $field_entry['value'],
    $node->field_my_second_field[$langcode][$key]['value']
  );
}

$output = theme('table', array('header' => $header, 'rows' => $rows));

您必须确保每个字段的条目数相同,以便每次运行field_my_second_field循环时始终有foreach个条目。