这是关于显示"事件报告"基于"组织"在客户门户网站上。我们将在输入框中输入组织,然后单击"提交"。应仅为该组织显示事件报告。
这种情况正在发生,但是"已登录"联系人ID(c_id)也作为过滤器传递给该事件报告。
是否可以删除对上述事件报告强加的c_id过滤器?如何从“事件报告”中删除此联系人ID过滤器?
有人建议使用pre_report_get_data挂钩,然后取消设置Contact ID(c_id)过滤器。但我无法弄清楚如何做到这一点。
有人可以使用pre_report_get_data挂钩给我一个代码段来删除c_id过滤器吗?或者解决这个问题的其他方法。
答案 0 :(得分:0)
将要编辑的报告复制到新版本,然后根据需要编辑报告的过滤器。您将无法直接编辑默认的预设报告,但使用副本,您可以完全编辑它。
由于客户门户网站上的用户模型,始终在客户门户网站筛选器上应用联系人筛选器。 CP期望Web上的用户是特定客户,并且应该只能访问特定于用户会话中特定联系人的联系人数据。这是一种安全机制,正在按预期工作。
如果目标是显示可能包含与之相关的联系人数据但应该向所有联系人公开的报表中的数据,那么您应该编写一个直接运行ROQL或Analytics API查询的自定义窗口小部件,但要小心如果实施不当,可能会泄露其他客户数据。
如果你想使用pre_report_get_data钩子,那么在settings / hooks.php文件中启用钩子非常简单。将钩子指向您希望钩子调用的模型和方法。然后,编辑传递的数据数组以从过滤器数组中取消设置c_id,如另一篇文章中所述。
$rnHooks['pre_report_get'][] = array(
'class' => 'filter_report',
'function' => 'report_run',
'filepath' => ''
);
告诉钩子引擎调用report_run()
模型中的filter_report
方法。这些通常是CP中的示例代码文件,因此您应该已经完成了大部分工作来实现该挂钩。
function report_run($hookData)
{
if($hookData['data']['reportId'] == '100335') //Change the report ID to the report that you need to call
{
unset($hookData['data']['filters']['c_id']); //you'll need to lookup the key of the filter in the report to figure out which one to unset
}
}