drupal 论坛函数挂钩在发布之前验证单词列表

发布于 2024-10-31 21:24:09 字数 76 浏览 1 评论 0原文

如何实现一个钩子来验证我发布的文字? 论坛好像缺少这个功能:禁用词 所以即使我必须制作自己的模块我也想实现一个 我只需要知道要挂钩什么函数

how can I implement a hook to validate the words that I'm posting ?
it seems that the forum lacks that feature: prohibited words
so I want to implement one even if I have to make my own module
I just need to know what function to hook

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月静好 2024-11-07 21:24:09

您查看过现有的模块吗?

快速搜索即可找到 Wordfilter拼音词过滤器。我建议您尝试一下这些,即使它们没有完全满足您的需要,它们的代码可能会帮助您指明正确的方向。

+++ 编辑 +++

如果您必须在他们发布时执行此操作,请使用 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');
        }
    }
}

Have you looked at the existing modules?

A quick search finds Wordfilter and Phonetic Wordfilter. I would suggest you try these out, even if they don't do exactly what you need their code will probably help point you in the right direction.

+++ EDIT +++

If you must do it when they post then use hook_nodeapi

If you want to remove word automatically then run the 'presave' operation to alter the body before saving. Something along the lines of;

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);
    }
}

Or if you wanted to prevent the user from posting until they had removed any banned words then you use the 'validate' operation. Something like;

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');
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文