Hallo Leute,
ich habe mir nun eine neue Homepage gebaut, mit Typo3 als CMS.
Vorher hatte ich alles selbst geschrieben.
Dort hatte ich einen Kalender, und diesen würd ich jetzt gerne auch in Typo3 mit einbinden.
Leider krieg ich es nicht hin, PHP einzubinden, ich weiß es ist ein Sicherheitsrisiko da Moderatoren dann auch PHP einbinden können, aber ich bin der einzige Moderator.
Ich hoffe ihr könnt mir helfen.
Mit dem USER-Objekt kannst Du eigene PHP-Scripts einbinden (falls Dir die Erstellung einer Extension zu kompliziert erscheint).
Früher gab es eine Extension, mit der man PHP direkt als Content-Element einfügen konnte. Diese gibt es nicht mehr, zumindest nicht mehr im TER.
Dafür kannst Du aber die Extension tscobj nutzen. Sie erlaubt es Dir, TypoScript-Objekte als Content-Elemente einzufügen. Diese TypoScript-Objekte können natürlich auch USER und USER_INT enthalten, welche Deine PHP-Scripts aufrufen.
igorshmigor schrieb
Dafür kannst Du aber die Extension tscobj nutzen. Sie erlaubt es Dir, TypoScript-Objekte als Content-Elemente einzufügen. Diese TypoScript-Objekte können natürlich auch USER und USER_INT enthalten, welche Deine PHP-Scripts aufrufen.
Hab die extension jetzt mal installiert, wie bekomm ich jetzt mein PHP-Script was unter fileadmin/calender/calender.php nun included ?
Hi,
da du wahrscheinlich keine Lust zum lesen hast, hier mal ein Beispiel:
page.20 = PHP_SCRIPT
page.20{
file = fileadmin/templates/scripts/test.php
}
<?php
// test.php
$content = 'Hello world';
?>
Wichtig ist:
Alle Inhalte müssen in $content geschrieben werden. Keine Ausgabe durch echo.
Über eine Condition kannst du jetzt noch gezielt eine spezielle Seite ansprechen:
[globalVar = TSFE:id = 10]
page.20 = PHP_SCRIPT
page.20{
file = fileadmin/templates/scripts/test.php
}
[end]
Beste Grüße
tom 🙂
Naja ich habs nur nicht so ganz verstanden,
und verstehs immernoch nicht so ganz, tut mir leid beschäftige mich noch nicht so wirklich lange mit typo3
page.20 = PHP_SCRIPT
page.20{
file = fileadmin/calender/today.php
}
so sieht mein typoscript aus,
und
<?php
error_reporting(0);
require_once 'events.php';
require_once 'functions.php';
$year = intval(date('Y'));
$month = intval(date('m'));
$day = intval(date('d'));
$time_today = mktime(0, 0, 0, $month, $day, $year);
$days = 0;
$i = 0;
$next_events = array();
while (TRUE) {
if ($days >= 3) {
break;
}
$this_time = $time_today + ($i * (60 * 60 * 24));
$this_events = checkEvents(NULL, NULL, NULL, $this_time);
if (!empty($this_events)) {
$next_events[date('d.m.Y', $this_time)] = $this_events;
$days++;
}
$i++;
}
if (!empty($next_events)) {
$content = '<ul id="today">';
foreach ($next_events as $date => $today) {
foreach ($today as $babe) {
$content = '<li>'.$date.' '.$babe.'</li>';
}
}
$content = '</ul>';
} else {
$content = '<span id="calendar_no_events">Keine Einträge</span>';
}
das ist mein php script
und wenn ich jetzt bei plugin einfügen ts object wähle und dann durchsuchen klicke, finde ich nicht das page.20 oder wie auch immer das heißen muss.
http://cl.ly/5m9R
so siehts bei mir aus.
wenn ich page.20 eingebe kommt auf der seite dieser fehler: "TypoScript object not found (page.20)"
Wenn du das über das "ts object" machen willst ändere das typoscript folgendermaßen ab:
lib.phpscript = PHP_SCRIPT
lib.phpscript{
file = fileadmin/calender/today.php
}
Dann müsstest du eigentlich das lib.phpscript angezeigt bekommen
Im PHP Script stimmt deine $content Ausgabe noch nicht.
...
$content = '<ul id="today">';
foreach ($next_events as $date => $today) {
foreach ($today as $babe) {
$content .= '<li>'.$date.' '.$babe.'</li>';
}
}
$content .= '</ul>';
...
Danke danke danke funktioniert super!
Hallo,
weiß jemand wie man das mit dem "tollen" neuen Typo3 6.0 macht? Da wurde PHP_SCRIPT ja sinnvollerweise rausgenommen.
hoffe hier kann mir jemand helfen.
Es grüßt,
Christian
Objektorientiert mit "includeLibs" und "USER_INT" ?
Die Methode ist nicht neu und sollte eigentlich bevorzugt werden.
Chrissli schrieb
Objektorientiert mit "includeLibs" und "USER_INT" ?
Die Methode ist nicht neu und sollte eigentlich bevorzugt werden.
Danke. Es funktioniert!
includeLibs.my_functions = fileadmin/_data/phpfunctions.php
page = PAGE
page {
10 = USER_INT
10.userFunc = meineKlasse->meineFunktion
10.stdWrap.wrap = |
}
Die alte Methode, ist die Einbindung über PHP_SCRIPT. Diese Methode funktioniert ab Version 6.0 aber nicht mehr und es sollte die Funktion userFunc verwendet werden. Dazu habe ich zwei Blogartikel geschrieben:
Alte Methode (vor Version 6.0): http://blog.richpages.de/php-skript-in-typo3-einbinden.html
Neue Methode (ab Version 6.0): http://blog.richpages.de/typo3-6-php-skript-einbinden.html