Beautiful interfaces& solid&smart backends make todays web work.

About Maik Vlcek Follow me on twitter
Themenschwerpunkte dieses Blogs:

Wordpress 2.5 > tinyMCE 3.0.6 > Template Plugin zum Laufen bekommen

Share and Enjoy: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Digg

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)

Keine Lokalisierung im Template Plugin

Wenn dazu noch jmd eine Lösung kennt und sie hier postet wäre ich sehr dankbar :)

Share and Enjoy: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • Y!GG
  • MisterWong
  • Linkarena
  • Facebook
  • TwitThis
  • email
  • del.icio.us
  • Digg
  • StumbleUpon
  • Technorati
Monster-Me eating knowledge
8 Kommentare RSS Icon
Trackback URL
Einen Kommentar hinterlassen

Du kannst die folgenden Schlagwörter verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  1. Des Rätsels Lösung

  2. 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

  3. Danke, die Lösung habe ich eben gesucht.

  4. Hey, ich nutze die Version: 3.2.4 von TinyMCE Advanced und bin damit sehr zufrieden. Ein Editor, der sehr einfach zu bedienen ist.

  5. Franz

    danke genau das habe ich gesucht!

  6. mediavrog

    Nein, leider nicht

  7. konntest du herausfinden warum die Lokalisierung nicht klappt?

  8. 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

top top