更改字段输出的最佳方法


best way to change output of a field?

我使用drupal 7

我有一个日期字段。

按预期显示所选日期。

然而,我想改变显示说'这个日期几乎结束'在某些php验证或'这个日期现在关闭'在不同的验证

我不能在ide上使用字符串,因为它不接受php。我是否必须使用自定义模块并使用钩子形式更改或节点api?

感谢您的帮助

是的,您必须使用模块来调整图像字段的显示方式。你可以使用hook_field_formatter_info()和hook_field_formatter_view()创建一个新的显示格式,或者你可以使用hook_field_formatter_view()通过检查$display['type']来挂钩一个现有的显示。我推荐前者。

下面是两个钩子如何一起工作的例子:

function modulename_field_formatter_info()
{
    return array(
        'modulename_formatter' => array(
        'label' => t('Custom Date Format'),
        'field types' => array('date'),
        ),
    );
}
function modulename_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display)
{
    if ($display['type'] != 'modulename_formatter')
        return;
    foreach ($items as $delta => item)
    {
        if ($item['date'] < time()) //Or 'datetime' or 'datestamp'
            $element[$delta]['#markup'] = 'this date is now closed.';
    }
    return $element;
}

我可能有一些索引错了,但它们应该非常接近。

http://api.drupal.org/api/drupal/modules领域! field.api.php/功能/hook_field_formatter_info/7http://api.drupal.org/api/drupal/modules领域! field.api.php/功能/hook_field_formatter_view/7