Zum Inhalt springen

Extension anlegen mit Kickstarter (ohne "Frontend Plugins")

Erstellt am 3. September 2010 · 10 Antworten · letzte Antwort am 6. September 2010

Tags: TCA, Inhaltselemente, Frage

igorshmigor ·

Das machst du über TypoScript durch Bearbeitung von tt_content. Bei perfectlightbox geschieht dies in der Datei static/setup.txt .

Zur Idee: schöner finde ich den Ansatz von oxylab_stdwrap. Diese Extension erlaubt mir, jedem Element eine eigene Klasse, Style oder ID zu vergeben. Somit kann ich nicht nur per CSS die Hintergrundfarbe festlegen, sondern auch padding, Rahmen, etc. und muss diese Eigenschaften nicht als inline-Style festlegen, sondern kann die CSS-Eigenschaften in eine externe CSS-Datei auslagern.

caomhan ·

Hallo,

das werde ich mir nochmals anschauen. Aber wie bekomme ich die Verbindung der class.EXT.php hin, sodass ich darin meinen PHP Code erstellen kann?

Was die Extension oxylab_stdwrap macht klingt ja ganz nett aber was ich als Beispiel genannt habe, habe ich gar nicht vor 🙂 Es hat nichts mit Hintergrundfarben oder CSS zu tun 🙂

Werde mir jetzt gleich mal nen Development TYPO3 Projekt erstellen.

Vielen Dank für einen ersten Hinweis.

caomhan ·

Also ich bin nun etwas weiter.

Ich habe meine Extension so angelegt, dass alle benötigten Felder im BE verfügbar sind (sowie in die Datenbank gesichert werden - ich hoffe es zumindest).

Jetzt habe ich diese so erweitert, dass ich unter static/setup.txt und die constants.txt habe. Gebe ich nun in der setup.txt sowas hier ein:

temp.test = TEXT
temp.test.value = Yes well, mate!

Und in meinem normalen TS-Template sowas:

page.5 < temp.test

wird mir auf meiner Seite entsprechend Yes well, mate! angezeigt.
Also so weit so gut.

Nur verstehe ich noch immer nicht, wie ich die verbindung zur class.myextension.php aufbaue. Ich dachte, wenn ich nun dort die userFunc aufrufe:

temp.test = USER
temp.test.userFunc = tx_myextension->main

würde er an dieser stelle den Inhalt der Funktion main() meiner Klasse ausgeben. Darin steht nur "return 'Test';" aber es kommt nichts.

Wie bekomme ich denn die Ausgabe aus meiner class.myextension.php hin?

Viele Grüße!

caomhan ·

Also...

folgendes, ein hoffentlich kleines Problem habe ich noch:
Ich habe es nun geschafft die Werte entsprechend auszulesen.

Was ich mich nun Frage ist, wie ich eine IF-Abfrage mit einbinden kann und den Wert der für den Inhalt gesetzt wurde prüfe?

Also wenn dem Inhaltselement gesagt wurde "Roter Hintergrund?" -> "Ja", dass ich natürlich NUR dann auch den Hintergrund Rot mache.

Habe mein Buch mal konsultiert aber da steht - zumindest für mich - nichts erkennbar nützliches drin. Und bei Google finde ich auch keine vergleichbaren Abfragen. Dort finde ich nur Sachen wie [browser = msie] dann...

[globalVar = TSFE:tx_myextension_bgcolor = 1]
tt_content.stdWrap.innerWrap.cObject.default.10.value = <div style="background-color:red;" id="c{field:uid}"
[end]

Hoffe ihr könnt mir nochmals helfen 🙂

Vielen Dank!

caomhan ·

Also,

ich habe mein Problem etwas anders gelöst.
Daher gibt es meine Extension schon in Version 1 zum testen im TER (ka_browserexclusion). Mit der Extension wird jedem Inhalts-Element ein paar Select-Felder übergeben, in denen man auswählen kann für welche Browser der Inhalt angezeigt oder nicht angezeigt werden soll.

Mit der Extension kann man quasi bestimmte Inhalt für bestimmte Browser ausrichten. Funktioniert soweit auch super!

Das ganze ist jedoch noch (!) relativ simple nur per TypoScript gelöst. Aktuell wird beim einem verstecktem Element einfach das TYPO3-Wrap-DIV in

<div id="c123" style="display:none;">...

geändert. So wird der Inhalt entsprechend ausgeblendet. In den folgenden Versionen habe ich jedoch vor, den Inhalt nicht mehr "nur auszublenden" sondern entsprechend wenn er nicht angezeigt werden soll gar nicht mehr zu parsen. D.h. er soll gar nicht mehr generiert werden.

Wie würde ich da vorgehen?
Ich habe aktuell nur das statische Template in der setup.txt, die class.myextension.php benötigte ich ja für diese erste Version nicht mehr.

Wie kann ich nun sagen: Wenn für dieses Content Element Browser XY auf "off" ist, dann parse den Inhalt nicht mehr?

Über ein paar Teste mit der Extension würde ich mich freuen.

Viele Grüße,
caom

igorshmigor ·

Na, das ist doch tatsächlich eine nützliche Extension. Dann kann ich allen IE-Usern böse Sachen schreiben. 😉

Hier ist die Lösung (schon getestet und für gut befunden):

tt_content.if.value.field=tx_kabrowserexclusion_firefox
tt_content.if.equals=none
tt_content.if.negate=1
caomhan ·

🙂 Hehe...funkt wunderbar.

Geile Sache..echt easy 🙂 Wenn man weiß wie es geht.
Macht ja richtig spaß sich Extensions auszudenken.

Aber auf die Idee kam ich weil der IE6 immer mit den Social-Plugins von Facebock abgekackt ist (hatte auf einer Seite mal ca. 9 Comment Boxen - JavaScript Effekt Seite mit div. Inhalten) und dabei ging der IE6 in die Knie. Hätte ich dann einfach für den IE6 ausblenden können.

Und positivier Nebeneffekt wie du schon sagtest: Hallo lieber Besucher, du nutzt leider einen uralten Browser. Wie wärs mit: Firefox, Google Chrome, Safari? 🙂 Zitat von MS: Du trinkst ja auch keine 10 Jahre alte Milch, warum surfst du dann mit einem 10 Jahre alten browser?

Werd die EXT mal im TER Updaten 🙂

caomhan ·

BIT würde sich meines erachtens auch anbieten, oder?
Kommt beim nächsten Upgrade. Werde auch noch weitere Browser (iPhone etc.) mit einbinden.