Modx Evolution:如何在保存之前访问和修改模板变量(tv)?

时间:2011-08-31 16:20:23

标签: php plugins modx modx-evolution

不是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调用来获取电视,但如何在保存之前对其进行修改?

任何帮助表示感谢。

2 个答案:

答案 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