[TYPO3-german] WG: Tip zu mehrsprachigen Extensions

Michael Pohlers pohlers at silpion.de
Thu Jul 20 14:56:27 CEST 2006


Das läuft nun, ich habe es tatsächlich in das falsche locallang.xml
geschrieben. Ich weiß, ganz schön blöd....

Und nun hoffentlich nur noch eine letzte Frage:

Wieso wird dies:

$markerArray['###FORM_OPEN###'] = "<form
action='".$this->pi_getPageLink($GLOBALS['TSFE']->id)."' method='POST'
name='data'>";

$markerArray['###CHECKBOX###'] = '<input type="checkbox" name="activate"
value="true" '.$checked.' onClick="my_check();">';

später nicht ersetzt??? Das macht man wahrscheinlich nicht so... aber soll
ich bloß "$this->pi_getPageLink($GLOBALS['TSFE']->id)" ins Template bekommen
und $checked läuft natürlich auch nicht im Template....Wenn ich dich richtig
verstehe, muss ich dann mit subparts arbeiten, oder? Ich probiere einfach
mal...

Aber $markerArray['###LABEL_FIRST###'] = $this->pi_getLL('label_first');
funktioniert perfekt, danke....

Deine Basics haben mir sehr geholfen. Für alle anderen die die gleichen
Probleme wie ich haben, habe ich auch noch diese Seite gefunden: 

http://wiki.typo3.org/index.php/Extension_Development%2C_using_HTML-Template
s

Gruß,

michael

-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.netfielders.de
[mailto:typo3-german-bounces at lists.netfielders.de] Im Auftrag von Andre
Dittmar
Gesendet: Donnerstag, 20. Juli 2006 14:17
An: pohlers at silpion.de; German Typo3 Userlist
Betreff: Re: [TYPO3-german] WG: Tip zu mehrsprachigen Extensions

Hallo Michael,

>> $markerArray['###LABEL_FIRST###'] = $this->pi_getLL('label_first');
>> bekommt keine Daten aus der locallang.xml und ich verstehe nicht wieso?

Wenn Du in Deiner locallang.xml ein solches Label hast, sollte dieses auch
eingesetzt werden. Du musst das Label halt für alle Sprachen anlegen, wobei
ja "default" immer schon vorhanden ist und i.d.R. die englische
Sprachversion ist (oder sogar sein sollte?).
Für die deutsche Version legst Du Dir dann halt einen neuen Node analog zu
der default-Variante im XML-File an. 

>> Aber mir kommt es auch so vor als ob die vom kickstarter angelegte
>> locallang-xml-Datei auch nur für das Backend und nicht für das
>> Frontend-Plugin ist... Muss ich irgendwo anders ein neues locallang.xml
>> erstellen?

Im Hauptverzeichnis Deiner EXT gibt es eine locallang_db.xml, diese ist in
der Tat für die Formulare im Backend gedacht. Der Kickstarter legt Dir im
Verzeichnis pi1 aber auch eine locallang.xml an, diese ist ausschliesslich
für die Sprachversionen der Ausgabe im Frontend gedacht (zumindest handhabe
ich das so).


>> Und die zweite Frage: Angenommen ich bekommen den markerArray gefüllt,
wie
>> sage ich Typo3, dass diese dann in das Template eingestzt werden sollen?

Ok, hier mal ein paar Basics:

1. Templatefile in member variable laden,z.B.:
$this->templateCode =
$this->cObj->fileResource($this->conf['templateFile']);
// $this->conf['templateFile'] ist eine Angabe im Typoscript-Setup für
// die Extension, da steht der Pfad zum Templatefile drin.
// z.B: fileadmin/templates/tx_myextension.html

2. Teilbereich für des Templatefiles in Variable laden:
$tmplForm = $this->cObj->getSubpart($this->templateCode,
'###TEMPLATE_FORM###');
// Hiermit lädst Du eine Teilbereich Deines Templates in eine Variable. Der
// Teilbereich enthält hardcodiertes HTML und Marker in der Form
// ###LABEL_FIRSTNAME###. Diese Marker sollen durch Inhalte z.B. aus der DB
// oder aus einem locallang.xml ersetzt werden.

3. Array mit Werten befüllen
$markerArray['###CLASS###'] = $this->class;
$markerArray['###LABEL_FIRSTNAME###'] = this->pi_getLL('label_firstname');
$markerArray['###VALUE_FIRSTNAME###'] = $result['first_name'];
// usw...
// Die Marker können halt mit beliebigem Content gefüllt werden, so hast Du
// nachher für jeden Marker in dem Array einen entsprechenden Wert
zugewiesen.

4. Dein Teilbereich des Templates mit den Werten füllen:
$content = $this->cObj->substituteMarkerArray($tmplForm,$markerArray);
// Nun wird der eigentliche Content erzeugt und einer Variablen zugewiesen.
// Dies kann nun per return ausgegeben werden.


>> Sorry, aber ich bekomme es irgendwie nicht hin, aber jeder Anfang ist
>> schwer...Ich weiß auch immer nicht ob es schon vorgefertite Funktionen in
>> der Typo3 Api gibt oder ob man das alles selber programmieren muss....

Is klar :-) Du kannst Dir mal die Extension Extension Development Evaluator
(extdeveval) installieren. Die installiert neben einem Modul mit nützlichen
Developer-Funktionen auch eine Leiste mit Links zu den wichtigsten
API-Dokumentationen. Ich hab die bei mir im Firefox in einem Bookmarkfolder
und kann da immer mal wieder nachschauen. Das sieht dann für die
Templatefunktionen z.B. so aus:
http://web1.hotserved.de/typo3conf/ext/extdeveval/apidocs/tslib_content_api.
html
(Schau mal unter "HTML template processing functions", da wird Dir dann
geholfen)


>> Vielleicht noch ein bißchen Quellcode:

Hilft im Moment nicht wirklich weiter ;-)


>> Wie geht es nun weiter? Wenn es nichts fertiges gibt, würde ich per
eigener
>> Programmierung in $tmpl nach den Markern suchen und diese mit
erreg_replace
>> ersetzen...

Da würde auch ein str_replace() reichen, das ist glaub ich schneller und
performanter. Aber das kann man sich eigentlich schenken, denn... siehe
unten:


>> Könnte mir aber gut vorstellen, dass da auch vorgefertigte
>> Klassen gibt.

Ja, die gibt es natürlich, siehe oben die API... Typo3 ist ja eigentlich
mehr als ein CMS: Es ist eigentlich ein Framework, also ein Baukasten der
nur in 99% der Fälle als CMS genutzt wird. Typo3 bietet Dir also schon für
so ziemlich alle Anwendungen Funktionen die bereits sich bewährt haben und
bedingt durch die grosse Community ständig auf Verbesserungen und Bugfixes
kontrolliert werden.


>> tt_news ist so riesig und verwirrend für Anfänger, ich meine
>> da ist schwer abzukupfern, aber ich probiere es weiter...

FullACK, tt_news ist vielleicht ein schlechtes Beispiel in dem Zusammenhang,
da es recht komplex ist und durch die Flexibilität in der Konfiguration auch
recht massig und unüberschaubar ist :-)


Ich hoffe ich konnte Dir ein wenig weiterhelfen! Also am besten wird es sein
wenn Du Dir mal die extdeveval installierst, das hilft auf jeden Fall schon
weiter. Vielleicht hilft Dir auch in einer ruhigen Minute einen Blick in die
TYPO3 Coding Guidelines und in die TYPO3 Core APIs Dokus weiter?


Beste Grüsse,
Andre

---
Andre Dittmar | hot bytes
 
Elbinger Straße 24
74226 Nordheim
Germany 

Fon : +49 (0) 71 33 / 20 46 43
Fax : +49 (0) 71 33 / 20 46 42
D1  : +49 (0) 1 60 / 97 22 03 03

Web : http://www.hotbytes.de
Mail: mail at hotbytes.de


____________
Virus checked by G DATA AntiVirusKit
Version: AVK 16.8612 from 20.07.2006
Virus news: www.antiviruslab.com

_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.netfielders.de
http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-german




More information about the TYPO3-german mailing list