如何实现钩子来验证我发布的单词? 似乎论坛缺乏这个特征:禁止的话 所以我想实现一个,即使我必须自己创建模块 我只需要知道挂钩的功能
答案 0 :(得分:2)
你看过现有的模块吗?
快速搜索找到Wordfilter和Phonetic Wordfilter。我建议你尝试这些,即使他们没有完全按照你需要做的,他们的代码可能会帮助你找到正确的方向。
+++ EDIT +++
如果您在发帖时必须这样做,请使用hook_nodeapi
如果您想自动删除单词,请运行'presave'操作以在保存之前更改正文。有些东西;
function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
if($op == 'presave' && $node->type == 'forum'){
$node->body = preg_replace('#\b(word1|word2|word3)\b#i', '*removed*', $node->body);
}
}
或者,如果您想要阻止用户发布,直到他们删除了任何被禁止的单词,那么您可以使用“验证”操作。喜欢的东西;
function mymodule_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL){
if($op == 'validate' && $node->type == 'forum'){
if(preg_match('#\b(word1|word2|word3)\b#i', $node->body)){
form_set_error('body', 'You have used restricted words');
}
}
}