Drupal

Drupal开发人员和管理员的问答

4
hook_init()的替代方法
我hook_init()用来检查用户的上次访问时间。如果最后访问时间是昨天,我将增加一个计数器并设置一些变量。 问题在于,对于相同的页面加载,hook_init()有时执行的次数超过一次(我可以使用看到dsm()),因此我的代码多次执行,导致变量错误。 为什么hook_init()执行不止一次? 解决我的问题的最佳方法是什么?我应该使用另一个挂钩吗? 我对此进行了更多研究: 我搜索了对hook_init()的调用(搜索了string module_invoke_all('init');),但只找到了核心调用)。我不知道这可以用不同的方式称呼。 这是我的hook_init() function episkeptis_achievements_init(){ dsm('1st execution'); dsm('REQUEST_TIME: '.format_date(REQUEST_TIME, 'custom', 'd/m/Y H:i:s').' ('.REQUEST_TIME.')'); } 这是输出: 1st execution REQUEST_TIME: 09/07/2012 11:20:32 (1341822032) 然后,将dsm()消息更改为dsm('2nd execution');并再次执行,这是输出: 1st execution REQUEST_TIME: 09/07/2012 11:20:34 (1341822034) 2nd execution REQUEST_TIME: 09/07/2012 11:22:28 (1341822148) 您可以看到该代码执行了两次。但是,第一次执行代码的旧副本,第二次执行更新的副本。也有2秒的时差。 这是php 5.3.10的d7版本
8 7  hooks 

2
允许用户添加分类术语,但要求管理员进行验证
我想允许用户添加新的分类法术语,但是我希望这可以由管理员进行验证。我设想的工作方式是让用户填写一个表单,该表单将向指定的管理员发送通知;然后,如果管理员接受了用户的请求,则将触发某些钩子或方法,以创建新的分类法术语。 有没有办法用Drupal做这种事情?


3
更改管理员/内容形式
在节点上添加了“由...更改”后,我现在需要在“作者”列旁边的node_admin_content表单上(在admin/content)上显示修改了每个节点的用户。 我设法通过更改node.admin.inc并仅添加两行代码来轻松解决此问题: ... 'changed_by' => t('Changed By'), ... ... 'changed_by' => theme('username', array('account' => user_load($node->changed_by))), ... 当然,这不是适当的解决方案,因为它会更改内核。 因此,我然后尝试通过以下方式更改表格: function hook_form_node_admin_content_alter(&$form, &$form_state, $form_id) { $form['admin']['nodes']['#header']['changed_by'] = t('Changed By'); // ... ? } 使用,dpm我可以看到表单在选项中有节点。问题在于这是将节点渲染为表选项的结果。我无权访问原始节点,也不想重新执行节点获取查询以获取“更改者”信息。我想在表单挂钩中执行此操作不会在正确的层中解决它。还是? 那么,改变node_admin_content表单以添加更多存在于节点上的数据的好方法是什么?
8 7  users  nodes 

2
如何在节点下隐藏注释,而不关闭它们?
Аctually我想自己列出节点的评论(例如,通过Views),所以我需要从核心评论模块中隐藏标准评论列表。我可以这样: unset($node['comments']['comments']); 但这不会阻止数据库查询注释。 因此,我发现了一些疯狂的方法来欺骗注释模块。例如,设置假$node->preview属性,或创建新的视图模式并覆盖标准node/%node回调。 将评论隐藏在节点下,但仍然允许添加新评论真的难吗,还是我错过了什么? 更新有关“隐藏”选项的信息 内容类型的“隐藏”值如何: 我需要评论的关闭/打开行为。但是,如果我为我的内容类型设置了“隐藏”,我的新内容将设置为“已关闭评论”,而不是隐藏的(这里是代码)。另一个问题是,如果注释是隐藏的,则具有“发布注释”权限的用户无法添加注释(这是代码)。 所以我不知道这个主意。 回答 找到的解决方案hook_module_implements_alter()。非常感谢!
8 7  comments 

4
视图3,针对语言的上下文过滤器-允许多种语言
因此,对于我正在构建的该站点,我需要能够执行以下操作。 当用户以英文查看网站时,显示所有英文文章 当用户以荷兰语查看网站时,显示所有荷兰语文章-以及未翻译的英文文章 当用户以德语查看该网站时,请显示所有德语文章-以及未翻译的英语文章。 上下文过滤器“内容翻译:语言”仅允许输入一个值。那是指定的语言,还是全部。 但是在我的情况下,要求能够设置例如“ en + nl”或“ en + de”。就像可以使用分类法“具有分类法”一样,我想要类似“具有语言”的方法。
8 7  views  i18n-l10n 

5
如何检查是否选中了一个开/关复选框?
在“规则”模块的数据选择器中,似乎没有任何方法可以检查单个“开/关(布尔)”复选框的值。如果“ field-MyField” =已选中或“ field-MyField” = 1,则执行“ blah”。规则可以做到吗?我肯定错过了什么
8 7  rules 

3
date字段中的current_timestamp
如何在drupal数据库架构中为date feild添加current_timestamp或now。 'created' => array( 'description' => t('Timestamp when the fee schedule was added.'), 'type' => 'int', 'not null' => TRUE, 'unsigned' => TRUE, ),
8 database 

1
如何以编程方式创建静态块?
我想使用模块创建一个静态块。我不想使用“视图”模块来创建块。谁能解释我如何以编程方式创建静态块? 我已经在Drupal中检查了示例模块,但是并没有太大帮助。我最近开始进行Drupal模块的开发,而我正为此而努力。
8 7  blocks 

1
如何在Drupal 7中以表单更改形式使用Ajax?
我创建了一个名为“主菜单”的内容类型。我只有几个相互依赖的选择列表。当要选择不同的复选框时,我想显示一个不同的列表。我发现需要使用Ajax来编辑表单才能实现这一点,但是谁能告诉我如何将Ajax与hook_form_alter一起使用? 我应该编辑的表单的表单ID是“ main_menu_node_form”。当我尝试使用hook_form_alter()并添加#ajax表单字段的属性来访问此表单时,似乎无法执行此操作,因为在将句柄传递给之前已经渲染了这些字段hook_form_alter()。谁能帮我解决这个问题? 注意:我已经使用创建了内容类型hook_install()。 function main_menu_content_type_form_main_menu_node_form_alter(&$form, &$form_state, $form_id) { dpm($form); dpm($form_state); $form['field_mlnk'] = array( '#ajax' => array( 'callback' => 'main_menu_content_type_form_main_menu_node_form_alter_callback', 'wrapper' => 'link-div', 'method' => 'replace', 'effect' => 'fade', ), ); }
8 forms  ajax 

4
如何:多语言站点,但使用单一语言后端?
我几乎已经完成了我的第一个Drupal 7多语言测试站点。只要我没有登录,就可以浏览所有页面并切换语言。登录时,我的第一个问题是,切换前端语言时,后端语言将切换。即,管理菜单已翻译,但应保持英语(或任何编辑首选的语言)。 然后,我发现在“配置”>“语言”>“检测和选择”中,可以选择语言的选择方式。因此:首先是用户,然后后端保留用户语言。精细。但是然后,前端也保持这种语言!因此,登录后,我无法再浏览所有页面,只能浏览英文页面... 必须有一种独立选择前端和后端语言的方法。怎么样?

3
“添加更多”分类术语小部件
我正在尝试创建一个与普通术语参考小部件相似的字段小部件,只是有一个关键的区别。用户需要能够同时添加多个新的分类法术语,这可能更好地证明了这一点: 我已经讲到了功能类似于分类法/选项/列表模块所提供的功能(即,显示了复选框/收音机,正在保存等)。 这是我在其中使用的重要代码hook_field_widget_form(): $element += array( '#type' => $multiple ? 'checkboxes' : 'radios', '#default_value' => $multiple ? $default_value : reset($default_value), '#options' => $options, '#value_key' => $value_key, '#element_validate' => array('options_field_widget_validate'), '#properties' => $properties, ); 让我感到困惑的是,$ element不是您通常的表单数组,因此我不确定如何添加文本字段和按钮-尤其是它们的值不是要保存的。将这些字段添加到窗口小部件的最佳方法是什么? 至于添加所需的Javascript,我是否认为应该使用#ajax来调用为复选框重新构建#options的函数? 提前致谢! 编辑- 我最初的问题很模糊,这是我尝试过的更多详细信息: $element += array( '#type' => 'fieldset', '#delta' => $delta, ); $element['value'] …

3
在自定义模块中上传图片
我正在编写一个自定义模块,并且需要它来上传图像。我很难找到关于此的好的文档,但是我想我已经接近了。 我想念什么?$ file在表单提交中返回false。 function mymodule_custom_content_block_form($form_state){ $form = array(); $form['custom_content_block_text'] = array( '#type' => 'textarea', '#title' => t('Block text'), '#default_value' => variable_get('mymodule_custom_content_block_text'), '#required' => true, ); $form['custom_content_block_image'] = array( '#type' => 'file', '#name' => 'custom_content_block_image', '#title' => t('Block image'), '#size' => 40, '#description' => t("Image should be less than 400 pixels …
8 7  forms  files 


8
如何防止调整文本区域的大小?
默认情况下,Drupal 7中的文本区域可调整大小。我想关闭此功能,但是当我使用Firebug检查文本区域时,找不到可调整其大小的CSS。 如何防止调整文本区域的大小?
8 7  theming 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.