我需要一个简单的脚本来强制更改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不是一个选项,因为脚本不能自己工作。
还在自言自语…下面是有效的代码:
$resources = $modx->getCollection('modResource');
$mydate = date(%c);
foreach ($resources as $res) {
$res->set('editedon', $mydate);
$res->save();
}
通过CronManager extra for MODX运行它,就可以了。如果有人需要的话。