Zum Inhalt springen

Frontend Plugin mit verschiedenen Ansichten

Erstellt am 5. April 2006 · 10 Antworten · letzte Antwort am 10. April 2006

Tags: Frage

gpelka ·

Moinsen,

Ich habe mich dran gemacht ein leichtes
Plugin zu bauen um News darzustellen. Hier mal der Quellcode um den es geht:

function main($content,$conf) {
$this->conf=$conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();
$news = $GLOBALS['news'];
if (!($news == "")) {
$content =$this->showNews($news);
} else {
$content = $this->showOverview();
}
return $this->pi_wrapInBaseClass($content);
}

Ich möchte also gerne das wenn keine weiteren Parameter angegeben werden nur ein Überblick über alle News gegeben wird und man durch einen Link nur den Newsbeitrag im Detail und keinen Übersicht erhält. Die beiden Funktionen showNews und showOverview funktionieren nur verstehe ich nicht wie ich die Parameter aus der URL auslesen kann. Beziehungsweise manchmal klappt es und manchmal nicht. Woran liegt das?

Gruß
Gerard

steffenk ·
$news = $GLOBALS['news'];

das ist nicht der Weg um Get-Vars zu lesen !

Man setzt sie mit

$this->prefixId.'[news]'

und liest sie mit

$this->piVars['news']
gpelka ·

Ah okay das mit dem auslesen versteh ich, aber wie meinst du das mit dem setzen?

Bisher sieht der Link auf die Detailansicht so aus (hab mir da mal was zusammen gelogen :-) )

<a href="index.php?id='.$GLOBALS["TSFE"]->id.'&news='.$news["uid"].'">

aber trotzdem bekomme ich dann mit

$news = $piVars['news'];

keinen Wert übergeben.

HILFE :-)

Gruß
Gerard

steffenk ·

Du solltest Literatur hinzuziehen !

Links generiert man über die Typo-Funktionen, z.B.

$this->pi_linkToPage('Linkbeschriftung',$GLOBALS["TSFE"]->id,'',array($this->prefixId.'[news]'=>$news))
gpelka ·

Ah das ist mal um längen eleganter so. Super dank dir.
Nur leider klappt es immer noch nicht. Er setzt jetzt schön die Parameter nur beim auslesen hat er da nicht so Lust drauf.
Selbst ein

$content = $piVars['news'];

gibt mir keinen Wert zurück.

$this->conf=$conf;
$this->pi_setPiVarDefaults();
$this->pi_loadLL();
$content = $piVars['news'];

Das ganze klappt nur wenn ich vor dem Aufruf per Link mit Parameter den FE-Cache lösche.

Gruß Gerard

PS: Welche Bücher kannst du mir denn besonders empfehlen.

steffenk ·

Du musst das Cache für Deine Ext abschalten. Da gibt es mehrere Wege ...

Literatur:
Typo3 Enterprise Content Management
Typo3 Handbuch für Entwickler

und die unzähligen Dokus auf typo3.org ...

woida ·
steffenk schrieb

Man setzt sie mit

$this->prefixId.'[news]'

und liest sie mit

$this->piVars['news']

Das ist EIN Weg, auf die Parameter zuzugreifen. Und der Weg ist davon abhängig, wie du deine Links erzeugst. So pauschal wie du das sagst ist das nämlich falsch.

steffenk ·

hehe, nicht so kleinlich 😃

Genau aus diesem Grund hab ich auf Literatur hingewiesen, das war wie gesagt nur ein Beispiel.
Sicher gibts wie bei allem zig Wege 😉

Spyker ·
gpelka schrieb
$content = $piVars['news'];

Nicht getstet aber oben wurd dass gepostet:

$content = $this->piVars['news'];

vll auch einfach mal ein print_f($this) und nach news schaun :-)

Beste,
Tim