ความแตกต่างระหว่างปิดการใช้งานเอาท์พุทโมดูลและโมดูลที่ใช้งาน = จริงคืออะไร


16

ในวีโอไอพีฉันรู้ว่าเราสามารถถอดโมดูลได้สองวิธี

  1. โดยการนำทางในแบ็กเอนด์ Magento ไปที่ระบบ> การกำหนดค่า> ขั้นสูง> ปิดการใช้งานโมดูลเอาท์พุทเราสามารถปิดการใช้งานโมดูลบางอย่างได้อย่างง่ายดาย
  2. ในไดเร็กทอรี app / etc / modules โดยการเปลี่ยน active-tag จาก true เป็น false

ฉันขอทราบความแตกต่างที่แน่นอนของเทคนิคทั้งสองนี้ได้อย่างไร มันช่วยได้มากถ้าใครให้คำตอบที่ละเอียดกว่านี้


1
คำถามที่ดี ..
Amit Bera

@AmitBera ขอขอบคุณ
Charlie

คำตอบ:


17
  1. System > Configuration > Advanced > Disableโมดูลเอาต์พุตจะไม่ปิดใช้งานโมดูลนั้นจริง มันทำงานเป็นชื่อแนะนำปิดการใช้งานโมดูลเอาท์พุท

    เมื่อคุณดู

    abstract class Mage_Core_Block_Abstract

    ใน

    final public function toHtml()
    {
        Mage::dispatchEvent('core_block_abstract_to_html_before', array('block' => $this));
        if (Mage::getStoreConfig('advanced/modules_disable_output/' . $this->getModuleName())) {
            return '';
        } 
    
    // It is checking If its in disabled mode then just return blank output
    .......
    }
  2. ในขณะที่app/etc/modulesโมดูลปิดการใช้งานอย่างสมบูรณ์


คำตอบที่สมบูรณ์แบบ ...
Kartik Asodariya

3
  1. โดยการนำทางในแบ็กเอนด์ Magento ไปที่ระบบ> การกำหนดค่า> ขั้นสูง> ปิดการใช้งานโมดูลเอาท์พุทเราสามารถปิดการใช้งานโมดูลบางอย่างได้อย่างง่ายดาย

    - นั่นหมายความว่าโมดูลจะไม่แสดงผลไม่ส่งเอาต์พุตไปที่หน้าจอ แต่โมดูลของคุณจะทำงาน ดูแอพ / code / core / Mage / Core / Block / Abstract.php -> toHtml

    if (Mage :: getStoreConfig ('advanced / modules_disable_output /' $ this-> getModuleName ())) {return ''; }

  2. ในไดเร็กทอรีapp / etc / modulesโดยการเปลี่ยน active-tag จาก true เป็น false

    ---- จริง / เท็จกำหนดโมดูลของคุณจะโหลดหรือข้าม ลองดูสิapp/code/core/Mage/Core/Model/Config.php ->loadModulesConfiguration

foreach ($ modules as $ modName => $ module) {ถ้า ($ module-> is ('active')) {-------}}


2

เมื่อคุณเพียงแค่Disable Modules Outputมันหมายความว่าโมดูลจะไม่แสดงผลใด ๆ บนหน้าจอในแง่การเขียนโปรแกรม:_toHtml()ฟังก์ชั่นจะไม่ส่งคืนอะไร ทุกอย่างอื่น (ผู้สังเกตการณ์เขียนใหม่ตัวควบคุม) จะยังคงดำเนินการ

หากคุณต้องการปิดการใช้งานโมดูลอย่างถูกต้องให้ตั้งค่า "Active" เป็นfalseและตรวจสอบให้แน่ใจว่าไม่มีโมดูลอื่นที่กำลังขยาย


2

Configuration > Current Configuration Scope > Advanced > Advanced > Disable Module Output.การกระทำนี้จะปิดการใช้งานโมดูลเอาท์พุทตามที่ระบุไว้เท่านั้น หากโมดูลของคุณใช้สมมุติว่ามีฟังก์ชั่น Observer เชื่อมต่อเข้ากับบางส่วนของระบบและทำการลบล้างการกระทำเหล่านั้นจะไม่ถูกปิดใช้งาน

ในการปิดการใช้งานโมดูลอย่างสมบูรณ์คุณจะต้องไปที่ไฟล์โมดูลเช่น/etc/NAMESPACE_MyModule.xmlและตั้งค่าเป็นพารามิเตอร์แบบแอ็คทีฟเป็นเท็จเช่น:

< ?xml version="1.0"?>
<config>
<modules>
<NAMESPACE_mymodule>
<active>false</active>
<codepool>local</codepool>
</NAMESPACE_mymodule>
</modules>
</config>

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

มันยังโหลดโมดูลมันจะแสดงในระบบ> การตั้งค่า> ขั้นสูง ไม่โหลดไฟล์โมดูลเช่น etc / config.xml
Qaisar Satti

0

"ปิดใช้งานโมดูลเอาท์พุท" ปิดใช้งานเฉพาะบล็อกเอาต์พุตที่กำหนดโดยส่วนขยาย มันไม่ข้ามการทำงานของโมดูลโค้ดตัวอย่างเช่นถ้ามันมีผู้สังเกตการณ์กำหนดไว้


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