Zum Inhalt springen

PHP in Typo3 einbinden.

Erstellt am 4. April 2011 · 11 Antworten · letzte Antwort am 18. September 2013

Tags: Frage

Berkelgraf ·

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.

igorshmigor ·

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.

Berkelgraf ·
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 ?

Unbekannter Benutzer ·

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 🙂

Berkelgraf ·

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)"

Unbekannter Benutzer ·

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>';
...
3dxO ·

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

Chrissli ·

Objektorientiert mit "includeLibs" und "USER_INT" ?
Die Methode ist nicht neu und sollte eigentlich bevorzugt werden.

3dxO ·
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 = |
}