29.04.2016

Überschriften in Weblication formatieren


Weblication bietet von Haus aus keine Möglichkeit, Überschriften ohne wysiwyg-Editor zu formatieren.
Mit einem kleinen javascript ist dies ohne weiteres möglich.

Das Problem

Überschriften sind im Weblication BASE Projekt nur dann im Textfeld formatierbar, wenn dieses Feld als wysiwyg-Feld definiert wurde. Das bringt aber meist an anderer Stelle Nachteile mit sich, beispielsweise wenn die Überschrift auch als meta-Title der Seite verwendet werden soll.

Auch die Definition neuer CSS-Only-Varianten ist häufig keine befriedigende Lösung, da sich für die Variante definierte Formatierungen immer gleich auf den ganzen Textinhalt des h* Texts auswirken.

Die Lösung - *per CSS-Only und javascript*

Als Ansatz verfolgen wir eine reine CSS-Only Version. Dies hat den Vorteil, dass außer der design.css keine weitere Datei angepasst werden muss.

Schritt 1: *Einbau jQuery Plugin*

Zuerst erweitern wir die design.js um folgenden Skript-Teil.

[design.js] jQuery Plugin für das Formatieren von Überschriften

(function( jQuery ){
   jQuery.fn.colorHeadline = function() {

      // Wenn sich die Datei im Editor befindet, wird die Aktion nicht ausgeführt
      if(typeof wEditor == 'object'){
  return false;
      }
    
      // Der Text der Überschrift
      var text = this.get(0).innerHTML;

      // Das Zeichen, welches ersetzt werden soll.
      var substituteChar = '*';

      // Das Tag, welches den zu formatierenden Text umschliesst. Sollte aus Gründen der Standardkonformitaet ein inline-Element sein.
      var substituteTag = 'span';
      
      // Die Klasse, welche dem umschliessenden span-Element zugewiesen wird
      var substituteClass = 'headlineColorHighlight';

      // Ersetzung
      var colorText = text.replace(substituteChar,'<'+substituteTag+' class="'+substituteClass+'">').replace(substituteChar,'</'+substituteTag+'>');
      
      // Neuen Text zuweisen
      this.html(colorText);
   }; 
})( jQuery );

Schritt 2: *CSS-Only Variante definieren*

Nun wird in der design.css die CSS-Only Funktion mittels -w-jquery erweitert.

[design.css] jQuery Plugin für das Formatieren von Überschriften

.elementHeadline {margin:auto;}

wird zu:

.elementHeadline {margin:auto;-w-jquery:jQuery(this).colorHeadline()}

Schritt 3: *CSS Klasse für Formatierung definieren*

Im letzten Schritt wird nun noch die gewünschte Formatierung für die Klasse definiert:

[design.css] Formatierung der Klasse

.headlineColorHighlight  {color:rgb(105,0,0)}

Sicher auch interessant