Answers:
我个人认为格式化程序是更好的解决方案。
您只需要实现两个钩子:
例如:
function MYMODULE_field_formatter_info() {
return array(
'my_formatter' => array(
'label' => t('My formatter'),
// The important bit...
'field types' => array('field_type'),
),
);
}
function MYMODULE_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
$settings = $display['settings'];
$element = array();
if ($display['type'] == 'my_formatter') {
foreach ($items as $delta => $item) {
$element[$delta] = array('#markup' => $item['value']);
}
}
return $element;
}
要进行更深入的了解,请下载“ 示例”模块并查看field_example-那里有很多代码和文档可助您一臂之力。
您可以开发自定义模块或使用“自定义格式程序”模块。
在第一种情况下,你必须写一个实现一些Drupal 7个的钩子模块:hook_field_formatter_info()
,hook_field_formatter_view()
和hook_theme()
。hook_field_formatter_info()
用于声明格式化程序类型。该函数返回一个带有格式化程序描述的数组。密钥将是格式化程序的名称,并且将具有一个带有标签和字段类型的数组。之后,您必须执行hook_field_formatter_view()
和hook_theme()
以定义模板。您可以在docs中找到有关Feld Fieldter API的更多详细信息。
在第二种情况下,您可以使用“ 自定义格式化程序”模块,该模块允许为每个字段创建自定义显示格式化程序。通过此模块,您可以使用带有标记的自定义PHP代码或HTML代码创建格式化程序。
我建议第二种方法,因为它非常易于使用和配置。