วิธีเพิ่มฟังก์ชัน WYSIWYG ให้กับรายการ Magento Config


21

สำหรับโมดูลที่กำหนดเองฉันต้องใช้รายการปรับแต่งเพื่อให้มีตัวแก้ไขแบบ WYSIWYG ในขณะนี้ฉันกำลังใช้ "textarea" ในระบบ xml ของฉันเพื่อรับ textarea ปกติ

ฉันเดาว่าฉันจะต้องเพิ่ม "frontend_type" พิเศษตาม textarea เพื่อเพิ่มความน่าเชื่อถือนี้ แต่ฉันสงสัยว่ามีตัวเลือกอื่น ๆ / ดีกว่า

คำตอบ:


23

ก่อนอื่นให้เพิ่มสิ่งนี้ลงในไฟล์เลย์เอาต์เพื่อโหลดตัวแก้ไขในส่วนกำหนดค่า:

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

ตอนนี้สร้างโหมดแสดงภาพของคุณเอง มันจะต้องเป็นบล็อกภายในโมดูลของคุณ:

<?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);
    }
}

ตอนนี้สำหรับองค์ประกอบภายใน system.xml ตั้งค่า frontend_type 'editor' และ frontend_model บล็อกใหม่ของคุณ

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

มีปัญหาบางอย่างเมื่อเปลี่ยนขอบเขตการกำหนดค่าเป็นเว็บไซต์หรือมุมมองร้านค้า textarea ไม่กลายเป็น 'ปิดใช้งาน' แต่ถ้าคุณไม่สนใจสิ่งนี้คุณสามารถใช้มันได้โดยไม่มีปัญหา


คำตอบที่ยอดเยี่ยมทำงานให้ฉัน
Rick Kuipers

สิ่งนี้ได้ผลเช่นนั้น .. !! +1
balanv

3

ฉันต้องการเพิ่มสิ่งนี้เป็นความคิดเห็น แต่ฉันไม่มีชื่อเสียงเพียงพอ อนิจจาข้อมูลนี้มีประโยชน์อย่างแน่นอนสำหรับใครบางคน

เมื่อฉันใช้โซลูชันของ Marius ฉันเห็นปุ่มแสดง / ซ่อนตัวแก้ไข แต่เมื่อฉันคลิกฉันพบข้อผิดพลาดจาวาสคริปต์:

Uncaught ReferenceError: tinyMceWysiwygSetup is not defined

การค้นหา google อย่างรวดเร็วทำให้ฉันไปที่คำถามอื่น ๆ ของ magento stackexchange ซึ่งแนะนำว่าคุณต้องมีบรรทัดเพิ่มเติมในเลย์เอาต์ของคุณเพื่อโหลดจาวาสคริปต์ที่จำเป็นทั้งหมดในส่วนกำหนดค่า การรวมสิ่งนี้กับโซลูชันของ Marius ทำให้ฉันได้รับการปรับปรุงเค้าโครงที่มีลักษณะดังนี้:

<!-- 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>

นี่คือลิงค์ไปยังคำถามอื่น: Uncaught ReferenceError: tinyMceWysiwygSetup ไม่ได้ถูกกำหนดไว้


0

AddJs เพิ่มเติมของคุณไม่จำเป็นที่นี่ อันที่จริงคนส่วนใหญ่ที่คุณเรียกว่าอยู่ในมือจัดการ "ตัวแก้ไข" แล้ว นั่นเป็นเหตุผลที่เราทำที่นี่<update handle="editor"/>

เพียงให้แน่ใจว่าการเพิ่มของคุณอยู่ในการออกแบบ> adminhtml และไม่ได้อยู่ในการออกแบบ> ส่วนหน้า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.