编辑脚本"编辑" MODX Revo每24小时触发一次资源的字段

时间:2016-08-29 14:35:45

标签: php modx modx-revolution

我需要一个简单的脚本来强制改变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不是一个选项,因为脚本本身并不起作用。

1 个答案:

答案 0 :(得分:0)

还在跟自己说话......这是有效的代码:

$resources = $modx->getCollection('modResource');
$mydate = date(%c);
foreach ($resources as $res) {
    $res->set('editedon', $mydate);
    $res->save();
}

通过CronManager额外的MODX运行它,然后你去。如果有人需要它。