我需要一个简单的脚本来强制改变MODX Revo中每个资源的editedon
字段。这就是我到目前为止所做的:
$resources = $modx->getCollection('modResource',array('parent' => 0));
$mydate = date(%c);
foreach ($resources as $res) {
$res->set('editedon', $mydate);
$res->save();
}
只是为了测试我将其分配给OnBeforeCacheUpdate
事件的脚本,所以每次清除缓存时我都可以检查结果。问题是,脚本挂起Console running...
就像只是"挂在孩子身上......"
发生了什么? 谢谢。
UPD:在浏览器中直接调用脚本时出现此错误:
致命错误:在/path/script.php中的非对象上调用成员函数getCollection()
但是,某些资源的editedon
字段成功,但不是全部。那是为什么?
UPD2:好吧,可能这个脚本不会单独工作,因为没有MODX特定的类和脚本内部的所有类,但是在我清除缓存后它似乎正在工作,因为它被分配给OnBeforeCacheUpdate
事件。我还删除了array('parent' => 0)
部分,它现在适用于每个资源(不仅仅是没有子节点的资源)。但是我如何每24小时运行一次? Cron不是一个选项,因为脚本本身并不起作用。
答案 0 :(得分:0)
还在跟自己说话......这是有效的代码:
$resources = $modx->getCollection('modResource');
$mydate = date(%c);
foreach ($resources as $res) {
$res->set('editedon', $mydate);
$res->save();
}
通过CronManager额外的MODX运行它,然后你去。如果有人需要它。