不是modx的忠实粉丝,但遗憾的是它是我们在工作中使用的。
我在modx evolution(1.0.5)中保存修改后的模板变量时遇到了问题。
在我的插件中,使用OnBeforeDocFormSave事件调用,我这样做是为了获取和修改电视:
//include global variables
global $content,$default_template,$tmplvars;
$foo = $tmplvars[$TV_ID][1] . "bar";
$tmplvars[$TV_ID][1] = $foo;
这似乎不起作用。 $ foo已设置,但电视未保存。
$ TV_ID是我之后的模板变量的资源ID。
有多种方法可以通过API调用来获取电视,但如何在保存之前对其进行修改?
任何帮助表示感谢。
答案 0 :(得分:1)
此解决方案似乎有效:
由OnBeforeDocFormSave事件上的插件调用
//include global variables
global $content,$default_template,$tmplvars;
$foo = $tmplvars[$TV_ID][1] . "bar";
$tmplvars[$TV_ID][0] = $TV_ID; //added this line
$tmplvars[$TV_ID][1] = $foo;
其中$ TV_ID是您尝试修改的模板变量的ID。
答案 1 :(得分:0)
您使用的是Evo ot Revo吗?
我使用OnWebPageComplete事件上的插件更新revo中的页面计数器,如下所示:
<?php
$docID = $modx->resource->get('id'); //get the page id
$tvId = 9; //the tv id I want to change
$tv = $modx->getObject('modTemplateVar',$tvId); // get the obj.
$tv->setValue($docID, $tv->getValue($docID) + 1 ); // set it's new value
$tv->save(); // save the new value
-Sean