Adventskalender 2008: Türchen 5
Die Extension die Tim gestern im Türchen 4 vorgestellt hat, kannte ich auch noch nicht. Für Euch habe ich heute wieder etwas TypoScript. Das Thema Semantic Web wird inzwischen immer interessanter, darum kam ich auf die Idee - fast allein mit TypoScript - das bekannte hCard-Microformat in TYPO3 zu integrieren.
Was wir dafür brauchen ist eine eigene kleine Extension, diese benötigen wir lediglich für eine einzige Zeile Code, welche in die Datei ext_tables.php kommt:
t3lib_extMgm::addToInsertRecords('fe_users');
Dazu jetzt noch das TypoScript:
temp.hcard = COA temp.hcard { wrap = <div id="hcard" class="vcard">|</div> 10 = IMAGE 10.file { import = uploads/pics/ import.field = image width = 40 params = class="photo" } 20 = TEXT 20.field = name 20.typolink.parameter.field = url 20.typolink.ATagParams = class="url fn" 30 = TEXT 30.field = company 30.wrap = <div class="org">|</div> 40 = TEXT 40.field = email 40.typolink.parameter.field = email 40.typolink.ATagParams = class="email" 50 = COA 50 { wrap = <div class="adr">|</div> 10 = TEXT 10.field = address 10.wrap = <div class="street-address">|</div> 20 = TEXT 20.field = city 20.wrap = <span class="locality">|</span> 30 = TEXT 30.field = zip 30.wrap = <span class="postal-code">|</span> 40 = TEXT 40.field = country 40.wrap = <span class="country-name">|</span> } 60 = TEXT 60.field = telephone 60.wrap = <div class="tel">|</div> } // fe_users dem type shortcut hinzufügen tt_content.shortcut.20.0.tables = fe_users // für Tabelle fe_users sagen wir jetzt noch wie es gerendert werden soll. tt_content.shortcut.20.0.conf.fe_users < temp.hcard
Und was hat uns das jetzt gebracht? Ganz einfach:
- Wir haben das Content Element "Insert Record" um die Tabelle fe_users erweitert.
- Wir haben mit dem TypoScript aus dem Object "temp.hcard" eine komplette hCard definiert, welche jetzt mit meinem fe_user Datensatz befüllt werden kann.
- Durch die CSS-Klassen kann man die Visitenkarte nun auch noch schön aussehen lassen.
Sind alle Daten vorhanden, könnte der erzeugte HTML-Code dann so aussehen:
<div id="hcard" class="vcard"> <img style="float:left; margin-right:4px" src="http://typo3weblog.de/frank.png" alt="photo of " class="photo"/> <a class="url fn" href="http://typo3weblog.de">Frank Nägler</a> <div class="org">TYPO3Weblog.de</div> <a class="email" href="mailto:frank.naegler@e-netconsulting.rl">frank.naegler@e-netconsulting.rl</a> <div class="adr"> <div class="street-address">Sievekingsallee 150b</div> <span class="locality">Hamburg</span> <span class="postal-code">22111</span> <span class="country-name">Deutschland</span> </div> <div class="tel">+49 (0)7000 623 45 37</div> </div>
Cool oder?
Die komplette Extension fn_hcard als T3X Export habe ich hier für Euch zum Download.



Dezember 5th, 2008 at 09:05
Coole Idee, werde ich auf jeden Fall mal ausprobieren.
Aber eine Anmerkung: Das Wrapping mit ist nicht ungefährlich. Um HTML-Konform zu bleiben, darf ich so nur eine einzige Karte auf der Seite anzeigen. (IDs müssen eindeutig sein)
An anderer Stelle hab ich mal den vorschlag gelesen, die ID auf “hcard-[name]” zu setzen. Wenn man dann nicht gerade anfängt, die Adresse mehrfach zu veröffentlichen, sollte alles funktionieren.
Kristian
Dezember 5th, 2008 at 13:48
Da gebe ich Dir natürlich recht, dies sollte auch nur exemplarisch zeigen, wie es geht. Mit einem dataWrap sollte man ohne Probleme den Namen oder die uid mit in die id des HTML-Elements aufnehmen können.
Dezember 6th, 2008 at 14:29
[...] Frank gestern die tägliche Dosis TS geblogt hat, werde ich heute etwas neues starten. Denn heute wollte ich mit euch außergewöhnliche [...]
Januar 23rd, 2009 at 12:06
Super Post – ich baue das gerade auf unserer Site ein.
Wenn ich richtig verstehe, nimmt “import.field = image” (9. Zeile) den Wert der im Datenbankfeld “image” der jeweiligen Person in der Tabelle fe_users hinterlegt ist und sucht dann nach diesem Dateinamen (z.B. benutzerportrait1.jpg) in “uploads/pics/” (definiert in 8. Zeile). Korrekt?
Ich meinem Fall besteht der Dateiname aus dem Inhalt des Felds “kundennummer” PLUS der Erweiterung “.jpg”. Das heißt wenn z.B. die Kundennummer “12345″ ist, dann wäre der Dateiname “12345.jpg”.
Kann ich über Typoscript definieren, dass das “.jpg” angehängt wird?
Januar 25th, 2009 at 17:33
Das ist eine gute Frage. Ich denke irgendwie geht es, aber ich bin mir grad nicht sicher, wie man die Strings zusammen bekommt. Denke ein dataWrap könnte klappen, also sowas:
10.file.dataWrap = uploads/pics/{fieldname}.jpg
Oder so in der Art.