呈现单个 FieldCollectionItemEntity 字段
Rendering individual FieldCollectionItemEntity fields
我需要呈现字段集合中的各个字段,以允许我根据特定条件调整字段顺序、字段内容、删除包装 DOM 节点等。
我一直在通读 this thread,因为它似乎是这方面的最佳资源,但我无法弄清楚为什么这个字段集合渲染器不起作用。
它只是什么都不输出。
node--component-icon-promo.tpl.php
<? if (!empty($content['field_icon_promo_items'])) : ?>
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php foreach ($content['field_icon_promo_items']['#items'] as $entity_uri): ?>
<?php
$item = entity_load('field_collection_item', $entity_uri);
?>
<?php foreach ($item as $item_object ): ?>
<?php print render($item_object->field_cta); ?>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
<? endif; ?>
在 print render
输出之前添加一个 dpm($item_object);
。
将 <?php print render($item_object->field_cta); ?>
更改为 <?php print render($item_object); ?>
只会导致错误。
Recoverable fatal error: Object of class FieldCollectionItemEntity
could not be converted to string in include() (line 99 of
/var/www/html/sites/all/themes/xerox/templates/node--component-icon-promo.tpl.php).
我知道那是因为 $item_object 就是一个 render doesn't like 的对象。 API 的字段集合位看起来一团糟。
如有任何帮助,我们将不胜感激。
建议这样使用,使用 entity_metadata_wrapper:
<? if (!empty($content['field_icon_promo_items'])) : ?>
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php foreach ($content['field_icon_promo_items']['#items'] as $entity_uri): ?>
<?php
$item = entity_load('field_collection_item', $entity_uri);
?>
<?php foreach ($item as $item_object ): ?>
<?php
$wrapper = entity_metadata_wrapper('field_collection_item', $item_object);
$field_cta = $wrapper->field_cta->value();
//render your values with your own html or using theme_link function
?>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
<? endif; ?>
有关元数据包装器的更多帮助,请访问 this link
我需要呈现字段集合中的各个字段,以允许我根据特定条件调整字段顺序、字段内容、删除包装 DOM 节点等。
我一直在通读 this thread,因为它似乎是这方面的最佳资源,但我无法弄清楚为什么这个字段集合渲染器不起作用。
它只是什么都不输出。
node--component-icon-promo.tpl.php
<? if (!empty($content['field_icon_promo_items'])) : ?>
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php foreach ($content['field_icon_promo_items']['#items'] as $entity_uri): ?>
<?php
$item = entity_load('field_collection_item', $entity_uri);
?>
<?php foreach ($item as $item_object ): ?>
<?php print render($item_object->field_cta); ?>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
<? endif; ?>
在 print render
输出之前添加一个 dpm($item_object);
。
将 <?php print render($item_object->field_cta); ?>
更改为 <?php print render($item_object); ?>
只会导致错误。
Recoverable fatal error: Object of class FieldCollectionItemEntity could not be converted to string in include() (line 99 of /var/www/html/sites/all/themes/xerox/templates/node--component-icon-promo.tpl.php).
我知道那是因为 $item_object 就是一个 render doesn't like 的对象。 API 的字段集合位看起来一团糟。
如有任何帮助,我们将不胜感激。
建议这样使用,使用 entity_metadata_wrapper:
<? if (!empty($content['field_icon_promo_items'])) : ?>
<div id="node-<?php print $node->nid; ?>" class="<?php print $classes; ?> clearfix"<?php print $attributes; ?>>
<?php foreach ($content['field_icon_promo_items']['#items'] as $entity_uri): ?>
<?php
$item = entity_load('field_collection_item', $entity_uri);
?>
<?php foreach ($item as $item_object ): ?>
<?php
$wrapper = entity_metadata_wrapper('field_collection_item', $item_object);
$field_cta = $wrapper->field_cta->value();
//render your values with your own html or using theme_link function
?>
<?php endforeach; ?>
<?php endforeach; ?>
</div>
<? endif; ?>
有关元数据包装器的更多帮助,请访问 this link