Magento Config öğelerine WYSIWYG işlevselliği nasıl eklenir


21

Belirli bir özel modül için WYSIWYG editörüne sahip olacak bir config öğesine ihtiyacım var. Şu anda normal bir textarea elde etmek için xml sistemimde "textarea" kullanıyorum.

Tahminimce bu işlevselliği eklemek için textarea'ya dayanan fazladan bir "frontend_type" eklemeliyim, ancak başka / daha iyi seçenekler olup olmadığını merak ediyorum

Yanıtlar:


23

Öncelikle, editörünü config bölümüne yüklemek için, bunu herhangi bir düzen dosyasına ekleyin:

<adminhtml_system_config_edit>
    <update handle="editor"/>
    <reference name="head">
        <action method="setCanLoadTinyMce"><load>1</load></action>
    </reference>
</adminhtml_system_config_edit>

Şimdi kendi alan oluşturucunuzu oluşturun. Modülünüzün içinde bir blok olmalı:

<?php
class Namespace_Module_Block_Adminhtml_System_Config_Editor 
    extends Mage_Adminhtml_Block_System_Config_Form_Field 
    implements Varien_Data_Form_Element_Renderer_Interface {

    protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) {
        $element->setWysiwyg(true);
        $element->setConfig(Mage::getSingleton('cms/wysiwyg_config')->getConfig());
        return parent::_getElementHtml($element);
    }
}

Şimdi system.xml içindeki öğe için frontend_type 'editor' ve frontend_model 'i yeni bloğunuzu ayarlayın

<fieldname translate="label">
    <label>Field label </label>
    <frontend_type>editor</frontend_type>
    <frontend_model>module/adminhtml_system_config_editor</frontend_model>
    <sort_order>150</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
</fieldname>

Config kapsamını bir web sitesine veya mağaza görünümüne değiştirirken bazı sorunlar var. Textarea 'engelli' olmaz. Ancak bunu görmezden gelirseniz, problemsiz kullanabilirsiniz.


Mükemmel cevap, benim için çalıştı.
Rick Kuipers,

Bu sadece böyle çalıştı .. !! +1
balan

3

Bunu yorum olarak eklemek istedim, ancak yeterli saygınlığım yok. Ne yazık ki, bu bilgi şüphesiz birileri için faydalıdır.

Marius'un çözümünü uyguladığımda, Editörün Göster / Gizle düğmesini gördüm, ancak tıkladığımda bir javascript hatası alıyorum:

Uncaught ReferenceError: tinyMceWysiwygSetup is not defined

Hızlı bir google araması beni, diğer gerekli javascript'i config bölümünde yüklemek için düzeninizde ek satırlara ihtiyaç duymanızı öneren bir diğer magento stackexchange sorusuna yönlendirdi. Bunu Marius'un çözümü ile birleştirmek bana şöyle bir mizanpaj güncellemesi verdi:

<!-- Enable wysiwyg for config in admin -->
<adminhtml_system_config_edit>
    <update handle="editor"/>
    <reference name="head">
        <action method="setCanLoadTinyMce"><flag>1</flag></action>
        <!-- Beginning of my additions -->
        <action method="setCanLoadExtJs"><flag>1</flag></action>
        <action method="addJs"><script>mage/adminhtml/variables.js</script></action>
        <action method="addJs"><script>mage/adminhtml/wysiwyg/widget.js</script></action>
        <action method="addJs"><script>lib/flex.js</script></action>
        <action method="addJs"><script>lib/FABridge.js</script></action>
        <action method="addJs"><script>mage/adminhtml/flexuploader.js</script></action>
        <action method="addJs"><script>mage/adminhtml/browser.js</script></action>
        <action method="addJs"><script>prototype/window.js</script></action>
        <action method="addJs"><script>prototype/prototype.js</script></action>
        <action method="addItem"><type>js_css</type><name>prototype/windows/themes/default.css</name></action>
        <action method="addItem"><type>js_css</type><name>prototype/windows/themes/magento.css</name></action>
    </reference>
</adminhtml_system_config_edit>

İşte o diğer soruya link: Yakalanmamış ReferenceError: tinyMceWysiwygSetup tanımlanmadı


0

Ek eklentileriniz burada gerekli değildir. Aslında, çağrınızın çoğu zaten "editor" tutamacında. Bu yüzden buradayız<update handle="editor"/>

Eklemenizin tasarımda> adminhtml'de ve tasarımda> frontend'de olduğundan emin olun

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.