Hallo,
ich habe das Tutorial "Moderne Template Erstellung Teil1" durchgearbeitet, jetzt wollte ich auf eine PHP-Funktion zurück greifen und es funktioniert einfach nicht. Es wird nicht mal eine Fehlermeldung ausgespuckt, nichts! Und dabei hat es schonmal funktioniert? Sehr seltsam. Hier zum Vergleich einmal der Code aus dem Tut.:
# Default PAGE object:
page = PAGE
page.typeNum = 0
page.includeLibs.some_random_id_string = fileadmin/userfunctions.php
page.config.admPanel = 1
# Content object outputting current page title:
page.10 = HTML
page.10.value = The page ID, {field:uid}, multiplied with 15 is:
page.10.value.insertData = 1
page.10.value.wrap = <b> |</b> <br />
page.20 = USER
page.20.userFunc = user_functions->multiplyTest
page.20.factor = 15
Und jetzt nochmal der Code aus der PHP-Datei:
[edit]Die PHP-Datei ist natürlich die userfunction.php in fileadmin[/edit]
<?php
class user_functions {
/**
* Multiplies the current page ID with $conf["factor"]
*/
function multiplyTest($content,$conf) {
$currentPageUid = $GLOBALS['TSFE']->id;
$factor = intval($conf['factor']);
return $currentPageUid * $factor;
}
}
?>
Weiß jemand Rat? Hattet ihr vielleicht auch schon mal so ein Problem?
Für Hilfe wäre ich sehr dankbar.
Gruß Alexander
Hallo!
Die Variable heißt meines Wissens nach $_GLOBALS und nicht $GLOBALS...
#Hannes#
Hmm, das funktioniert leider nicht, hätte mich auch gewundert, wo dieses Script genau in der Form doch schon beim durcharbeiten des Tutorials funktioniert hat.
Das einzige was jetzt den Unterschied zu früher ausmacht, sind einige Module, die ich jetzt in einem Sysfolder namens "Template Storage" ausgelagert habe. Aber das kann doch nicht der Grund allen übels sein??!
Folgende Struktur zeigt der Template Analyser:
|--EXT:css_styled_content/static/
|--ts_language_de
|--Menu 1
|--Auto-Parser
|--cObject
|
main
Im Main findet man dann folgendes:
# Default PAGE object:
page = PAGE
page.typeNum = 0
page.includeLibs.some_random_id_string = fileadmin/userfunctions.php
page.config.admPanel = 1
# Content object outputting current page title:
page.10 = HTML
page.10.value = The page ID, {field:uid}, multiplied with 15 is:
page.10.value.insertData = 1
page.10.value.wrap = <b> |</b> <br />
page.20 = USER
page.20.userFunc = user_functions->multiplyTest
page.20.factor = 15
Und wie schon in meinem vorherigen Beitrag erwähnt in der datei fileadmin/userfunction.php steht folgendes:
<?php
class user_functions {
/**
* Multiplies the current page ID with $conf["factor"]
*/
function multiplyTest($content,$conf) {
$currentPageUid = $GLOBALS['TSFE']->id;
$factor = intval($conf['factor']);
return $currentPageUid * $factor;
}
}
?>
Weiß noch jemand Rat? ich bin schier am verzweifeln
Aber danke schonmal für die Lösungsversuche
Gruß
Alexander
Hiho,
ich tippe:
page.20.factor = 15
muss zu
page.20.userFunc.factor = 15
mit der php function debug() kann man immer ganz gut gucken was da so ankommt in den funktionen.
z.b.:
<?php
class user_functions {
/**
* Multiplies the current page ID with $conf["factor"]
*/
function multiplyTest($content,$conf) {
// ich bin eine debugging function :o)
debug($conf);
$currentPageUid = $GLOBALS['TSFE']->id;
$factor = intval($conf['factor']);
return $currentPageUid * $factor;
}
}
?>
das geht aber nur wenn das debug "angeschaltet" ist. das kann man in der installation machen, da ist ein feld, in dem die IP's eingetragen werden, fuer die das debug zulaessig ist. das einfach mal alles rausnehmen.
grtz
Hallo,
die Klasse kann bei kleinen "Progrämmchen" hier ruhig weg bleiben, ebenfalls wäre die Anwendung des Objektes USER_INT statt USER gerade zu Entwicklungszwecken angebrachter. Wenn die Klasse weg bleibt und es sich nicht um ein Modul handeln soll, reicht das Objekt PHP_SCRIPT_INT aus:
page.20 = PHP_SCRIPT_INT
page.20.file = fileadmin/multiplyTest.php
page.20.factor = 15
Folgenden PHP-Code in der Datei fileadmin/multiplyTest.php ablegen:
<?php
/**
* Multiplies the current page ID with $conf["factor"]
*/
function multiplyTest($content,$conf) {
$currentPageUid = $GLOBALS['TSFE']->id;
$factor = intval($conf['factor']);
return $currentPageUid * $factor;
}
?>
Ansonsten: wenn es sich um ein Modul handeln soll, am Besten mit dem Kickstarter anfangen, der eine "fertige" PHP-Klasse für TYPO3 erzeugt. Im oberen Abschnitt Ihrer Klasse fehlen einige benötigte Angaben.