禁用Drupal内容创建消息?
每当创建内容项时,都会显示如下消息:禁用Drupal内容创建消息?,drupal,Drupal,每当创建内容项时,都会显示如下消息: [Content Type] [Name] has been created. 有没有办法为特定用户禁用此消息?或者对所有用户来说也可以。正是它在创建这些消息。您可以很容易地在节点表单上使用hook\u form\u alter,并使用自己版本的node\u form\u submit。在创建消息之前,您需要做的就是复制函数并添加一个user\u access('whatever')检查 或者,您可以在preprocess_page函数中,检查正在提供哪些
[Content Type] [Name] has been created.
有没有办法为特定用户禁用此消息?或者对所有用户来说也可以。正是它在创建这些消息。您可以很容易地在节点表单上使用hook\u form\u alter,并使用自己版本的node\u form\u submit
。在创建消息之前,您需要做的就是复制函数并添加一个user\u access('whatever')
检查
或者,您可以在preprocess_page函数中,检查正在提供哪些消息,并删除不需要的消息,但这会有点棘手。应该可以使用一些正则表达式。另一方面,这种方法对升级更加友好,因为您可以继续使用
节点_表单_提交
功能,并在将来进行更改(如果有)。如果您想使用规则模块,那么您可以使用我创建的新模块。
通过使用此选项,您可以设置一个规则,该规则将在创建节点后删除所有消息
希望这将在不久的将来被添加到主规则模块中。googletorp是正确的(关于提交功能)。但不幸的是,您无法将消息与node submit功能分离,复制该功能(没有消息)将意味着您的站点在发布安全版本时可能会中断。您必须维护该函数的自己版本。这可能没什么大不了的,但遵循最佳实践是个好主意
您需要在调用node_form_submit之前或之后编写自己的提交钩子
在节点保存后使用submit钩子,如果消息数组足够容易使用,则可以从$\u会话['messages']
中删除消息。我想这很简单。看
或
您可以在body标记中用CSS编写一些类,并在节点表单提交到的页面上返回状态消息时将显示设置为none。但是这可能会将您的业务逻辑放在主题层中,这应该避免。您可以尝试使用以下模块禁用Drupal中的特定消息-我认为最佳做法是使用
hook\u nodeapi()
和Drupal\u get\u messages('status')
。hook\u nodeapi()
的$op
将是insert
。例:
mymodule_nodeapi(&$node, $op) {
if ($node->type == 'content_type_to_check_for' && $op == 'insert') {
drupal_get_messages('status');
}
}
您可以在drupal中使用模块!:) 以下是我发现的为特定内容类型(节点类型为“请求”)隐藏此类消息的方法: 最好的方法是访问用户模块。 此模块可以禁用多种类型的消息:
- 筛选出与全文字符串完全匹配的邮件
- 筛选出与正则表达式匹配的消息
- 对任何角色专门隐藏给定类型的所有邮件的权限
- 禁用特定用户的所有筛选
- 禁用特定路径的所有筛选
- 仅对特定路径应用筛选
- 调试系统以获取HTML中的消息,而不向最终用户显示
// specific node type form alteration hook (implements [hook_form_FORM_ID_alter][1]())
function MYCUSTOMMODULE_form_request_node_form_alter(&$form, &$form_state) {
// ...
// custom validation function
$form['#validate'][] = '_custom_request_node_form_validate';
// ...
}
function _custom_request_node_form_validate($form, &$form_state) {
//...
// here we can set a submit handler that is executed before
// node_form_submit which sets the messages we are trying to hide
$form_state['submit_handlers'][] = '_custom_request_node_disable_msg';
//...
}
function _custom_request_node_disable_msg($form, &$form_state) {
//...
// clear status messages
drupal_get_messages('status');
}