PDA

Pogčedajte punu verziju : implemetacija php-a u textpattern


urkozamanje
08. 07. 2006., 04:48
tabela.php i klasa XML_parser.php rade bez problema sve dok ne pokusam da ih implementiram u textpattern. znaci ide ovako:

<txp:php>

include('files/tabela.php');

</txp:php>

prijavljuje mi

An error occurred in the following tag: <txp:php> -> Notice: Trying to get property of non-object

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'$'' in C:\webroot\alco_txp\files\XML-parser.php(21) : eval()'d code on line 1
An error occurred in the following tag: <txp:php> -> Notice: Undefined variable: test

Parse error: parse error in C:\webroot\alco_txp\files\XML-parser.php(95) : eval()'d code on line 1

itd. znaci kapiram da je kljucna rec Trying to get property of non-object ali nemam pojma zasto se to desava kad van textpatterna nema greske?

probao sam i da oba fajla (tabela.php i XML_parser.php) spojim u jedan ali dalje prijavljuje isto.

da li je neko imao iskustva sa php-om unutar txp-a ??

urkozamanje
08. 07. 2006., 20:52
za slucaj da ovo nekome zatreba :

na adresi http://textpattern.com/faq/34/how-do-i-use-php-code postoji sledeca informacija:

Variable scope – your PHP code will not be executed in the global scope, so you’ll need to explicitly declare global variables as required. If you want to pass data between separate <txp:php> blocks, you’ll need to do something like this:

<txp:php>
global $foo;
$foo = 'bar';
</txp:php>
...
<txp:php>
global $foo;
echo $foo
</txp:php>

kad sam ovo jednom prilikom procitao upamtio sam da se to odnosi na situacije kada imate dva < t x p : p h p></ t x p : p h p > bloka. ja ih nisam imao. imao sam jedan blok i include-ovan fajl:
<txp:php>

include ('files/tabela.php');

</txp:php>

ali potpuno sam zaboravio najbitnije : your PHP code will not be executed in the global scope, so you’ll need to explicitly declare global variables as required
neophodno je svaku promenljivu unutar neke f-je iz include-ovanog fajla (u mom slucaju tabela.php)
npr:
function characterData($parser, $data) {

global $obj;

eval($obj->tree.'->data=\''.$data.'\';');

}


deklarisati kao global u txp bloku:

<txp:php>

global $obj;
include ('files/tabela.php');


</txp:php>

nixa
09. 07. 2006., 00:19
obozavam monologe :)