TYPO3 MailForm Validierungs-Probleme wegen Komma

19. September 2011 in TYPO3 von Leo

Vor kurzem bin ich wieder über das Problem gestolpert. Hat man in der standard TYPO3 MailForm Kommas in den Labels angegeben, z.b. “Name, Vorname”, so funktioniert die ganze MailForm nicht mehr da die Validierung scheitert.
Grund dafür ist das JavaScript, welches durch das Komma ins stolpern kommt.

Die einzige mir bekannte Lösung ist entweder auf eine andere Extension umzusteigen, oder einfach keine Kommas zu nutzen.

Hier findet ihr auch noch kurz etwas dazu: Klick

Subqueries in TYPO3 mit TypoScript

20. Januar 2011 in TYPO3 von Leo

In TYPO3 lassen sich per TypoScripts normale Subqueries bilden, wie man sie aus MySQL kennt. Das ganze lernte ich im Zusammenhang mit einem RSS Feed, welchen ich für einen Kunden erstellte. So musste ich mit einer ID welche ich zu beginn über eine Variable von RealURL erhielt in grossen mm_Tables nach nach weiteren ID’s suchen, mit welchen ich dann zum Ziel kam.

Für solche grosse Sprünge in Tabellen nutzten wir dann Subqueries, sozusagen Queries in Queries, welche bis ins unendliche verschachtelt werden können (Achtung Ladezeiten!).

elementxy = CONTENT
elementxy {
        # Die Tabelle die durchsucht wird
        table = tx_extension_unsere_tabelle
        select {
            andWhere {
                # Optional: Eine Variable welche wir mitbekommen (get)
                data = GP:tx_extension_pi1|showUid
                insertData = 1
                wrap = uid IN (SELECT uid_local FROM tx_extension_unsere_tabelle_auth_mm WHERE uid_foreign IN (SELECT uid_foreign FROM tx_extension_unsere_tabelle_head_mm WHERE uid_local = |))
            }
            # Der Sysfolder mit den Datensätzen
            pidInList = 1234
            orderBy = crdate DESC
            max = 15
        }

        renderObj = COA
        renderObj {
            # Das Feld welches vom SELECT ausgewählt wird
            field = title
            # Das Resultat wird gewrappt
            wrap = <item>|</item>
       }
}

Was wird also gemacht?
Zuerst geben wir die Tabelle an welche wir mit dem normalen SELECT auswählen, also SELECT … FROM . Welche Spalte wir ins SELECT werfen wird weiter unten im renderObj.field bestimmt, unser normales SELECT würde also so aussehen:

SELECT title FROM tx_extension_unsere_tabelle ...

Das ist natürlich noch nicht alles. Nach dem normalen SELECT geht es weiter mit dem andWhere aus unserem TypoScript Code. Dieses andWhere Statement hängt eigentlich nur ein WHERE an unseren bisherigen Code und wird dann mit dem Rest was im andWhere steht weitergeführt. Deshalb steht im andWhere auch nicht noch ein SELECT oder ähnlich am Anfang.

Nachdem unser Query mit den Subqueries gebildet wurde, wird mit pidInList die ID unseres Sysfolders angegeben, also der Sysfolder wo die Datensätze gespeichert sind, welche wir hier benötigen. OrderBy und Max sind normale SQL Statements, welche sicherlich jedem bekannt sind.

Danach wird unser Resultat gerendert und in den Wrap geschrieben (dort wo die Pipe “|” ist), wir können das ganze noch z.B. mit HTML Code wrappen.

Indexed Search installation und konfiguration

5. November 2010 in TYPO3 von Leo

Viele haben anscheinend Probleme mit Indexed Search, der TYPO3 Sucherweiterung. Hier nun ein einfach erklärtes Tutorial für die Installation und Konfiguration von Indexed Search, Schritt für Schritt.
1. Installieren der Extension über den Extension-Manager (da es sich hier um eine System Extension handelt ist sie bereits vorhanden).
2. Kopieren des Templates aus dem Verzeichnis “typo3/sysext/indexed_search/pi/indexed_search.tmpl” nach “fileadmin/templates/ext/indexed_search.tmpl” (Pfad kann aber auch frei gewählt werden, jedoch sollte das Template nicht im typo3/ Verzeichnis sein da es ansonsten bei einem Update überschrieben wird!).
3. Nun auf der obersten Seite ins TypoScript Setup folgenden Code einfügen:

#################################
# Indexed Search aktivieren
#################################
config.index_enable = 1

Dieser Code aktiviert Indexed Search und würde gleich mit dem caching beginnen. Wir benötigen jedoch noch zwei Marker in unserem Template (eigentlich freiwillig, aber empfohlen), welche den zu cachenden Bereich begrenzen, also den Bereich den die Suche dann auch durchsucht und in den Suchergebnissen widerspiegelt.
4. Also fügen wir folgende zwei Marker ein, welche unseren Inhalt umschliessen:

<!--TYPO3SEARCH_begin-->
...
<!--TYPO3SEARCH_end-->

5. Nun sollten die Seiten beim ersten Aufruf für indexed search gecacht werden. Dies kann man im Modul “Info” im Backend überprüfen. Beim Dropdown oben “Indexed Search” auswählen und links im Seitenbaum auf die oberste Seite klicken. Ist nach einem Seitenaufruf über das Frontend nun die Seite gecacht worden sieht man nun eingen kurzen Ausschnitt des gecachten Inhalts.
6. Nun wird im TS Template noch folgender Code im Setup benötigt, welcher noch etwas abgeändert werden muss:

config.language = de
config.locale_all = de_DE
config.sys_language_uid = 0

config.index_externals = 1
# Anzahl der anzuzeigenden Resultate pro Seite
plugin.tx_indexedsearch._DEFAULT_PI_VARS.results = 10
plugin.tx_indexedsearch {
  # ID der obersten Seite
  search.rootPidList = 2
  show.rules = 0
  show.advancedSearchLink = 0
  show.L1sections = 0
  templateFile = fileadmin/templates/ext/indexed_search.tmpl
  _DEFAULT_PI_VARS.lang = 0
  browseBoxWrap = <div class="browsebox">|</div>
  pageWrap = <span>|</span>
}

So weit so gut, Indexed Search wurde nun eingerichtet und läuft hoffentlich!

Pagebrowser (umblättern) funktioniert nicht:

Falls der Pagebrowser (also das Umblättern von Seiten bei Suchergebnissen) nicht funktioniert, rate ich jedem mal die Extension “accessible_is_browse_results” anzusehen, welche das ganze sehr wahrscheinlich wieder funktionstüchtig machen wird. Man kann das ganze jedoch auch ohne zusätzliche Extension gerade biegen, der Fehler wird durch das Umblättern per JavaScript ausgelöst, aber mehr dazu vielleicht mal später.

Plugin per TypoScript platzieren

1. Oktober 2010 in TYPO3 von Leo

Neben dem hinzufügen von Plugins als normale Inhaltselemente, ist es auch Möglich Plugins über TypoScript zu platzieren.
Um ein Plugin per TypoScript zu platzieren benötigt man nur wenig Zeilen oder gar nur eine Zeile, welche man ins Setup seines Templates (TYPO3 Modul: “Template”) einfügt. Je nachdem wo das Plugin erscheinen soll platziert man es im Setup eines Templates einer Seite oder eben nicht.

Hat man templavoila installiert, findet man standardmässig so etwas vor:

page = PAGE
page.10 < plugin.tx_meineextension_pi1

Mit der zweiten Zeile TypoScript wäre das Plugin dann auch wirklich platziert worden.
Wer das ganze jedoch in einem TS Object Path Element (lib.) einfügen will, benutzt folgendes:

lib.beispiel = USER
lib.beispiel < plugin.tx_meineextension_pi1

Eigentlich ganz simpel.
Falls das Plugin nicht gecacht werden soll, verwendet man einfach folgendes:

lib.beispiel = USER_INT
lib.beispiel < plugin.tx_meineextension_pi1

Dies wird z.B. verwendet bei Zufälligen Inhalten, welche ja wechseln sollen, sobald man die Seite neu lädt.

Doxygen: Dokumentation aus Quellcode generieren

9. August 2010 in Java, PHP, Tutorials von Leo

Heute habe ich mir bei der Arbeit das Programm “Doxygen” angeschaut, welches wir nun nach guten Ergebnissen, wahrscheinlich immer nutzen werden. Doch was ist Doxygen?
Doxygen ist ein Programm welches in C++ geschrieben ist und lokal ausgeführt werden kann, um aus Quellcode Dokumentationen zu erstellen. Das Programm scannt die Dateien welche sich in einem ausgewählten Verzeichnis befinden und listet die Funktionen (etc.) auf und liest die Kommentare zu den Funktionen, welche z.B. eine Beschreibung, einen Autor oder andere beinhalten.

Vor allem für grössere Projekte ist dieses Programm meiner Meinung nach sowieso Pflicht, um die Übersicht auf Funktionen zu behalten und auch schnell nachschlagen zu können, vor allem halt auch als nicht beteiligter oder “Neuling” im Projekt.

Doxygen generiert uns also mit dem “Doxywizard” z.B. mehrere HTML-Dateien, welche wir dann gemütlich auf z.B. unseren Web-Server hochladen können.

Doch Doxygen kann nicht nur für PHP Projekte verwendet werden, nein, Doxygen verwendet viele verschiedene Programmiersprachen. Die aktuell Unterstützten Sprachen sind folgende: C++, C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors), Fortran, VHDL, PHP und C#.

Um Doxygen richtig verwenden zu können, muss der eigene Code Kommentiert werden (am besten in englisch). Dies sieht dann z.B. so aus:

/**
* Beschreibung
*
* @author Max Mustermann
* @since Version 1.0
*
* @param string $string1 beschreibung
* @param bool $string2 beschreibung
* @return string beschreibung
*/
function something($string1, $string2) {
  return $stringX
}

All das wird dann von Doxygen gelesen und so ins Resultat, also die Dokumentation eingefügt.

Hier könnt ihr euch Doxygen herunterladen.

Als Beispiel für so eine Dokumentation, hier unsere öffentliche 4eyes API: www.api.4eyes.ch

Schnupperlehrling Nr. 1

18. Januar 2010 in Allgemein von Leo

Auf den August 2010 bekommt 4eyes wieder Zuwachs – ein neuer Lehrling kommt ins Team! Dieser wird dann mein heiss erwarteter “Unterstift” :)
Letzte Woche war Davide hier, ihn kannte ich bereits vor seiner Schnupperwoche, da wir mal zusammen zur Schule gingen.
Doch auch wenn ich ihn schon kannte, war es auch für mich ein völlig neues Erlebnis, jemanden gleichaltriges dabei zu haben. Ausserdem freue ich mich dann darauf meinem Unterstift alles zu zeigen und ihn in seine neue Arbeitswelt einzuführen.

Die Woche

Da ich am Montag dem 12. Januar nicht im Geschäft war weil ich die Modulprüfungen absolvieren musste, erlebte ich Davide’s ersten Tag nicht. Trotzdem hat er ihn, wie ich gehört habe gut gemeistert.
Am Dienstag, dem zweiten Tag, arbeitete er fleissig an Templates für eine Homepage. Dies erledigte er fast alleine und vor allem sehr eigenständig, nur teilweise fragte er Alessandro um Hilfe, wenn es CSS Probleme gab.

Am Freitag erhielten Davide und ich dann einen Auftrag von Markus, welchen wir zusammen erledigen konnten. Wir mussten auf fast all unseren TYPO3-Installationen, welche wir für Kunden gemacht hatten, die Extension “Caretaker” installieren (mehr dazu folgt noch). Dies erledigten wir in grossartigem Teamwork wie ich fand, dies war auch nötig, da dies eine rechte Fleissarbeit war, wie Markus meinte.

Danke für die Interessante Woche :)

Erstellen von grösseren Emoticons in MSN

5. November 2009 in Allgemein, Internet, Software von Leo

Wer sich ein schönes Emoticon, also ein Smiley für MSN erstellt hat, oder eins importieren will, nervt sich wahrscheinlich darüber, dass die maximal grösse nur bei 19 x 19px liegt. Jedoch gibt es einen einfachen Trick um grössere Emoticons zu erstellen, die bis zu 40 x 40px gross sein können. Um dies zu erledigen müsst ihr wie folgt vorgehen. Nehmt euer Smiley und speichert es ins .gif Format ab. Das Smiley sollte jedoch nicht all zu gross sein (50 x 50px reichen). Nun müsst ihr euch das Programm “Microsoft GIF Animator” herunterladen (Link am ende des Artikels). Wenn ihr nun euer .gif habt, importiert ihr es in den GIF Animator (hineinziehen geht am schnellsten). Kopiert es 2 mal hinein, und macht danach im Tab “Animation” ein Häckchen unter “Looping” und “Repeat forever”. Nun wird MSN eine Animation vorgetäuscht, welche eigentlich aus den selben Bildern besteht und sie nie verändert. Nun könnt ihr das Smiley ganz normal in MSN Hinzufügen, und euch über das echt grosse Smiley freuen. Das einzig nervige ist hierbei jedoch, dass GIF nicht gerade des schönste Bildformat ist :-)

Tipps & Tricks zu Magento #1

7. Oktober 2009 in Allgemein, Magento von Leo

Magento – Tipps & Tricks

Magento ist ein Open Source E-Commerce CMS, mit welchem man tolle Onlineshops erstellen kann. Magento ist jedoch noch in den Kinderschuhen und deshalb manchmal zu beginn etwas tückisch, da man entweder im Internet kaum Hilfe findet, und da einige Sachen noch etwas kompliziert sind, vor allem für Leute die weniger Erfahrung mit HTML und Co. haben.