Wordpress 2.5 > tinyMCE 3.0.6 > Template Plugin zum Laufen bekommen
Wordpress 2.5 kommt nach dem großen Versionsprung nun auch endlich mit der Version 3 des tinyMCE Editors daher. Bei der Konfiguration des neuen tinyMCE ist mir aufgefallen, dass das Template-Plugin bei einer bestimmten Einstellung nicht mehr funktioniert. Die Lösung liegt in der Verwendung eines anderen Initialisierungsparameters.
Doch vorerst zur Installation.
tinyMCE im Wordpress Bundle wird nämlich nur mit einer spärlichen Anzahl an Plugins ausgeliefert. Dazu gehören autosave, directionality, fullscreen (Vollbildmodus beim Editieren), inlinepopups, media, paste, safari, spellchecker und wordpress. Doch tinyMCE hat mehr zu bieten und nach Anforderung sollten auch die Templates wieder mit von der Partie sein. Nach Download der aktuellsten Version auf der Seite von moxiecode (welcher dann auch alle Plugins beinhaltet) musste ich erstmal feststellen, dass mit Wordpress offenbar eine noch nirgens (auch nicht im SVN) erschienene Version von tinyMCE ausgeliefert wird (vgl. aktuelle Version 3.0.5 <> Wordpress tinyMCE 3.0.6). Ich nehme an dass in der Wordpress Version einige Kompatibilitäten integriert worden sind.
Aber zurück zum Template-Plugin. Nach Kopieren in den tinyMCE Plugin-Ordner und Anpassen der tiny_mce_config.php (wp-includes\js\tinymce) an folgenden Stellen erschien schonmal der Template Button wieder:
$plugins = array( 'safari', 'inlinepopups', [...], 'template' );
$mce_buttons = apply_filters('mce_buttons', array('bold', [...], 'template' ));[Hinweis: Die manuelle Anpassung der tiny_mce_config.php empfelhe ich nicht. Diese und folgende Einstellungen können in ein WP Plugin ausgelagert werden was bedingungslos zu empfehlen ist, da sie bei einem Upgrade von Wordpress ansonsten verloren gehen können; Wordpress bietet zur Konfiguration von tinyMCE (insbesondere Hinzufügen eigener Buttons) Filter an!]
Die weitere (gewohnte) Definition der eigenen Templates im $initArray schlug dann aber fehl:
'template_templates' => array(
array("TemplateName","TemplateURL","TemplateBeschreibung"),
array("TemplateName2","TemplateURL2","TemplateBeschreibung2")
);Die Ursache
Nach langer Recherche und Debuggen (danke Firebug!) habe ich die Ursache gefunden:
In der tinymce_plugin_verzeichnis/template/js/template.js wird in der init-Funktion versucht den festgelegten Parameter template_templates per
tsrc = ed.getParam("template_templates", false);auszulesen. Leider liefert die Funktion ed.getParam aber nur Strings zurück, was bei einem Array in Javascript den String “Array” zurückgibt. Klar dass die weitere Abarbeitung (insbesondere der Versuch diesen String zu durchlaufen und URLs daraus zu ermitteln) fehl schlägt und mit folgendem Fehler abbricht (Stack aus Firebug):
u has no properties _init(undefined, Object base_uri=Object)tiny_mce_config.p... (line 39) _init(undefined, undefined)tiny_mce_config.p... (line 39) init()template.js (line 24) (no name)(Object scope=Object)tiny_mce_popup.js (line 204) _init([Object scope=Object], function(), [Object scope=Object])tiny_mce_config.p... (line 39) _onDOMLoaded()tiny_mce_popup.js (line 203) (no name)()
Die Lösung dazu
Zumindest bis der Bug gefixt wurde, ist recht einfach. TinyMCE lässt die Definition der Templates auch in einem externen Javascript-File zu.
Dazu wird einfach im initArray der Parameter template_external_list_url genutzt. Gefüllt mit dem Pfad zu einem Javascript-Datei (vgl. beispielhafter Aufbau), welche dann das Array von Templates enthält funktioniert auch der Template-Button wieder wie gewünscht.
Ein letztes Problem
Mein letztes Problem ist nur noch, dass aus unerfindlichen Gründen die Platzhalter für die Lokalisierung nicht ersetzt werden (vgl. Screenshot)
Wenn dazu noch jmd eine Lösung kennt und sie hier postet wäre ich sehr dankbar :)








Deinen Artikel finde ich sehr gut hab aber Probleme damit. Zum einen finde ich “tiny_mce_config.php” datei gar nicht in meiner Wordpress installation Vers. 2.7.1 ! Wie bist du genau vorgegangen ?
Möchte das Template und noneditable plugin zum laufen bringen !
Hoffe du kannst mir helfen !?
beste Grüße
Andreas
konntest du herausfinden warum die Lokalisierung nicht klappt?
Nein, leider nicht
danke genau das habe ich gesucht!
Hey, ich nutze die Version: 3.2.4 von TinyMCE Advanced und bin damit sehr zufrieden. Ein Editor, der sehr einfach zu bedienen ist.
Danke, die Lösung habe ich eben gesucht.
Hey,
endlich genau das was ich gesucht habe,
hat mir wirklich geholfen und dank den screens und guten Erklärungen sofort zu kapieren.
Danke
Emma von Handyblog
Des Rätsels Lösung …