hallo,
ich bin gerade dabei mich in typo3 einzuarbeiten und habe dabei in irgend einem tutorial gelesen, dass man externe php dateien includen und die darin enthaltenen funktionen mit typoscript aufrufen/ausführen kann. jetzt wollte ich nochmal darauf zurückkommen und finde das entsprechende tutorial nicht mehr. kann mir von euch jemand sagen, wo das erklärt ist oder mir villeicht ein kleines syntax-beispiel geben?
include externer PHP Dateien
PHP Script includen:
Typoscript Setup:
tt_content.script = CASE
tt_content.script {
key.field = select_key
IRGENDEINNAME = PHP_SCRIPT_EXT
IRGENDEINNAME.file = fileadmin/DEIN_SCRIPT.PHP
}
nun erstellste in einer Seite ein Seitenelement vom Typ "Script" und trägst unter "CODE" einfach "IRGENDEINNAME" ein.
fertig =)
gruß Patric 😉
hallo kollege fachinformatiker,
ich mache auch gerade eine umschulung zum anwendungsentwickler und habe jetzt gerade mit meinem, die umschulung abschliesenden betriebspraktikum angefangen. im rahmen dessen hab ich jetzt den auftrag bekommen mich in typo3 einzuarbeiten. am anfang (montag) hats mich ja etwas erschlagen, aber so langsam blick ich halbwegs durch.
ich hoffe aber du verzeihst mir wenn ich mich ein wenig dau-mäßig anstelle. was ich jetzt noch nicht ganz verstehe ist, wie man die funktionen aus der php datei dann im script aufruft.<br><br>
tt_content.script.funktionsname() ???
da gibbets noch ne 2te Möglichkeit, die ich auch benutze.
Die is noch besser als die weiter oben.
im Template gibste als CODE das ein:
includeLibs.script = fileadmin/scripts/functions.php
tmp = USER_INT
tmp.userFunc = myclass->main
in der functions.php steht:
class myclass
{
function main()
{
return 1;
}
}
Das Objekt "tmp" kannst du auf einen Marker legen, und somit von anderen Seiten aus benutzen.
page.5.marks.OBJEKT = tmp
Die Funktionen in deiner PHP Datei sollten keine Daten per echo ausgeben, sondern per return zurückgeben, dann kann Typo die Daten ausgeben.
gruß Patric 😃
super,
das war die in dem tutorial beschriebene vorgehensweise, die mir auch ein kleines bisschen einleuchtender vorkommt (wenn auch nur ein ganz kleines bisschen). ich habe jetzt leider keine zeit mehr es auszuprobieren, aber ich werde morgen früh gleich als allererstes drangehen und dann bescheid geben obs geklappt hat.
vielen dank schonmal für deine mühe.
DGen
Alles klar!
Und wie es auch in meiner Signatur steht: 16.00 Uhr ich geh nach hause 😃
includeLibs.script = fileadmin/scripts/functions.php
tmp = USER_INT
tmp.userFunc = myclass->main
kann man dafür auch einen absoluten pfad angeben?
hintergrund: ich möchte bestehende klassen weiterverwenden.
weiter problem: die klassen includieren sehr viele andere files relativ.
hast du einen tipp?
tt_content.script = CASE
tt_content.script {
key.field = select_key
IRGENDEINNAME = PHP_SCRIPT_EXT
IRGENDEINNAME.file = fileadmin/DEIN_SCRIPT.PHP
}
wie kann man das einem marker zuweisen?
einfach
marks.INHALT < styles.content.get
läuft nicht.
Dein Code:
tt_content.script = CASE
tt_content.script {
key.field = select_key
IRGENDEINNAME = PHP_SCRIPT_EXT
IRGENDEINNAME.file = fileadmin/DEIN_SCRIPT.PHP
}
Die Zuweisung:
marks.MARKERNAME < IRGENDEINNAME
danke erstmal.
ich hab es genau so gemacht:
tt_content.script = CASE
tt_content.script {
key.field = select_key
PRODTYPES = PHP_SCRIPT_EXT
PRODTYPES.file = fileadmin/scripts/phpinfo.php
}
marks.INHALT < PRODTYPES
und das contentelement mit typ "script" und code "PRODTYPES" ist auch da.
allerdings der marker wird nicht ersetzt sondern einfach ausgegeben.
als include static hab ich ausprobiert:
- nichts
- content (default)
- content.tt_address
hat nichts gebracht.
Benutze mal diese Version
Patric schriebda gibbets noch ne 2te Möglichkeit, die ich auch benutze.
Die is noch besser als die weiter oben.im Template gibste als CODE das ein:
includeLibs.script = fileadmin/scripts/functions.php tmp = USER_INT tmp.userFunc = myclass->mainin der functions.php steht:
class myclass { function main() { return 1; } }Das Objekt "tmp" kannst du auf einen Marker legen, und somit von anderen Seiten aus benutzen.
page.5.marks.OBJEKT = tmpDie Funktionen in deiner PHP Datei sollten keine Daten per echo ausgeben, sondern per return zurückgeben, dann kann Typo die Daten ausgeben.
gruß Patric 😃
kann man includeLibs.script mit include bei php vergleichen?
denn mein projekt ist sehr komplex, d.h. das includede script includet wiederum sehr viele scripts und liegt nicht im typo3 verzeichnis.
am einfachsten ist das:
marks.INHALT = PHP_SCRIPT_EXT
marks.INHALT.file = fileadmin/scripts/deinscript.php
allerdings ist damit der zugriff auf funktionen nicht möglich.
die beiden anderen beschrieben varianten arbeiten beide nicht.
wenn es ein so komplexes Projekt ist, solltest du dir vll. überlegen, ob du es dann wirklich mit Typo3 umsetzen willst....
Den alles hat Grenzen.. Ich hab halt meine PHP Scripte die ich eingebinden habe, speziell für die Seite erstellt. Du willst ja schon vorhandene Funktionen weiter verwenden.... o.O
sicher hat alles grenzen. das ist mir schon klar.
ist halt schwierig: auf der einen seite gibt es ein auto-shopsystem und auf der anderen seite ein website, die das vorstellt. beide sollen die gleichen klassen verwenden, was insgesamt ja sinnvoll ist, nicht an zwei stellen pflegen zu müssen.
Hallo,
hab dass gleiche Problem und bin über diesen Beitrag sehr erfreut.
Nur find ich besagten Typ nicht.
Patric schriebnun erstellste in einer Seite ein Seitenelement vom Typ "Script" und trägst unter "CODE" einfach "IRGENDEINNAME" ein.
Was ich finde ist sowas wie: Text, (...) Login, Search, Insert Plugin (...) aber leider nicht Script. Muß ich eine Extension nachinstallieren?
wenn du css-styled content aktiviert hast, dann ist das feld nicht mehr verfügbar...