我正在使用drupal 7
我有一个日期字段。
显示按预期选择的日期。
但是我想在不同的验证下更改显示屏,在某些php验证或'此日期现已关闭'下更改“此日期已基本结束”。
我不能使用字符串覆盖,因为它不接受php。我是否必须使用自定义模块并使用hook form alter或node api?
感谢您的帮助
答案 0 :(得分:2)
是的,您必须使用模块来调整图像字段的显示方式。您可以使用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!field.api.php/function/hook_field_formatter_info/7 http://api.drupal.org/api/drupal/modules!field!field.api.php/function/hook_field_formatter_view/7