Syntax-Hervorhebung oder -Highlighting meint, bestimmte Wörter und Variablen-Arten eines Programm-Codes je nach Bedeutung in verschiedenen Farben lesbarer darzustellen. Viele Editoren, die Programmierer nutzen, unterstützen Code-Hervorhebung und variieren die Darstellung je nach Programmier-Sprache. Das Plugin SyntaxHighlighterGhsvs hilft beim Anzeigen von "gehighlightetem Code" in Joomla-Beiträgen.

Zugegebenermaßen verwendet das Plugin namens Content - Syntax Highlighter by GHSVS.de (PLG_CONTENT_SYNTAXHIGHLIGHTERGHSVS) als Basis einen JavaScript-Dinosaurier, nämlich die Syntaxhighlighter-Bibliothek von Alex Gorbatchev in Version 3.0.90, aber ich wollte unbedingt folgende Features im Plugin für meine eigene Seite haben:

  • Zeilennummern vor den Zeilen, da ich mich in meinen codeschnipsel-begleitenden Texten gerne auf Zeilennummern beziehe.
  • Hervorhebung/Akzentuierung einzelner Zeilen, um Lesern das Suchen und Finden von Schlüsselzeilen zu erleichtern.

Diese Dinge sind mir wichtiger als um jede Millisekunde beim Laden meiner Webseite zu feilschen.

Voraussetzungen/Einschränkungen

Das Content-Plugin und das zugehörige Editor-Button-Plugin erwarten, dass diese beiden Ordner für PHP bzw. Joomla beschreibbar sind, um dort Hilfsdateien abzulegen:

  • /media/plg_content_syntaxhighlighterghsvs/js/_combiByPlugin/
  • /media/plg_editors-xtd_syntaxhighlighterghsvs/html/

Bei einer "stinknormalen" Joomla-Installation ist das der Fall und man kann sich beruhigt zurücklehnen. Die Ordner werden bei Installation der Erweiterungen angelegt.

Das Editor-Button-Plugin funktioniert nur im Backend. Oder anders: Da ich Frontend-Editing "nicht mag" und keine meiner Joomla-Installationen das aktiviert hat, habe ich den Button dort nie getestet. Wenn wer Interesse hat und das ausprobieren möchte, bin ich gern bereit, ein Installationspaket bereitzustellen, das diese Backend-Restriktion nicht hat. Wenn's erfolgreich getestet wurde, übernehme ich das Frontend-Feature auch gerne in's nächste, offizielle Release.

Terminologie

Damit man die Begriffe Brush und Alias mal gehört hat. Braucht man nicht wirklich wissen, wenn man sich den Editor-Button installiert. Hier geht's zum Download: plg_editors-xtd_syntaxhighlighterghsvs

Brushes und Aliase

Brushes

Wie oben schon gesagt, heben Highlighter-Funktionalitäten je nach dargestellter Programmiersprache bestimmte Bestandteile anders hervor. Dafür benötigt das Plugin unterschiedliche JavaScript-Dateien, die diese Formatierungsanweisungen enthalten. Das sind die so genannten Brushes oder Brushdateien. Diese kann man sich bei Interesse hier anschauen (die Dateien, die mit shBrush beginnen).

Aliase

Jetzt muss man dem Plugin aber noch mitteilen, welches Brush es für einen formatiert anzuzeigenden Code laden soll. Dafür gibt es die Aliase, die man dem PRE-Tag, der den zu "highlightenden" Code umschließt im class-Attribut mitgibt. Beispiel:

<pre class="brush: js">
    HIER DANN DER ZU HIGHLIGHTENDE CODE
</pre>

Die Magie im Beispiel ist das class="brush:js" in Zeile 1, das das Alias js verwendet. Das führt dazu, dass der Code innerhalb des PRE-Tags als JavaScript-Code formatiert wird und dafür von meinem Plugin die Brush-Datei shBrushJScript.js geladen wird.

Die Aliase werden immer in Kleinschreibung angegeben.

Viele der Brushes können durch mehrere, unterschiedliche Aliase angefordert werden. Hier eine Liste:

Liste von Brushes versus Aliase

AppleScriptapplescript
Bashbash
shell
sh
CSharpc#
c-sharp
csharp
ColdFusioncoldfusion
cf
Cppcpp
cc
c++
c
h
hpp
h++
Csscss
Delphidelphi
pascal
pas
Diffdiff
patch
Erlangerl
erlang
Groovygroovy
Haxehaxe
hx
JScriptjs
jscript
javascript
json
Javajava
JavaFXjfx
javafx
Perlperl
Perl
pl
Phpphp
Plaintext
plain
PowerShellpowershell
ps
posh
Pythonpy
python
Rubyruby
rails
ror
rb
Sasssass
scss
Scalascala
Sqlsql
TAPtap
Tap
TAP
TypeScriptts
typescript
Vbvb
vbnet
Xmlxml
xhtml
xslt
html
plist

Plugin-Konfiguration

Das Plugin bietet nicht alle Konfigurationsmöglichkeiten, die die Bibliothek von Alex Gorbatchev anbietet. Fragen Sie mich auf der GitHub-Projektseite meines Plugins oder per Kontaktformular, wenn Sie wissen wollen, wie sie weitere verwenden können oder händisch von Code-Block zu Code-Block globale Einstellungen überschreiben können.

Tabulator `Syntaxhighlighter Config`

CSS Stylesheet

Beeinflusst das Aussehen des dargestellten Codes, also z.B. schwarzer Hintergrund, weißer Hintergrund usw. Spielen Sie einfach rum. Siehe hierzu auch unten Überschrift Tabulator "Custom CSS".

Combine needed brushes in single file

Empfohlen: JA.

Auf ein und der selben Seite können diverse Brushes zum Einsatz kommen, z.B. ein Code-Block der PHP-Code anzeigt, ein weiterer, der JavaScript zeigt, ein weiterer für HTML.

Das führt dazu, dass neben den zwei Basis-Javascripten, die der Codehighlighter immer benötigt, drei weitere Brushes geladen werden müssen. Das Plugin fasst diese fünf JavaScript-Dateien in eine einzelne zusammen und speichert diese im Ordner /media/plg_content_syntaxhighlighterghsvs/js/_combiByPlugin/, um sie bei Bedarf wiederverwenden zu können. Das spart später Leistung, da die Einzeldateien nicht erneut zusammengesucht werden müssen.

Sie können den Ordner per FTP löschen, wenn Sie den Inhalt erneuern lassen wollen. Einen Knopf gibt es dafür nicht.

Active For Robots

Empfohlen: NEIN.

Im Normalfall ist es Quatsch das Plugin laufen zu lassen, wenn Suchmaschinen oder andere Bots die Seite besuchen. Die können mit dem formatierten Code eh nichts anfangen. In 2019 gibt es allerdings Gerüchte, dass Google irgendwann auch mal "JavaScript kann". Gibt's halt im Plugin diese Einstellung. Wozu auch immer gut ;-)

Strip end BR tags?

Voreingestellt: NEIN.

Staht sie auf JA, werden <br />-Tags am Ende der Zeilen entfernt. Ob auch "modernes" <br> entfernt wird, weiß ich nicht.

Tag Name

Ist unveränderlich eingestellt auf pre-Tags. Gemeint ist der den Code umgebende Block <pre class="brush:js">...</pre>.

[auto-links] (Clickable Links)

Empfohlen: NEIN.

Hat man A-Tags, also Links in seinem formatierten Code, möchte man die normalerweise nicht aktiv, also klickbar in der Code-Darstellung haben.

[quick-code] (Select by double click)

Durch Doppelklick auf einen Codeblock, kann der Besucher den ganzen Code "in einem Rutsch" markieren und so leichter rauskopieren.

[class-name]

Der den Code umgebende DIV-Container, der vom JavaScript on-the-fly erstellt wird, bekommt diese zusätzliche CSS-Klasse.

[gutter] (line numbers)

Zeilen-Nummerierung an/ausschalten. Ausgeschaltet wird man vermutlich eigenes CSS "nachschnitzen" müssen, weil der Code links "anklebt". Z.B. den Rahmen entfernen, der im Tabulator "Custom CSS" in einer der Regeln gesetzt wird, weil ich das hübscher finde ;-) Oder links ein Padding?

Tabulator `Custom CSS`

Hier findet man einige CSS-Regeln, die man eigentlich auch in seiner Lieblings-CSS-Datei unterbringen kann. Man kann voreingestellte Regeln deaktivieren, ergänzen, löschen oder eigene, neue erstellen. Es hängt einfach vom verwendeten Template, Bootstrap-Version etc. ab, welche man brauchen kann oder zusätzlich benötigt. Ausprobieren! Dafür gibt es die Active-Einstellung pro CSS-Regel.

Beachten Sie, falls Sie neue Regeln setzen, um das aktuell gewählte CSS StyleSheet zu überschreiben, häufig !important verwenden müssen, egal, ob Sie das mit den Plugin-Einstellungen versuchen oder in einer eigenen CSS-Datei..

Erweiterungs-Infos

Name

PLG_CONTENT_SYNTAXHIGHLIGHTERGHSVS

Beschreibung

Code-Schnipsel in Beiträgen können mit diesem kostenlosen Joomla-Plugin formatiert angezeigt werden. Unterstützt Zeilennummern und Hervorhebung von Zeilen.

Inspiriert durch

github.com/syntaxhighlighter

Download

Direkter Download oder zur Download-Seite

Updateserver-Unterstützung

Benachrichtigung im Backend über Aktualisierungen.

Sprachen

Sprache en-gb:

Projekt-Seite

Projektseite öffnen

Kommentare und Hinweise

Plugin-Installation setzt mindestens Joomla 3.9.8 voraus.

Dazu empfohlen: Editor-Button-Plugin (plg_editors-xtd_syntaxhighlighterghsvs)

Changelogs / Version-History

Changelogs-Seite öffnen

Allgemeiner Hinweis zu Erweiterungen und Code-Schnipseln

Verbesserungsvorschläge, Fragen und Feature-Wünsche sind willkommen.

Alle nicht explizit als fertige Erweiterung markierten Skripte und Codes von www.ghsvs.de dienen als Ansätze / Ideen für eigene Ausarbeitung. GHSVS bzw. die jeweiligen Autoren übernehmen keinerlei Garantien beim Einsatz Ihrer kostenlosen Erweiterungen, Programme, Codes und Skripte, helfen aber gerne bei Rückfragen, soweit zeitlich möglich.