Drupal7模块开发。仅在指定时间显示特定类
我正在构思一个Drupal 7定制模块,我有一个逻辑,只在早上显示一个类(带有红地毯的图像),然后在中午(大约下午6点)该类图像将显示另一个图像(如蓝色地毯) 对于这个模块和属性,我应该使用哪些特定的Drupal7钩子?我现在唯一能用的钩子是钩子菜单和钩子块,但我还在想到底应该用什么钩子Drupal7模块开发。仅在指定时间显示特定类,drupal,drupal-7,Drupal,Drupal 7,我正在构思一个Drupal 7定制模块,我有一个逻辑,只在早上显示一个类(带有红地毯的图像),然后在中午(大约下午6点)该类图像将显示另一个图像(如蓝色地毯) 对于这个模块和属性,我应该使用哪些特定的Drupal7钩子?我现在唯一能用的钩子是钩子菜单和钩子块,但我还在想到底应该用什么钩子 多谢各位。我在模块开发方面年轻了一周:-)假设您想要显示的内容是一个节点,那么您可以采取两种方法 首先是Drupal6方式,但它在Drupal7中仍然有效。您可以使用hook\u node\u info定义新的
多谢各位。我在模块开发方面年轻了一周:-)假设您想要显示的内容是一个节点,那么您可以采取两种方法 首先是Drupal6方式,但它在Drupal7中仍然有效。您可以使用
hook\u node\u info
定义新的内容类型,然后使用hook\u form
定义编辑表单,并使用hook\u view
查看内容。因为这是一种“老”的做事方式,我就不多说了
Drupal7中奇特的新方法是通过Fields API。一个字段可以添加到任何内容类型中,并与其他字段一起工作,这使得它比我上面概述的创建新内容类型的旧D6方法更加灵活
字段由两个主要部分组成:小部件和格式化程序(但字段可以有多个小部件和格式化程序,以便用户选择)。小部件用于将数据输入到字段中,并将显示在节点的编辑表单上。格式化程序用于在查看节点时向用户显示字段的数据
hook\u field\u info
声明字段hook\u field\u widget\u info
为在hook\u field\u info
中定义的字段声明小部件李>
hook\u field\u widget\u form
返回表单,该表单将用于编辑表单hook\u field\u formatter\u info
为在hook\u field\u info
中定义的字段声明格式化程序hook\u field\u formatter\u view
返回要显示的内容DS
模块,然后使用以下内容实现hook\u DS\u fields\u info
:
function example_ds_fields_info($entity_type) {
$fields = array();
$fields['node']['image'] = array(
'title' => t('Dynamic Field Name'),
'field_type' => DS_FIELD_TYPE_FUNCTION,
'function' => 'example_image',
);
if(isset($fields[$entity_type])) {
return array($entity_type => $fields[$entity_type]);
}
}
function example_foo($field) {
return (is_morning() ? 'image one' : 'image two');
}
我会使用另一种方法,而不是@shanet的一种带有预处理钩子的方法,其主要思想是在页面的某处添加一个类,然后使用css背景图像:“hook_preprocess_hook”。详情请浏览 在“hook\u preprocess\u hook”中,“hook”可以是主题或模块的名称(首选,因为您的功能似乎不依赖于主题),而“hook”可以是“html”、“页面”、“字段”、“节点”等 在钩子中,您将发现类的“$variables['classes\u array']”数组。根据需要添加条件和类 例如:
function yourmodule_preprocess_html(&$variables) {
$variables['classes_array'][] = isMorning() ? 'morning' : 'not-morning';
}
function isMorning() {
... your logic to check if it is morning or not ...
... returns a boolean ...
}
在本例中,您将在body标记中获得类“morning”或“not morning”,并且可以根据您的“morning”条件使用CSS瞄准任何对象。图像显示在哪里?它是在一个块、一个节点、一个表单还是其他什么东西中?根据显示的位置使用不同的挂钩。请参阅下面的答案。谢谢@shanet。我犯了一个错误,它在街区里。但无论如何,我将使用这些代码创建it节点的一个版本。我也在我的站点建筑中使用显示套件。