Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用Drupal内容创建消息?_Drupal - Fatal编程技术网

禁用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中的消息,而不向最终用户显示

我天真地认为它可以在预处理页面上更改,但模板预处理页面当时已经对它进行了处理。但至少在drupal 6中,在设置消息之前,当node\u form\u submit调用node\u save时,会触发插入钩子。
// 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');
}