【问题标题】:Modx Evolution: How to access and modify a template variable (tv) before save?Modx Evolution:如何在保存前访问和修改模板变量(tv)?
【发布时间】:2011-08-31 16:20:22
【问题描述】:

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

任何帮助表示赞赏。

【问题讨论】:

  • 很遗憾你不是粉丝,modx 很容易成为我最喜欢的 CMS(Drupal、Wordpress、Joomla)
  • 一般来说不是 cmses 的粉丝 :) 随时给我一个不错的框架。

标签: php plugins modx modx-evolution


【解决方案1】:

您在使用 Evo 或 Revo 吗?

我在 OnWebPageComplete 事件中使用插件更新页面计数器,如下所示:

<?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

-肖恩

【讨论】:

  • hmmm - 抱歉,我不知道进化语法是什么 - 你试过在 modx 社区论坛发帖或查看 rtfm.modx.com 吗?
【解决方案2】:

此解决方案似乎有效:

插件在 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。

【讨论】:

    猜你喜欢
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 2013-03-05
    • 2019-11-16
    • 2016-05-22
    • 2012-12-13
    • 2016-03-10
    相关资源
    最近更新 更多