Konfiguration des WYSIWYG-Editors in Magento 1.4
Seit Magento 1.4 gibt es den eingebauten WYSIWYG-Editor. Bei der Konfiguration hat sich einiges geändert gegenüber den manuell integrierten Editoren. Da ich mich gezwungenermaßen aufgrund eines Fehlers beim Upgrade heute mit dem Editor beschäftigt habe und keine Dokumentation vorhanden gefunden habe, hier eine kurze Übersicht über die Konfiguration und Einbindung des grafischen Editors.
Das Formular, in dem der grafische Editor verwendet werden soll, muss den JS-Code für den TinyMce-Editor einbinden:
/** * Loads the wysiwyg editor on demand, if enabled. * * @return Mage_Adminhtml_Block_Widget_Form */ protected function _prepareLayout() { $return = parent::_prepareLayout(); if (Mage::getSingleton('cms/wysiwyg_config')->isEnabled()) { $this->getLayout()->getBlock('head')->setCanLoadTinyMce(true); } return $return; }
Wichtig in diesem Zusammenhang ist, dass der Block, in dem der grafische Editor eingebungen wird, nicht erst im _toHtml() erstellt wird, sondern ebenfalls im _prepareLayout(). Beim Aufruf der _toHtml() ist es nämlich schon zu spät den JS-Code im Head hinzuzufügen. Falls ein früherer Aufruf nicht möglch ist, muss der Code zum einbinden des grafischen Editors in einem anderne Block in der _prepareLayout()-Methode platziert werden.
Im Formular selbst ist der grafische Editor wie folgt einzubinden. Zu beachten ist, dass der Typ auf editor gestellt ist und die Config übergeben wird:
/* @var $form Varien_Data_Form */ $form->addField('my_field', 'editor', array( 'name' => 'my_field', 'label' => Mage::helper('my_module')->__('My Field'), 'title' => Mage::helper('my_module')->__('My Field'), // 'wysiwyg' => true // kann entfernt werden - überschreibt ansonsten die Konfigurationseinstellung für "enabled" 'config' => Mage::getSingleton('cms/wysiwyg_config')->getConfig(), ));
Wenn für den Editor besondere Einstellungen gelten sollen, können diese über den Config-Array gesetzt werden:
$config = array(); $config['add_variables'] = false; // variablen deaktivieren $config['add_widgets'] = false; // widgets deaktivieren /* @var $form Varien_Data_Form */ $form->addField('my_field', 'editor', array( 'name' => 'my_field', 'label' => Mage::helper('my_module')->__('My Field'), 'title' => Mage::helper('my_module')->__('My Field'), 'config' => Mage::getSingleton('cms/wysiwyg_config')->getConfig($config), ));
Da eine Dokumentation der Konfigurationsmöglichkeiten mal wieder nicht vorhanden ist, habe ich durch fleißiges Source-Code-Lesen die meisten der Parameter zusammengereimt.
| Key | Datentyp | Standard | Beschreibung |
|---|---|---|---|
add_variables | bool | true | Steuert die Anzeige des “Variable einfügen”-Buttons. |
add_widgets | bool | true | Steuert die Anzeige des “Widget einfügen”-Buttons. |
content_css | string | dialog.css | |
directives_url | */cms_wysiwyg/directive | ||
enabled | bool | true | Aktiviert/Deaktiviert den grafischen Editor. Kann in der Backend-Konfiguration (Allgemein → Content Management → WYSIWYG Options) global gesteuert werden. |
encode_directives | bool | true | Encode template directives with JS or not |
files_browser_window_height | int | 600 | Die Höhe des Dateibrowser-Fensters |
files_browser_window_url | string | */cms_wysiwyg_images/index | Die URL des Dateibrowser-Fensters |
files_browser_window_width | int | 1000 | Die Breite des Dateibrowser-Fensters |
hidden | bool | true | Steuert, ob der grafische Editor beim Laden der Seite angezeigt wird, oder erst manuell aktiviert werden muss. Das Verstecken beim Laden verbessert die Ladezeit der Seite und bringt vor allem dann Vorteile, wenn das Feld meistens nicht bearbeitet wird. Auch diese Einstellung kann global über die Backend-Konfiguration (Allgemein → Content Management → WYSIWYG Options) vorgenommen werden. |
no_display | bool | false | Steuert, ob das Container-Element angezeigt werden soll oder nicht (siehe use_container). |
plugins | array | array() | |
popup_css | string | content.css | |
translator | Helper | Helper | Der Helper, der für die Übersetzung verwendet werden soll. |
use_container | bool | false | Steuert, ob die Inhalte des grafischen Editors in einen div-Tag verpackt werden sollen oder nicht. |
width | string | 100% | Breite des grafische Editors. |
Wem diese Möglichkeiten nicht ausreichen, oder ein bestehendes Feld von außen manipulieren möchte, kann die Konfiguration des Feldes in einem Observer auf den Event cms_wysiwyg_config_prepare noch bearbeiten, nachdem der Config-Array angewendet wurde.

Funktioniert auch in 1.5.1.0 noch tadellos. Thx.