Ein Freund und ich haben mal nach einem Syntax-Highlighter gesucht für das neue phpBB3 Board, allerdings nichts gefunden. Dadurch hab ich zwei Dateien angepasst bzw. modifziert, was dazu führt das GeSHi verwendet wird zum Highlighting. Wurde nur kurz getestet ob es geht ... daher wenn Fehler auftauchen, kann passieren


Aber nun hier meine Beschreibung wie ich das gemacht habe
-----------------------------------------------------------------------
Informationen:
Dieser MOD erlaubt es das Code-Highlighting komplett von GeSHi übernehmen zu lassen.
Allerdings wird das im Script hinterlegt und keine Modifikation am Eingabeformular eines Beitrages bewerkstelligt.
Erkennt GeSHi die Programmiersprache nicht, wird der Code als normaler Text in der Codebox dargestellt.
Beispiele: (ohne Leerzeichen dann bitte ...)
[ code=java ] System.out.println('hello world'); [ /code ]
[ code=php ] <?php echo 'hello world'; ?> [ /code ]
Vorrausetzungen:
- fehlerfreie Installation von phpBB3 (getestet mit 3.0.1)
- GeSHi Packet von http://qbnz.com/highlighter/ unter ./{FORUM_ROOT}/includes/geshi/ entpackt,
dass folgende Dateistruktur sich wiederspiegelt:- ./{FORUM_ROOT}/includes/geshi/geshi.php
- ./{FORUM_ROOT}/includes/geshi/geshi/*.*
- ./{FORUM_ROOT}/includes/bbcode.php
- ./{FORUM_ROOT}/includes/message_parser.php
Pfad zu GeSHi kann an angegebener Stelle (im Script) angepasst werden zu GeSHi relativ zum {FORUM_ROOT} oder den absoluten Pfad angeben! (untested)
Schritt 1:
- Öffne die Datei ./{FORUM_ROOT}/includes/bbcode.php
- Suche die Funktion: bbcode_second_pass_code
- Ersetzte die Funktion mit folgendem Code (Orginal Code wurde gelöscht)
Code: Alles auswählen
/** * Second parse code tag */ function bbcode_second_pass_code($type, $code) { // when using the /e modifier, preg_replace slashes double-quotes but does not // seem to slash anything else $code = str_replace('\"', '"', $code); // ------------------------------------------------------------------------------------ // edited by jb (nebler.org) // including geshi // geshipfad, relativ zum haupt-ordner (oder absolut (untested)) $geshi_path = './includes/geshi/geshi.php'; if( !include_once( $geshi_path ) ) { // include = zur laufzeit, requier zum start echo 'geshi konnte nicht eingebunden werden!'; } else { // Es kommt nicht ursprünglicher Code an ... // hier die rückformatierung, vllt nicht schön aber selten ;) // Not the english way ... steht irgendwo im quellcode :) $astr_to = array('<', '>', '[', ']', '.', ':','"'); $astr_from = array('<', '>', '[', ']', '.', ':','"'); $code = str_replace($astr_from, $astr_to, $code); // binde geshi ein, siehe geshi-faq // geshi Objekt erzeugen und code erzeuegn $geshi = new GeSHi( $code, $type ); // header type setzten, siehe documentation von geshi $geshi->set_header_type(GESHI_HEADER_NONE); // code parsen und highlighten $code = $geshi->parse_code(); // überflüssige <br /> entfernen $code = str_replace( '<br />', '', $code ); } // ------------------------------------------------------------------------------------ $code = $this->bbcode_tpl('code_open') . $code . $this->bbcode_tpl('code_close'); return $code; }
- Speichern
- Öffne die Datei ./{FORUM_ROOT}/includes/message_parser.php
- Suche die Funktion: bbcode_parse_code
- Ersetzte die Funktion mit folgendem Code (Orginal Code wurde gelöscht)
Code: Alles auswählen
/** * Parse code text from code tag * @private */ function bbcode_parse_code($stx, &$code) { // ------------------------------------------------------------------------------------ // edited by jb (nebler.org) // includes geshi mod if( strlen( $stx ) > 0 ) { return "[code=$stx:" . $this->bbcode_uid . ']' . $code . '[/code:' . $this->bbcode_uid . ']'; } else { return '[code:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($code) . '[/code:' . $this->bbcode_uid . ']'; } // ------------------------------------------------------------------------------------ }
- Speichern
- Modifizierte Dateien hochladen
- Viel Spaß damit