Zum Inhalt springen

Erweiterung der Klasse wird ignoriert

Erstellt am 1. Mai 2006 · 7 Antworten · letzte Antwort am 2. Mai 2006

Tags: Frage

t-a ·

Hallo,

Ich habe versucht eine Extension zu schreiben, welche die Darstellung der Filelinks (Dateiliste mit Icon und Größenangabe) abändern soll.

Es geht eigentlich bei der Extension darum die Klasse tx_cssstyledcontent_pi1 welche sich in typo3\sysext\css_styled_content\pi1\class.tx_cssstyledcontent_pi1.php befindet und die Funktion render_uploads($content,$conf) enthält zu erweitern.

Die direkte Manipulation der Funktion innerhalb der PHP-Datei hat auch wunderbar funktioniert. Jedoch die Extension zeigt keine Auswirkung auf die Darstellung.

Ich werde nun einfach mein vorgehen Schritt für Schritt schildern und wäre über Hinweise dankbar:

1. Erstellen des Grundgerüsts mittels dem Tool Kickstarter. Habe damit eigentlich nur die ext_emconf und Ordnerstruktur autmatisch erzeugt.

2. ext_localconf.php angelegt mit folgendem Inhalt:

$TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/css_styled_content/pi1/class.tx_cssstyledcontent_pi1.php"]
=t3lib_extMgm::extPath($_EXTKEY)."class.ux_modfilelist_pi1.php";

3. class.ux_modfilelist_pi1.php angelegt, welche nun Folgendes enthält:

class ux_modfilelist_pi1 extends tx_cssstyledcontent_pi1 {

function render_uploads($content,$conf)	{

/* Hier nochmals der Code, jedoch mit den spezifischen Änderungen */

}

Die Extension wurde mir im ExtMngr angezeigt und ich konnte diese auch installieren.
Ein

 echo "Ich wurde inkludiert!";

in der ersten Zeile der class.ux_modfilelist_pi1.php wurde auch auf den Seiten angezeigt.

Es ist durchaus möglich, dass ich etwas sehr elementares falsch gemacht habe, da dies meine erste Extension ist.

Danke im Voraus,
Torsten.

steffenk ·

was Dir fehlt, ist eine Anweisung per Typoscript, die Uploads auch von Deiner Extension rendern zu lassen.
Ein Blick in den Object browser hilft Dir, die Stelle zu finden:

tt_content.uploads.20.userFunc = tx_cssstyledcontent_pi1->render_uploads
t-a ·

Danke für den Tip.

D.h. ich müsste in meinem Fall die userFunc folgendermaßen setzen ?

tt_content.uploads.20.userFunc = ux_modfilelist_pi1->render_uploads

Nachdem ich dies in mein Template-Setup eingefügt habe wird die Filelist nun gar nicht mehr dargestellt...
Zum test habe ich mal eine einfach echo-Anweisung anstatt dess eigentlichen Codes der render_uploads-Funktion eingefügt. Wird auch nicht angezeigt.

steffenk ·

Mein Hinweis ist unsinnig, vergiss das. sry.

Was bei Dir nicht stimmt, ist t3lib_extMgm::extPath($_EXTKEY)
$_EXTKEY ist ja nicht definiert, hier solltest Du den Key Deiner Ext eintragen.

Vielleicht überlegst Du Dir, ob nicht Hook eine bessere Alternative ist - XCLASS lässt ja nur ein einmaliges einbinden zu, die Verkettung mit ux_ux_ux_... ist doch zu unübersichtlich und ausserdem nicht geeignet für öffentliche Extensions.

Gerade die css_styled_content hat hier einen Hook eingerichtet, so das dieses wohl die beste Möglichkeit darstellt.

t-a ·

Daran liegt es leider auch nicht. Habe dort eigentlich den Extension-Key stehen .. ("mod_filelist").

Den Hook-Vorschlag werde ich mir einmal näher betrachten.

Die ursprüngliche Aufgabenstellung war lediglich, beim "Layout 1" anstatt den Dateinamen die Datei-Beschreibungen anzeigen zu lassen. Habe mittlerweile herausgefunden, dass der wohl einfachste Weg eine Anpassung mittels TypoScript wäre. Aber da ich die Extension schon geschrieben habe, diese aber nicht funktioniert, würde ich sie doch gerne mal zum laufen bringen.

Was ich aber immer noch nicht ganz herasgefunden habe: Kann man die Layouts der FileList anpassen?

steffenk ·

das lässt sich über TS machen.

Ich habe mal folgendes benutzt:

tt_content.uploads.20.layout.global=<div class="filelinks filelinks_layout_###LAYOUT###">###FILE###</div>
tt_content.uploads.20.layout.file=<div class="###CLASS###"><span>###ICON###<a href="###URL###">###DESCRIPTION###</a> ###FILESIZE###</span></div>
t-a ·

Das wäre perfekt... Danke.

Fragen:

1. Woher weiß ich, dass ich genau über ...layout.file=... das aussehen verändern kann? Nimmst du die Informationen aus TSref? Woher weiß ich, welche Marker zur Verfügung stehen bzw. dass überhaupt Marker hier verwendet werden können ?
2. Habe zum Test das TS in mein Template-Setup eingefügt, aber geändert hat sich an der Darstellung nichts... Was fehlt noch?

Danke für die Beantwortung schon mal im Voraus,
Torsten.