Bitrix 有一个我想用来收集报告的处理程序:
RegisterModuleDependences("iblock", "OnAfterIBlockElementAdd", "OnWeekAfterReviewAdded");
发送消息时,它必须写入数据库,然后显示一定的时间间隔。事实上,报告是年度、月度、周度的。但是,不清楚这个钩子将这些事件写到哪里去了。不幸的是我没有在文档中找到它。.. 有一个数组组成的撤销消息:
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "OnWeekAfterReviewAdded");
function OnWeekAfterReviewAdded($arFields)
{
if($arFields['IBLOCK_ID'] == IBLOCK_REVIEWS_ID)
{
$arEventFields = array(
'LINK_TO_REVIEW' => $arFields['PROPERTY_VALUES']['LINK'],
'TEXT' => $arFields['DETAIL_TEXT'],
'NAME' => $arFields['NAME'],
'DATE' => $arFields['DATE_ACTIVE_FROM'],
'IP' => $arFields['PROPERTY_VALUES']['IP'],
'EMAIL' => $arFields['PROPERTY_VALUES']['EMAIL'],
'ID' => $arFields['IBLOCK_ID'],
'TEST' => $arFields,
);
CEvent::Send('EMAIL_WEEK_REPORT', 's1', $arEventFields);
}
}
我需要在每个月的第一天和星期一发送一次这个事件。
这是RegisterModuleDependences文档的链接。顾名思义,这个函数注册了一个模块的依赖关系。当您为 Bitrix 开发模块时应该使用它。
本质上,调用此方法会在表中创建一个条目
b_module_to_module。您很可能需要AddEventHandler方法,它会动态注册一个事件处理程序(无需写入数据库)。
这些方法之间的区别:
您正在使用的 OnAfterIBlockElementAdd处理程序在信息块元素中的每次更改时触发,但不能保证在属性更改时调用它。
如果你想收集信息块元素更改的事实,这可以在信息块设置页面上完成,选项卡“事件日志”