Modx Evolution: Как получить доступ и изменить переменную шаблона (tv) перед сохранением? - PullRequest
1 голос
/ 31 августа 2011

Не большой поклонник modx, но, к сожалению, это то, что мы используем в работе.

У меня проблемы с сохранением измененной переменной шаблона в modx evolution (1.0.5).

В моем плагине, вызванном с событием OnBeforeDocFormSave, я делаю это, чтобы получить и изменить tv:

//include global variables
global $content,$default_template,$tmplvars;

$foo = $tmplvars[$TV_ID][1] . "bar";

$tmplvars[$TV_ID][1] = $foo;

Это не похоже на работу. $ foo установлен, но телевизор не сохранен.

$ TV_ID - идентификатор ресурса шаблонной переменной, за которой я работаю.

Существует множество способов получить телевизор с помощью вызовов API, но как я могу изменить его перед сохранением?

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Это решение работает:

Вызывается плагином в событии 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 - идентификатор переменной шаблона, которую вы пытаетесь изменить.

0 голосов
/ 31 августа 2011

Вы используете Evo от Revo?

Я обновляю счетчик страниц в 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

-sean

...