คำถามติดแท็ก overrides

คำถามเกี่ยวกับการเอาชนะคุณสมบัติหลัก (การเขียนคลาส, พูลรหัสโลคัล, การแทนที่ธีม) สำหรับการเขียน URL ใหม่ให้ใช้แท็ก "url-rewrite" แทน

3
วิธีการแทนที่คลาส Virtual Type ใน Magento 2
วิธีการแทนที่ VirtualType block ใน Magento 2 ฉันต้องการแทนที่การบล็อกเสมือนจริงด้วยบล็อกของฉันเอง <virtualType name="Magento\CatalogSearch\Block\SearchResult\ListProduct" type="Magento\Catalog\Block\Product\ListProduct"> <arguments> <argument name="catalogLayer" xsi:type="object">Magento\Catalog\Model\Layer\Search</argument> </arguments> </virtualType> ดังนั้นฉันจึงพยายามแทนที่มันจากโมดูลที่กำหนดเองของฉันdi.xmlเช่นนี้ <preference for="Magento\Catalog\Block\Product\ListProduct" type="My\Vendor\Block\Product\ListProductSearch" /> แต่มันไม่ทำงาน ดังนั้นวิธีที่เหมาะสมในการเอาชนะคลาสชนิดเสมือนใน Magento 2 คืออะไร

1
Magento 2 Override เทมเพลตส่วนหัวเริ่มต้น
ฉันสร้างธีมของตัวเองด้วยการขยายMagento/Blankธีม ตอนนี้ต้องการแทนที่ไฟล์ส่วนหัวเริ่มต้นแม่แบบlink.phtml, topmenu.phtml,header.phtmlซึ่งตั้งอยู่ที่vendor/module-theme/view/frontend/templatesในรูปแบบของฉัน ธีมของฉันตั้งอยู่ที่ app/design/frontend/MyModule/MyTheme ดังนั้นโปรดแจ้งให้เราทราบว่าฉันสามารถลบล้างและสิ่งที่จะเป็นโครงสร้างสำหรับมัน

7
การเปลี่ยนข้อความปุ่ม“ หยิบใส่ตะกร้า” ใน Magento 2.1.0 (การแทนที่ไฟล์ js)
ฉันเปลี่ยนข้อความ "ใส่ในรถเข็น" เป็น "ฉันต้องการสิ่งนี้" โดยแทนที่ " vendor\magento\module-catalog\view\frontend\templates\product\list.phtml" แต่เมื่อฉันคลิกที่ปุ่ม "ฉันต้องการสิ่งนี้" (เช่น "เพิ่มในรถเข็น") สินค้าจะถูกเพิ่มลงในรถเข็นจากนั้นข้อความ "เพิ่มลงในรถเข็น" จะปรากฏบนปุ่ม ฉันคิดว่าผลิตภัณฑ์ถูกเพิ่มเข้ามาผ่านการโทร ajax นั่นคือสาเหตุที่ข้อความที่เพิ่มใหม่ไม่แสดงหลังจากการโทร ajax และข้อความ "เพิ่มลงในตะกร้า" แสดงขึ้น ฉันได้ลองสิ่งนี้แล้ว: ฉันสร้างส่วนขยายที่กำหนดเองVed_Mymoduleแล้ว ฉันตรวจสอบว่าส่วนขยายนั้นเปิดใช้งานอยู่ หลังจากนั้นฉันทำตามขั้นตอนเหล่านี้: app / รหัส / Ved / MyModule / view / ส่วนหน้า / requirejs-config.js: var config = { map: { '*': { catalogAddToCart:'Ved_Mymodule/js/customCatalogAddToCart' } } }; …

4
แทนที่คลาสนามธรรมใน Magento 2
ใน Magento 1 ฉันสามารถคัดลอกคลาสนามธรรมไปยังไดเรกทอรีท้องถิ่นหรือชุมชนและ Magento ใช้มันเมื่อโหลดอัตโนมัติคลาสนี้ มีวิธีแก้ปัญหาให้ Magento โหลดคลาสของฉันแทน vendor/magento/framework/Model/AbstractModel.phpหรือไม่? การกำหนดค่าตามความชอบdi.xmlสำหรับคลาส abstract ไม่ทำงาน ปลั๊กอินเท่านั้น?

3
เขียนวีโอไอพีควบคุมซ้ำ
ฉันต้องการเขียนทับการกระทำที่เรียกว่า _initAction จาก Controller: /app/code/core/Mage/Adminhtml/controllers/Catalog/Product/AttributeController.php เป็นโมดูลและคอนโทรลเลอร์ของฉันเอง: /app/code/local/Qbikz/ToolTip/controllers/Adminhtml/Catalog/Product/AttributeController.php ฉันลองวิธีต่างๆในการแก้ไขแล้ว: วิธีแรกที่<from>และ<to>ฉันลองชุดค่าผสมที่แตกต่างกัน (ไม่พบหน้า 404): <rewrite> <qbikz_tooltip_adminhtml_catalog_product_attribute> <from><![CDATA[#^/adminpanel/catalog_product_attribute/edit/#]]></from> <to>/tooltip/adminhtml_catalog_product_attribute/init/</to> </qbikz_tooltip_adminhtml_catalog_product_attribute> </rewrite> + <frontend> <routers> <qbikz_tooltip> <use>admin</use> <args> <module>Qbikz_ToolTip</module> <frontName>catalog_product_attribute</frontName> </args> </qbikz_tooltip> </routers> </frontend> วิธีที่สอง (หน้าที่แสดงโดยไม่สนใจกฎของฉัน): <admin> <routers> <adminhtml> <args> <modules> <Qbikz before="Mage_Adminhtml_Catalog_Product">Qbikz_ToolTip_Adminhtml_Catalog_Product</Qbikz> </modules> </args> </adminhtml> </routers> </admin> ในตัวควบคุมของฉันฉันใส่ตาย ("ตกลง"); แต่มันไม่ปรากฏขึ้น บางทีบางคนอาจช่วยได้? ขอบคุณ

1
วิธีการแทนที่ AccountController ของคอนโทรลเลอร์
ฉันต้องการแทนที่ตัวควบคุมวิธีการ Core/Mage/Customer/controllers/AccountController.php และเพิ่มวิธีการใหม่ เนื่องจากตัวควบคุมนี้แก้ไขไม่ถูกต้อง - จึงควรเขียนทับ ตามข้อกำหนดของโครงการการแทนที่ผู้ควบคุมจะต้องเป็น local/New/Mage/Customer/controllers/AccountController.php การทำเช่นนี้สร้างการตั้งค่าไฟล์ แต่อยู่customer/account/test, customer/account /ajaxไม่ตอบสนองและcustomer/account/loginมันไม่ได้แทนที่ กรุณาช่วยในการดำเนินการนี้ app / app / etc / โมดูล / New_Mage_Customer.xml <?xml version="1.0"?> <config> <modules> <New_Mage_Customer> <active>true</active> <codePool>local</codePool> </New_Mage_Customer> </modules> </config> app / รหัส / ท้องถิ่น / ใหม่ / Mage / ลูกค้า / etc / config.xml <?xml version="1.0"?> <config> …

3
ฉันจะแทนที่ / เขียนคลาสบล็อกใน Magento 1 ได้อย่างไร
หมายเหตุ:คำถามนี้มีวัตถุประสงค์เพื่อเป็นคำถามมาตรฐานที่อธิบายการทำงานของการเขียนบล็อกใหม่อย่างสมบูรณ์และสามารถใช้เป็นเป้าหมายที่ซ้ำกันสำหรับคำถาม "ฉันจะเขียนทับบล็อก X" ได้อย่างไรหรือคำถาม "ทำไมการเขียนซ้ำของฉันไม่ทำงาน" ดูเพิ่มเติม: ค้นหาคำถามที่เป็นที่ยอมรับเกี่ยวกับการแทนที่ Magento 1 สมมติว่าฉันต้องทำการเปลี่ยนแปลงคลาสบล็อกหลักในโมดูลที่กำหนดเอง (เปลี่ยนวิธีหรือเพิ่มวิธี) ฉันจะทำสิ่งนี้ทีละขั้นตอนได้อย่างไร


1
วิธีการแทนที่วิธีการคงที่ใน Magento2
ปลั๊กอิน Interceptors และการแทนที่ด้วยการตั้งค่าไม่ทำงานในวิธีการคงที่ จำเป็นต้องแทนที่เมธอดgetOptionArrayในMagento \ Catalog \ Model \ Product \ Visibility เพื่อส่งคืนการมองเห็นที่กำหนดเอง /** * Retrieve option array * * @return array */ public static function getOptionArray() { return [ self::VISIBILITY_NOT_VISIBLE => __('Not Visible Individually'), self::VISIBILITY_IN_CATALOG => __('Catalog'), self::VISIBILITY_IN_SEARCH => __('Search'), self::VISIBILITY_BOTH => __('Catalog, Search') ]; } วิธีอื่นใดที่สามารถทำได้

5
Mage :: log () ไม่ได้ล็อกอินในไฟล์ทั้งหมดที่ใช้โดย Magento?
ผมได้เขียนทับในSitemap.php app/code/local/Mage/Sitemap/Model/Sitemap.phpไฟล์ดูเหมือนว่าจะใช้ถ้าฉันลบเนื้อหาทั้งหมดมีข้อผิดพลาดตามที่คาดไว้ ฉันคัดลอกเนื้อหาทั้งหมดของมาตรฐานSitemap.phpพร้อมการเปลี่ยนแปลงเพียงครั้งเดียว ฉันเพิ่ม public function generateXml() { Mage::log('test'); ... } เมื่อตอนที่ผมทำนี้ทุกที่อื่นก็พิมพ์testในvar/log/system.logขณะที่คาดว่าเฉพาะในไฟล์นี้ก็ไม่ได้เข้าสู่ระบบข้อความ ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก แก้ไข การใช้ Mage::log('text', null, <file>, true); ไม่ทำงานเช่นกัน
11 overrides  log 

1
แทนที่ / ลบโหนด / ค่า XML Config หรือไม่
ฉันต้องการลบค่า XML บางส่วนโดยไม่ต้องแตะไฟล์ core XML เป็นไปได้ไหม สถานการณ์มีดังต่อไปนี้ ใน/app/code/core/Mage/Tax/etc/config.xmlเรามีค่าการกำหนดค่าสำหรับผลรวม ( <sales><quote><totals>) ฉันต้องการคอมเม้นต์taxเพื่อที่จะไม่แสดงบรรทัดภาษีในส่วนหน้า การแสดงความคิดเห็นโหนดในไฟล์ core XML ทำงานได้ดี แต่ไม่ใช่วิธีที่ดีที่สุด ถ้าฉันใส่ค่า empy ใหม่ลงในโมดูลที่แยกต่างหากฉันมีเอฟเฟกต์ที่แตกต่างกัน โดยเฉพาะฉันต้องการทำสิ่งที่ชอบ: <!--<renderer>tax/checkout_tax</renderer>-->

2
ฉันจะเพิ่มเลย์เอาต์ของเพจในโมดูล Mage_Page ได้อย่างไร
ผมค้นพบหลังจากการปรับรุ่นวีโอไอพีที่แกนMage_Page's config.xmlได้รับการแก้ไขด้วยตนเองและตอนนี้ฉันกำลังมองหาเพื่อเปลี่ยน XML ในทางที่ไม่หลักไม่ได้เขียนทับ นี่คือตัวอย่างของแกน XML: <config> <modules> <Mage_Page> <version>1.6.0.0</version> </Mage_Page> </modules> <global> <models> <page> <class>Mage_Page_Model</class> </page> </models> <blocks> <page> <class>Mage_Page_Block</class> </page> </blocks> <page> <layouts> <empty module="page" translate="label"> <label>Empty</label> <template>page/empty.phtml</template> <layout_handle>page_empty</layout_handle> </empty> <one_column module="page" translate="label"> <label>1 column</label> <template>page/1column.phtml</template> <layout_handle>page_one_column</layout_handle> <is_default>1</is_default> ฉันกำลังมองหาที่จะเพิ่มรูปแบบอื่นเช่นหรือone_column ดูเหมือนว่าการemptyเขียนทับconfig.xmlด้วยapp/code/local/Mage/Page/etc/config.xmlจะไม่ทำงานฉันควรดำเนินการอย่างไรโดยไม่แตะที่แกนกลาง

3
Magento 2 เพิ่มธีมใหม่โดยไม่ต้องเปลี่ยนไฟล์หลัก เสี้ยงฮึดฮัดแสดงความไม่พอใจ
วิธีการขยายการกำหนดค่า Magento 2 Grunt เริ่มต้นโดยไม่ต้องสัมผัส / แก้ไขไฟล์แกนเช่นGruntfile.jsและdev/tools/grunt/configs/themes.js?

1
ลบผู้สังเกตการณ์ออกจากส่วนขยายของบุคคลที่สาม
ฉันได้ติดตั้งโมดูลบล็อกบนแพลตฟอร์ม Magento 2 ของฉันแล้ว โมดูลบล็อกนี้มีผู้สังเกตการณ์ซึ่งจะเพิ่มรายการเมนูใหม่ลงในการนำทางหลักโดยอัตโนมัติ ฉันต้องการหยุดสิ่งนี้ events.xmlไฟล์มีลักษณะเช่นนี้ <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="page_block_html_topmenu_gethtml_before"> <observer name="aw_blog_add_topmenu_items" instance="Aheadworks\Blog\Observer\AddBlogToTopmenuItemsObserver" /> </event> </config> ในขณะที่คุณสามารถเห็นมันอ้างอิงผู้สังเกตการณ์ที่เพิ่มลิงค์ในการนำทางหลัก การลบevents.xmlแก้ปัญหาของฉัน แต่ฉันกำลังมองหาวิธีที่ไม่เกี่ยวข้องกับการแก้ไขไฟล์โมดูลหลัก

2
วิธีการปิดใช้งานการเขียนซ้ำ (รุ่น) อย่างถูกต้อง
มีส่วนขยายของบุคคลที่สามซึ่งเขียนคลาส Magento core เฉพาะใหม่ มันไม่สำคัญว่าจะเป็นบล็อคตัวช่วยหรือโมเดล แต่ในกรณีนี้มันเป็นโมเดล ตอนนี้ฉันพบว่าการเขียนซ้ำนี้ไม่ดีและฉันต้องการปิดการใช้งานโดยไม่เปลี่ยนนามสกุลของบุคคลที่สาม ดังนั้นฉันเขียนส่วนขยายที่กำหนดเองซึ่งขึ้นอยู่กับส่วนขยายของบุคคลที่สาม วิธีที่ดีที่สุดในการปิดการใช้งานการเขียนซ้ำของบุคคลที่สามคืออะไร สิ่งที่ปลอดภัยที่ฉันคิดได้คือการกำหนดการเขียนซ้ำแบบกำหนดเองซึ่งใช้แทนการเขียนโดยบุคคลที่สาม: <global> <models> <custom_extension> <class>Custom_Extension_Model</class> </custom_extension> <mage_core> <rewrite> <sth>Custom_Extension_Model_Sth</sth> </rewrite> </mage_core> </models> </global> Sth.phpคลาสจะขยายออกจากคลาส Mage โดยตรงดังนั้นจึงปิดใช้งานการเขียนซ้ำของบุคคลที่สาม: class Custom_Extension_Model_Sth extends Mage_Core_Model_Sth { } ใช้งานได้ แต่ไม่รู้สึกดีเกินไป ความคิดเกี่ยวกับผู้สังเกตการณ์ก็เป็นไปได้ที่จะปิดการใช้งานพวกเขาเท่านั้นผ่าน config.xml disabledโดยการตั้งค่าให้พวกเขา สิ่งนี้เป็นไปได้ด้วยการเขียนใหม่? ฉันพยายามใช้สิ่งต่อไปนี้และได้ผล: <global> <models> <mage_core> <rewrite> <sth></sth> </rewrite> </mage_core> </models> </global> แต่มันปลอดภัยที่จะทำเช่นนั้น? ใช้ได้กับทุกรุ่นหรือไม่ ฉันไม่เคยเห็นว่าในป่านั่นคือเหตุผลที่ฉันถาม

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