尝试使用hook_filter_info()
创建自定义过滤器时出现问题。
我必须根据当前查看的节点的字段进行一些替换。我只是使用以下代码。
return str_replace('%people1%', 'REPLACING WORKING', $text);
在进程回调中,该代码工作正常,但我无法获取当前节点ID(menu_get_item()
或arg()
)。此外,每次进行一些更改('cache' => FALSE
)时,我都必须清除缓存。
在流程回调中处理数据是否需要了解?
答案 0 :(得分:1)
menu_get_item()
和arg()
不会返回不同的值;它们没有返回您期望的值,可能是因为输入过滤器的调用环境与您想象的不同。
在以下情况下调用输入过滤器:
即使在输入过滤器用于渲染节点主体的情况下,仍然可能存在两种情况:
实现输入过滤器的模块无法理解调用它的实体,并且当前页面的路径不一定提供该信息。例如,我可以有一个模块,在mymodule / disclaimer显示ID等于2的节点的内容,或者我可以有一个视图,在example_path / just_to_make_an_example显示摘自符合我决定的某些条件的节点。
如果您需要替换节点主体中的某些单词,例如将%author%替换为节点创建者的用户名,则应该实现hook_node_view_alter()。