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

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

8
วิธีการแทนที่ Core Block รุ่นและคอนโทรลเลอร์ใน Magento2
ฉันติดอยู่ที่การเอาชนะ core model Blocks และ controllers ใน Magento2 มีใครช่วยได้บ้าง ลองมาแถบเครื่องมือรายการเป็นตัวอย่างที่ผมต้องเพิ่มตัวเลือกการเรียงใหม่ที่เรียกว่าเรียงลำดับตามความนิยมมากที่สุด ฉันจะเพิ่มได้อย่างไร ฉันเดาว่าเราจำเป็นต้องเพิ่มตัวเลือกในระดับบล็อกและเงื่อนไขในList.phpระดับการรวบรวม

5
ฉันจะทำอย่างไรเมื่อส่วนขยายเขียนทับคลาสทั่วโลกและฉันต้องการใช้ต้นฉบับ
เราใช้ส่วนขยายที่เขียนทับบล็อก Mage_Catalog_Block_Product_List_Toolbar ทั่วโลก <global> <blocks> <catalog> <rewrite> <product_list_toolbar>Amasty_Shopby_Block_Catalog_Product_List_Toolbar</product_list_toolbar> </rewrite> </catalog> </blocks> </global> ในขณะที่ส่วนขยายทำงานในบริบทของหมวดหมู่การนำทางแบบแบ่งชั้นคลาสที่เขียนใหม่จะทำงานไม่ถูกต้องเมื่อเราแทรกรายการผลิตภัณฑ์โดยพลการลงในมุมมอง (กำหนดเอง) อื่นในโมดูลภายในองค์กรของเราเอง หากเรานำส่วนขยายนั้นเขียนทับเพื่อการทดสอบทุกอย่างก็ใช้ได้ดี เราจะยกเลิกการเขียนส่วนขยายสำหรับตัวควบคุมของเราเองโดยไม่ต้องแก้ไขรหัสชุมชนของนักพัฒนาส่วนขยายได้อย่างไร

2
การขยาย / ลบล้าง JS ใน Magento 2
Magento2 กำลังใช้ RequireJS สำหรับการโหลดสคริปต์และไม่มีโฟลเดอร์สกินอีกต่อไปฉันจึงติดปัญหา: ฉันจะแทนที่ไฟล์ JS ของโมดูลวีโอไอพีด้วยเวอร์ชันที่แก้ไขของฉันได้อย่างไร ตัวอย่างเช่น - opc-checkout-method.jsซึ่งเป็นของส่วนขยาย Magento_Checkout มันไม่ได้กำหนดไว้ในไฟล์ requirejs-config.js เท่าที่ฉันเห็น ส่วนขยายของฉันถูกโหลดหลังจากMagento_Checkoutดังนั้นข้อมูล requirejs-config.js จะถูกต่อท้ายท้ายไฟล์ requirejs-config หรือฉันควรทำอย่างอื่นโดยไม่เปลี่ยนสคริปต์ทั้งหมด?

5
ฉันจะได้รับรายชื่อการเขียนคลาสทั้งหมดได้อย่างไร
มีวิธีแสดงรายการการเขียนซ้ำทั้งหมดและอาจเกิดข้อขัดแย้งอื่น ๆ นอกเหนือจากการตรวจสอบไฟล์การกำหนดค่าทั้งหมดหรือไม่ ฉันต้องวิเคราะห์บางโครงการที่มีส่วนขยายและการแก้ไขที่กำหนดเองจำนวนมากและต้องการทำให้เป็นอัตโนมัติมากที่สุดเท่าที่จะเป็นไปได้ สิ่งที่สำคัญที่สุดคือการตรวจหาส่วนขยายที่เขียนคลาสเดียวกัน แต่ฉันต้องการให้มีรายการของการเขียนทั้งหมดใหม่อีกครั้งเพื่อเก็บภาพรวม ในขณะนี้ฉันเก็บรักษารายการนี้ด้วยตนเองในสเปรดชีต ฉันพบส่วนขยายนี้ ("ส่วนขยายความขัดแย้ง")ใน Magento Connect แต่ตัดสินโดยคำวิจารณ์และบันทึกย่อประจำรุ่นที่ดูเหมือนว่าจะล้าสมัย

4
วิธีการเขียนไฟล์ lib ใหม่ ๆ
ปัญหาเป็นที่รู้จักกันดี: libคลาสถูกโหลดผ่านออโต้โหลดโดยเฉพาะและเราไม่สามารถเปลี่ยนแปลงได้นอกจาก: การคัดลอกทั้งหมดไปยัง codePool ที่ถูกตรวจสอบก่อนหน้า lib การติดตั้งตัวโหลดอัตโนมัติ PSR-0ระบุแผนผังคลาสอัตโนมัติจากนั้นคัดลอกไฟล์ทั้งหมดลงในโครงสร้างโฟลเดอร์นั้นแทน [โซลูชันปัจจุบันของฉัน] ฉันอยู่ในจุดที่ยากลำบากเพราะฉันต้องการสัมผัสไฟล์เหล่านี้จำนวนมาก - แต่เพื่อความมีสติและความเสถียร / ความสามารถในการอัพเกรดของฉันที่ร้านไม่ต้องการคัดลอกคลาสห้องสมุดทั้งหมด ตอนนี้เห็นได้ชัดว่ามีวิธีแก้ปัญหาที่เป็นไปได้ แต่พวกเขาทั้งหมดมาพร้อมกับชุดของปัญหา: ใช้เส้นทางAOPและใช้ไลบรารีที่เป็น PHP เช่นGo! AOP : ครั้งสุดท้ายที่ฉันตรวจสอบสิ่งนี้จะต้องโหลดคลาสวีโอไอพีโดยผู้สร้างอัตโนมัติโหลดออเดอร์ Flyingmana ทำงานบางอย่างในพื้นที่นี้ แต่มันยังไม่พร้อมสำหรับการใช้งานจริงและความต้องการของฉันก็เพิ่มขึ้นทันที ฉันยังต้องการจัดส่งเป็นส่วนขยายและนั่นจะต้องมีการตั้งค่าผู้แต่งเพิ่มเติม ไปที่เส้นทาง AOP และใช้ส่วนขยาย PHP แบบเนทีฟ : อาจเป็นที่นิยมมากที่สุดในตอนนี้ แต่จะต้องติดตั้งส่วนขยายแยกต่างหากไม่ต้องพูดถึงว่าจะไม่ทำงานกับ HHVM ใช้classkitของ PHP และ / หรือrunkit : เป็นอีกหนึ่งนามสกุล PHP ดั้งเดิมดังนั้นจึงมีปัญหาเช่นเดียวกับข้างต้น Patch sites sites เพื่อใช้ namespaced ( …
21 overrides  core 

4
จะแทนที่ไฟล์ HTML โดยใช้โมดูลที่กำหนดเองได้อย่างไร?
ฉันกำลังพัฒนาโมดูลที่กำหนดเองสำหรับวิธีการชำระเงินใน Magento 2 ปัจจุบันฉันใช้cc-form.htmlจากไดเรกทอรีผู้ขายและโมดูลทำงานได้ดี ดูเส้นทางด้านล่าง: ผู้ขาย / วีโอไอพี / โมดูลการชำระเงิน / view / ส่วนหน้า / เว็บ / แม่แบบ / ชำระเงิน / CC-form.html มีวิธีการแทนที่ไฟล์ HTML หรือไม่? หมายเหตุ:ฉันต้องการแทนที่โดยใช้ส่วนขยายที่กำหนดเอง ดูเส้นทางด้านล่าง: app / รหัส / Namespace / โมดูล / view / ส่วนหน้า / เว็บ / แม่แบบ / ชำระเงิน / CC-form.html ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม ขอขอบคุณ!

2
เขียนใหม่ Magento 2 คลาสเทียบกับปลั๊กอิน
Magento 2 มีคอนเซ็ปต์ของPlugins / Interception / Interceptorsซึ่งตรงข้ามกับ Magento 1 การ กระทำเหล่านี้เหมือนก่อน | หลังเหตุการณ์สำหรับวิธีสาธารณะทุกประการ อันไหนดี คุณยังสามารถใช้aroundปลั๊กอินเพื่อแทนที่การทำงานของวิธีการ แต่ Magento 2 ยังคงมีความเป็นไปได้ในการเขียนคลาสมากขึ้นหรือน้อยลงในแบบ M1 ฉันต้องการดูตัวอย่างที่การเขียนคลาสใหม่เป็นวิธีการแทนที่จะใช้ปลั๊กอิน ฉันรู้ว่าสิ่งนี้มีประโยชน์เมื่อคุณต้องการเปลี่ยนพฤติกรรมของวิธีการป้องกันหลัก แต่มีกรณีอื่น ๆ ที่แนะนำให้เขียนใหม่หรือจำเป็น?

3
Magento 2: เขียนคอนโทรลเลอร์อีกครั้ง
ฉันจะเขียนคอนโทรลเลอร์ใหม่อีกครั้ง (นั่นเป็นการกระทำจริง) ใน Magento 2 ได้อย่างไร ฉันพยายามตามคำแนะนำที่นี่เช่นนี้: ฉันมีโมดูลของตัวเองที่เรียกว่าNamespace_Moduleมีdi.xmlไฟล์ที่ถูกนำมาพิจารณาเพราะระบบเดียวกันการทำงานในรูปแบบและบล็อก ตัวอย่าง: <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd"> <!-- this one doesn't work for a controller action --> <preference for="Magento\Backend\Controller\Adminhtml\Dashboard\RefreshStatistics" type="Namespace\Module\Controller\Adminhtml\Dashboard\RefreshStatistics" /> <!-- this one works for a model --> <preference for="Magento\Customer\Model\Resource\GroupRepository" type="Namespace\Module\Model\Resource\Customer\GroupRepository" /> <!-- this one works also for a block --> <preference …

3
การเพิ่มวิธีการใหม่ให้กับคลาสนามธรรมใน Magento 2
เช่นเดียวกับหัวข้อนี้กล่าวว่าแทนที่ระดับนามธรรมในวีโอไอพี 2ในวีโอไอพี 1 , ฉันสามารถสร้างคลาสใหม่ได้อย่างสมบูรณ์ ใน Magento 2 เราจำเป็นต้องใช้ปลั๊กอิน แต่ปลั๊กอินอนุญาตให้ฉันแก้ไขวิธีที่มีอยู่เท่านั้น ฉันต้องทำอย่างไรหากฉันต้องการเพิ่มวิธีการใหม่ ตัวอย่าง: คลาสนี้vendor/magento/module-ui/Component/AbstractComponent.phpมีอาร์เรย์ของส่วนประกอบ: $componentsไม่มีฟังก์ชั่นในการยกเลิกการตั้งค่า / ลบองค์ประกอบสำหรับอาร์เรย์นั้น ดังนั้นฉันจะสร้างฟังก์ชันนั้นได้อย่างไร

5
Magento 2: วิธีการตั้งค่าแม่แบบกำหนดเองสำหรับบล็อกหลัก
ฉันพยายามที่จะแทนที่ register.phtml ในโมดูลของฉัน แต่ดูเหมือนว่ามีปัญหาการกำหนดค่าบางอย่างที่ทำให้วีโอไอพีไม่สามารถใช้เทมเพลตที่กำหนดเองของฉันเพื่อแทนที่หนึ่งในโมดูลหลัก ฉันตรวจสอบรหัสแล้ว แต่ไม่พบปัญหา ใครช่วยได้บ้าง ขอบคุณล่วงหน้า. module.xml: <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Namespace_ModuleName" setup_version="0.0.2"> <sequence> <module name="Magento_Customer"/> </sequence> </module> </config> customer_account_create.xml ภายใต้ Namespace \ ModuleName \ view \ frontend \ layout: <?xml version="1.0"?> <layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/layout_generic.xsd"> <referenceBlock name="customer_form_register"> <arguments> <argument name="template" xsi:type="string">Namespace_ModuleName::form/register.phtml</argument> </arguments> </referenceBlock> </layout> composer.json: { "name": "namespace/module-modulename", …

1
วิธีการแทนที่ config.xml
ฉันต้องเปลี่ยนประเภทเทมเพลตอีเมลหน้าติดต่อเราจาก "text" เป็น "HTML" ฉันพบว่ามันอยู่ใน config.xml <email> <contacts_email_email_template translate="label" module="contacts"> <label>Contact Form</label> <file>contact_form.html</file> <type>text</type> </contacts_email_email_template> </email> วิธีการแทนที่ config.xml อย่างถูกต้อง [แก้ไข] นี่สำหรับแอปไฟล์ / รหัส / core / mage / contact / etc / config.xml และคำตอบด้านล่างจะใช้ได้กับ ... / mage / ANYTHING / etc / config.xml

3
จะเขียนคลาสที่มีการเขียนใหม่ได้อย่างไร?
อัปเดต:ฉันพบว่าชั้นที่ฉันต้องการเขียนจริงนั้นSMDesign_SMDZoom_Block_Product_View_Mediaไม่SMDesign_ColorswatchProductView_Block_Product_View_Mediaเหมือนที่ฉันคิดไว้ในตอนแรก อย่างไรก็ตามปัญหาเดียวกันที่แน่นอนยังคงใช้ ส่วนขยายการออกแบบ SMDZoom เขียนคลาสบล็อกใหม่อีกครั้งว่า 'catalog / product_view_media' xml สำหรับที่มีลักษณะเช่นนี้: <global> ... <blocks> <smdzoom> <class>SMDesign_SMDZoom_Block</class> </smdzoom> </blocks> <blocks> <catalog> <rewrite> <product_view_media>SMDesign_SMDZoom_Block_Product_View_Media</product_view_media> </rewrite> </catalog> </blocks> .... </global> ฉันต้องการเขียนคลาสนี้อีกครั้ง ฉันต้องการเขียนคลาส catalog / product_view_media อีกครั้งว่าโมดูล smdzoom นี้กำลังเขียนใหม่ สามารถทำได้หรือไม่ config xml มีลักษณะอย่างไรในโมดูลของฉันเพื่อทำสิ่งนี้? ปัจจุบันนี้เป็นไฟล์โมดูล xml ของฉัน: <config> <modules> <Goorin_SMDZoom> <active>true</active> <codePool>local</codePool> </Goorin_SMDZoom> <depends> <Mage_Catalog /> …

1
การกำหนดค่า RequireJs แบบมีเงื่อนไข (โหลด requirejs-config.js โดยทางโปรแกรมหรือไม่)
ฉันต้องการแทนที่คอมโพเนนต์ RequireJs ตามเงื่อนไขบางอย่างเท่านั้น (เช่นตามการกำหนดค่า) มีวิธีใดที่จะป้องกันไม่ให้โหลดโมดูลของฉันrequirejs-config.jsหรือวิธีอื่นเพื่อให้บรรลุโดยทางโปรแกรมหรือไม่

2
จะแทนที่หรือปิดการใช้งานปลั๊กอินหลักใน Magento2 ได้อย่างไร?
ฉันกำลังสร้างตลาดโดยใช้ Magento2 ด้วยเหตุนี้ฉันจึงจำเป็นต้องโหลดคำสั่งซื้อของลูกค้าโดยใช้ข้อมูลรับรองลูกค้าของผู้ขาย ปัญหานี้คือ Magento2 ใช้ปลั๊กอินเพื่อตรวจสอบว่ามีเพียงลูกค้าของคำสั่งนี้ (หรือผู้ดูแลระบบ) ที่สามารถโหลดคำสั่งซื้อได้ isAllowed()ในกรณีนี้ผมต้องทั้งแทนที่ปลั๊กอินเป็นทั้งหมดหรือแทนที่วิธีการป้องกัน ฉันจะทำอย่างไรหากไม่มีการแก้ไขแกน Magento\Sales\Model\ResourceModel\Order\Plugin\Authorization ดูเหมือนว่านี้: use Magento\Authorization\Model\UserContextInterface; use Magento\Framework\Exception\NoSuchEntityException; class Authorization { /** * @var UserContextInterface */ protected $userContext; /** * @param UserContextInterface $userContext */ public function __construct( \Magento\Authorization\Model\UserContextInterface $userContext ) { $this->userContext = $userContext; } /** * Checks if order is allowed …

7
วิธีการแทนที่ไฟล์. phtml ใน Magento 2
ฉันต้องการปรับแต่งหน้ารายละเอียดผลิตภัณฑ์ดังนั้นจึงจำเป็นต้องแทนที่ไฟล์. phtml บางไฟล์ในตำแหน่งต่อไปนี้ ดังนั้นฉันต้องการทราบวิธีการแทนที่ไฟล์. phtmlในvendor\magento\module-catalog\view\frontend\templates\productหรือvendor\magento\module-theme\view

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