Entwickler-Blog der cab services ag.

Willkommen auf unserem Entwickler-Blog!

In diesem Blog geht es darum, Know-how rund um TYPO3 und Websites in der Community zu teilen.

Wir schreiben über Tipps und Tricks zur TYPO3-Konfigurationssprache TypoScript, HTML/CSS, JavaScript-Anwendungen, SEO-Optimierungsmöglichkeiten, etc.

 

Viel Spass!


Mittwoch 5. Oktober 2016 erstellt von Megafry

BackendLayouts über PageTS erstellen/bearbeiten

In TYPO3 7.6 kann man neu auch über PageTS BackendLayouts erstellen oder bearbeiten. Der Vorteil ist beispielsweise, dass man diese in eine Extension auslagern und auch über git versionieren kann.

Als erstes erstellt man in seiner Extension oder alternativ auch im fileadmin ein neues Text-Dokument. 

In diesem Beispiel wird das PageTS global für das ganze TYPO3 definiert:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPageTSConfig(file_get_contents(\TYPO3\CMS\Core\Utility\ExtensionMana...

mehr

Freitag 30. September 2016 erstellt von Megafry

Das JSMENU

Das JSMENU ist ein weniger bekannter Menü Typ.

In diesem Beitrag will ich eine interessante Anwendung zeigen mit einem Inline Select Menü.

In meinem Beispiel habe ich eine Seitenstruktur erstellt um ein paar Autos zu referenzieren.

Diese ist in 3 Ebenen aufgeteilt:

  • Hersteller
  • Type
  • Modell

Mit weniger als 20 Zeilen TypoScript kann man jetzt ein Menu mit SelectBoxen erstellen, welche sich automatisch aktualiseren:

lib.jsmenu = HMENU
lib.jsmenu {
  special = directory
  special.value = 217
  1 = JS...

mehr

Freitag 23. September 2016 erstellt von Megafry

Save & Preview for Records

Um Redakteure die Möglichkeit zu geben über "Speichern & Anzeigen" einen Extension-Datensatz in der Vorschau zu sehen, gibt es in TYPO3 7.6  eine neue PageTS Eigenschaft namens "TCEMAIN.preview".

Um diese Option für seine eigenen Extension-Datensätze einzurichten, muss man das PageTS um folgende Zeilen erweitern:

TCEMAIN.preview {
    #table name
    tx_references_domain_model_references {
        previewPageId = 354
        useDefaultLanguageRecord = 0
        fieldToParameterMap {
            uid =...

mehr

Mittwoch 21. September 2016 erstellt von Megafry

Page TSconfig : Die Eigenschaft requires für Klassen

Mit der Version 7 von TYPO3 kommt die neue Eigenschaft „requires“ für RTE Klassen.

Im heutigen Beitrag werde ich die Anwendung der Eigenschaft am Beispiel eines Bootstrap-Buttons zeigen.

Für den Bootstrap-Button benötigt man mindesten 2 Klassen:

.btn        : Die Basisklasse.
.btn-*     : Für die Farben gibt es mehrere Klassen, z.B. btn-primary, btn-info etc.
.btn-lg    : Es gibt eine 3. Klasse für unterschiedliche Grössen (.btn-lg, .btn-sm, .btn-xs).

Das PageTS:

RTE.classes {
    btn-primary {
    ...

mehr

Freitag 26. August 2016 erstellt von Megafry

TYPO3 Filelinks erweitern mit Dateigrösse und Icon.

Heute gibt es mal wieder ein TypoScript-Snippet - dieses mal nicht von mir - sondern von dem Github-User gabrielRamaker.

Diese Woche erhielten wir eine Anfrage von einem Kunden, ob es möglich sei, wie bei dem file Links Element auch im normalen RTE-Text zu verlinkten PDF-Dateien deren Grösse darzustellen.

Die erste Lösung, die ich gefunden habe, war etwas veraltet und benötigte noch eine userFunc mit der über die PHP-Funktion filesize() die Grösse berechnet wurde.

Da aber TYPO3 seit der Version 6.0...

mehr

Freitag 19. August 2016 erstellt von Megafry

Letzte Anpassung von ???

Im heutigen Beitrag will ich euch zeigen, wie man mit TypoScript am Ende einer Seite das Datum der letzten Anpassung sowie den Namen des Redakteurs anzeigen kann.

Das Einfachste zuerstes:
Das Feld SYS_LASTCHANGED der Tabelle pages enthält das Datum der letzten Anpassung als Timestamp.

20 = TEXT
20 {
      data = page:SYS_LASTCHANGED
      strftime = %d. %b, %Y um %H:%M
}

Der Backend-User:
Nun, da wir das Datum haben, werden wir den für die Änderung verantwortlichen Backend-User ausfindig machen.

TYPO...

mehr

Freitag 22. Juli 2016 erstellt von Megafry

TCA: label_alt und label_userFunc

Letzte Woche habe ich eine kleine Extension geschrieben und Datensätze dafür erfasst.
Es gibt pro Tag 2 Preis-Werte die als Diagramm im Frontend ausgegeben werden.
Doch das Datum als Datensatz-Titel in der Listenansicht war nicht genügend aussagekräftig.

Heute will ich drei Lösungen teilen, wie man die Listenansicht erweitern/anpassen kann.

Lösung 1:

Über label_alt kann man zusätzliche Felder sichtbar machen.
Die zusätzlichen Felder müssen kommasepariert aufgelistet werden:

'label' => 'start_date',
'l...

mehr

Freitag 8. Juli 2016

Menu Wrapping

Heute will ich euch einen Einblick geben in die vielfältigen Möglichkeiten Menu-Elemente zu wrappen.

Mit einem Blick in die Tsref sieht man, dass es mehrere Wrap-Optionen gibt.
Um ein besseres Verständnis zu bekommen und den Überblick zu behalten, habe ich die Reihenfolge mit Tags nachgestellt:

<wrapItemAndSub>
   <allStdWrap: stdWrap>
      <allWrap>
         <beforeWrap/>
         <before/>
         <stdWrap2: stdWrap>
            <a Link>
               <linkWrap>
                  <stdWrap: stdWrap>
 ...

mehr

Freitag 1. Juli 2016 erstellt von Megafry

SEO: Breadcrumbs im RDFa-Format.

Heute gibt es ein TypoScript-Snippet, womit man eine Breadcrumb-Navigation im RDFa-Format generieren kann.

Die Struktur kann man auf der Seite schema.org finden.

Um die Meta-Eigenschaft "position" zu errechnen, wird in einer erster Phase über LOAD_REGISTER ein Wert definiert, welcher bei dem generieren eines Breadcrumb-Elements mit prioriCalc inkrementiert wird.

lib.BreadcrumbList = COA
lib.BreadcrumbList {
  10 = LOAD_REGISTER
  10 {
    Counter = 1
  }
  20 = HMENU
  20 {
    special = rootline
 ...

mehr

Freitag 24. Juni 2016 erstellt von Megafry

Menu-Element mit Thumbnail

Im heutigen Beitrag will ich ein TypoScript-Snippet mit euch teilen, dass das Menu-Element „Menu of Subpages“ um ein Bild aus den Seiteneigenschaften erweitert.


Die Bilder werden aus den Seiteneigenschaften geholt und auf ein einheltliches Format zugeschnitten.


Wenn kein Bild definiert ist, wird mit CSS ein grauer Kasten dargestellt. Das CSS habe ich am Ende des Blog-Eintrags angefügt.

tt_content.menu.20.1 {
  stdWrap.outerWrap = <div class="quicklinks_menu">|</div>
  stdWrap.required = 1 ...

mehr