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

หมายถึงไฟล์ xml ที่ใช้เพื่อกำหนดลำดับชั้นของบล็อกซึ่งจะทำให้ไฟล์เทมเพลตในที่สุด

4
คำอธิบายของ UI Component Grid ใน Magento 2
จำเป็นต้องมีการอธิบายที่ดีและ / หรือตัวอย่างของการกำหนดค่าขั้นต่ำเปล่าเพื่อสร้าง UI Component Grid ใน Magento 2 หรือไม่? ฉันรู้ว่ามีองค์ประกอบหลักมากมายเช่น ./vendor/magento/module-catalog/view/adminhtml/ui_component/product_listing.xml อย่างไรก็ตามไฟล์ XML เหล่านี้กว้างขวางและมีคำอธิบายเล็กน้อยเกี่ยวกับสิ่งที่แต่ละโหนดทำและวิธีที่คุณใช้ในการสร้างกริดจากศูนย์ นอกจากนี้ยังมีโมดูลตัวอย่างนี้แต่มัน ดูเหมือนจะเป็นแบบฟอร์ม ไม่มีบริบท / คำอธิบายใด ๆ เกี่ยวกับสิ่งที่แต่ละโหนดทำ ฉันกำลังมองหาข้อมูล "เริ่มต้นใช้งาน" ที่จะให้ฉันสร้างกริดสำหรับคอลเลกชันโมเดล CRUD ของฉันเอง

6
Magento 2: การเปลี่ยนเทมเพลตของบล็อก
ใน Magento 1 ในฐานะนักพัฒนาโมดูลคุณสามารถเปลี่ยนเทมเพลตของบล็อกโดยใช้โค้ด XML ของเลย์เอาต์แบบนี้ <reference name="block_to_change"> <action method="setTemplate"> <param>/path/to/template.phtml</param> </action> </reference> จากนั้นเพิ่มแม่แบบของคุณไปยังชุดรูปแบบพื้นฐาน app/design/frontend/base/default/template/path/to/template.phtml เป็นไปได้ว่าในฐานะผู้พัฒนาโมดูลเพื่อทำสิ่งที่คล้ายกันใน Magento 2? หรือฉันจะต้องใช้เลย์เอาต์ XML หรือโค้ด PHP เพื่อลบบล็อกที่ฉันสนใจและแทรกบล็อกใหม่ด้วยเทมเพลตอื่น (ซึ่งคลาสจะขยายคลาสบล็อกเดิม) ฉันรู้ว่าฉันสามารถสร้างชุดรูปแบบที่กำหนดเองที่แทนที่แม่แบบได้ แต่ฉันสนใจที่จะสร้างโมดูลที่เปลี่ยนแม่แบบเริ่มต้น แต่ก็ยังอนุญาตให้ใช้ธีมที่กำหนดเองแทนแม่แบบนั้นได้

4
Magento 2: ส่วนลูกค้า / section.xml ทำงานอย่างไร
ฉันเพิ่งเข้ามามีแนวคิดใหม่ใน Magento 2 ที่ฉันพบว่าน่าสนใจ: ส่วนลูกค้า คุณบางคนอาจสังเกตเห็นการปรากฏตัวของsections.xmlไฟล์ที่มีลักษณะเช่นนี้: <?xml version="1.0"?> <!-- /** * Copyright © 2016 Magento. All rights reserved. * See COPYING.txt for license details. */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd"> <action name="sales/guest/reorder"> <section name="cart"/> </action> <action name="sales/order/reorder"> <section name="cart"/> </action> </config> จากสิ่งที่ฉันเข้าใจไฟล์เหล่านั้นจะระบุส่วนของลูกค้าที่ควรได้รับการอัปเดตเมื่อเรียกการกระทำที่เกี่ยวข้อง ฉันสังเกตเห็นตัวอย่างเช่นMagento/Checkout/etc/frontend/sections.xmlในส่วนต่อไปนี้: <action name="checkout/cart/add"> <section name="cart"/> </action> นี่คือสิ่งที่กระตุ้นให้เกิดการอัพเดตมินิมาร์ทหลังจากที่คุณเพิ่มผลิตภัณฑ์ลงในรถเข็น ฉันพยายามสร้างโมดูลที่กำหนดเองด้วยetc/frontend/sections.xmlไฟล์ต่อไปนี้เพื่อทดสอบคุณสมบัตินั้น: <?xml …

6
การดีบักการโหลด XML โครงร่าง
TL: DR:มีวิธีที่ฉันสามารถดีบักการโหลดเค้าโครงหรือไม่ เพราะฉันเชื่อว่าเลย์เอาต์ของโมดูลหนึ่งขัดแย้งกับโมดูลอื่น ที่เกี่ยวข้องกับคำถามก่อนหน้านี้ที่ฉันทำ: วิธีการทำให้รูปแบบโมดูลที่จะแสดงในทุกรูปแบบ ฉันโหลดโมดูลของฉันสำเร็จแล้วในสภาพแวดล้อมการทดสอบในพื้นที่ (หรือที่เรียกว่า PC สำหรับการพัฒนาของฉัน) ทดสอบการสลับระหว่าง 3 ธีมที่แตกต่างกันและมันก็โอเค จากนั้นฉันอัปเดตโมดูลในการทดสอบหรือสภาพแวดล้อม "ก่อนการผลิต" ที่เรามีซึ่งมีโมดูลที่แตกต่างกันจำนวนมากบางส่วนเป็นกรรมสิทธิ์อื่น ๆ ที่ทำโดยเรา ในสภาพแวดล้อมนี้โมดูลจะไม่แสดงสิ่งที่จำเป็นในหน้าแรกของผลิตภัณฑ์ หลังจากการทดสอบบางอย่างในที่สุดฉันก็มาถึงข้อสรุปว่าปัญหาควรจะอยู่ในกระบวนการโหลดรูปแบบ ดังนั้นมีวิธีที่ฉันสามารถดีบักการโหลดโครงร่างโมดูลต่าง ๆ แทนที่หรือเพิ่มบล็อกของตัวเองได้อย่างไร ประเด็นของฉันคือฉันเชื่อว่ามีอย่างน้อยหนึ่งโมดูลที่ควรขัดแย้งกับของฉัน และในขณะที่เรามีโมดูลจำนวนมากฉันกำลังมองหาวิธีการที่แตกต่างกันในการปิดใช้งานโมดูลทีละคนและดูว่าเป็นปัญหาที่มีปัญหา ไฟล์ config.xml ของฉันคือ: <?xml version="1.0" encoding="UTF-8"?> <config> <modules> <Dts_Banners> <version>0.1.0</version> </Dts_Banners> </modules> <global> <blocks> <banners> <class>Dts_Banners_Block</class> </banners> </blocks> .... <events> <controller_action_layout_load_before> <observers> <attributesethandle> <class>Dts_Banners_Model_Observer</class> <method>addAttributeSetHandle</method> </attributesethandle> …

3
ลบ block จาก layout ใน Magento 2
ใน Magento 1 ฉันสามารถลบบล็อกที่เพิ่มโดยไฟล์เลย์เอาต์ได้โดยเพิ่มสิ่งนี้ลงในบล็อกเลย์เอาต์ของฉัน <remove ="block_id_here" /> ฉันจะทำเช่นเดียวกันสำหรับ Magento 2 ได้อย่างไร ในแบบฝึกหัดภาคปฏิบัติสมมติว่าฉันมีโมดูลของตัวเองที่ฉันต้องการลบบล็อกแดชบอร์ดออกจากหน้าแดชบอร์ดของผู้ดูแลระบบ บล็อกถูกเพิ่มจากการapp/code/Magento/Backend/view/adminhtml/layout/adminhtml_dashboard_index.xmlใช้สิ่งนี้: <referenceContainer name="content"> <block class="Magento\Backend\Block\Dashboard" name="dashboard"/> </referenceContainer> ฉันคิดว่าฉันจำเป็นต้องสร้างไฟล์view/adminhtml/layout/adminhtml_dashboard_index.xmlในโมดูลของฉัน แต่ฉันต้องใส่อะไรลงไป

7
ย้าย Javascript ทั้งหมดรวมถึงก่อนหน้า </body>
ไม่มีใครรู้วิธีการมีแท็กสคริปต์ JS ของ Magento ทั้งหมดเช่น&lt;script type="text/javascript" src="http://sitename.com/js/prototype/prototype.js"&gt;&lt;/script&gt;แสดงออกก่อนปิด&lt;/body&gt;? ฉันเคยลองครั้งนี้มาก่อน แต่ฉันได้รับข้อผิดพลาดซึ่งฉันคิดว่าเป็นไปตามแนวของวิธีการ addJS ที่ไม่สามารถใช้งานได้เมื่อฉันใช้มันอาจเป็นส่วนท้ายในการอ้างอิง

3
แสดง / ซ่อนบล็อคในเค้าโครง XML โดยมีเงื่อนไข
วิธีเพิ่มบล็อกแบบมีเงื่อนไข (ขึ้นอยู่กับการกำหนดค่าในแผงการดูแลระบบ) ใน XML เลย์เอาต์ของ Magento? เราสามารถตรวจสอบว่าการตั้งค่าเป็นจริงกับการกระทำ ในตัวอย่างด้านล่างหากการsample/config/show_toplinksกำหนดค่าจากแผงควบคุม (ในระบบ -&gt; การกำหนดค่า) เป็นจริงไฟล์แม่แบบlinks.phtmlจะถูกใช้เพื่อแสดงผลลิงก์ยอดนิยม หากsample/config/show_toplinksเป็นเท็จจะมีการใช้แม่แบบเริ่มต้น &lt;reference name="top.links"&gt; &lt;action method="setTemplate" ifconfig="sample/config/show_toplinks"&gt; &lt;template&gt;page/template/links.phtml&lt;/template&gt; &lt;/action&gt; &lt;/reference&gt; ฉันพบวิธีแก้ปัญหานี้ที่ใดที่หนึ่งในเว็บ เราสามารถตั้งค่าเทมเพลตเปล่าเป็นเทมเพลตเริ่มต้นสำหรับลิงค์ยอดนิยมเช่นนี้: &lt;reference name="top.links"&gt; &lt;action method="setTemplate" ifconfig="sample/config/show_toplinks"&gt; &lt;template&gt;page/template/links.phtml&lt;/template&gt; &lt;/action&gt; &lt;!-- OR set completely empty template --&gt; &lt;action method="setTemplate"&gt; &lt;template&gt;page/template/empty_template_for_links.phtml&lt;/template&gt; &lt;/action&gt; &lt;/reference&gt; ในกรณีนี้ถ้าsample/config/show_toplinksเป็นจริงเทมเพลตlinks.phtmlจะถูกใช้และลิงก์ยอดนิยมจะปรากฏขึ้น แต่ถ้าsample/config/show_toplinksเป็นเท็จแล้วempty_template_for_links.phtmlแม่แบบจะถูกใช้และแม่แบบที่จะสมบูรณ์ว่างจึงไม่กลับมาใช้ HTML และลิงก์ยอดนิยมจะมองไม่เห็น มีวิธีอื่นที่จะแสดงหรือซ่อนบล็อคตามเงื่อนไขโดยขึ้นอยู่กับการกำหนดค่าในแผงควบคุมหรือไม่ วิธีแก้ปัญหานี้ปลอดภัยหรือไม่ สิ่งนี้สามารถทำให้เกิดข้อผิดพลาดที่ไม่คาดคิดได้หรือไม่? แก้ไข: …
32 template  layout  blocks  xml 

3
เมื่อใดควรใช้ 'ชื่อ' และเมื่อใช้ 'เป็น'
ฉันพบว่าเมื่อพยายามใช้unsetChildวิธีการบางครั้งฉันต้องใช้แอตทริบิวต์ 'name' และ others 'as' ดูเหมือนว่าหากมีการเพิ่มบล็อกตามปกติคุณใช้ 'เป็น' แต่ถ้าถูกเพิ่มเข้าไปในบล็อกโดยใช้appendวิธีการคุณอาจต้องใช้ 'ชื่อ' สมมติฐานนี้ถูกต้องหรือไม่ อะไรคือเหตุผลที่อยู่เบื้องหลังสิ่งนี้และมีวิธีมาตรฐานที่จะเข้าใจคุณลักษณะที่คุณควรใช้

1
Magento 2: การเพิ่ม HTML Arbitrary ไปที่ <head> ของทุกหน้า?
ใน Magento 2 เป็นไปได้หรือไม่ที่จะเพิ่ม HTML ให้กับส่วนหน้า / รถเข็น&lt;head/&gt;? ฉันรู้ว่าฉันสามารถเพิ่มบล็อกลงในเนื้อหา / &lt;body&gt;พื้นที่ด้วยรหัสบางอย่างเช่นนี้ &lt;page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"&gt; &lt;body&gt; &lt;referenceBlock name="content"&gt; &lt;block type="Pulsestorm\Test\Block\Head" name="pulsestorm.head" as="pulsestorm.head" template="pulsestorm/head.phtml"/&gt; &lt;/referenceBlock&gt; &lt;/body&gt; &lt;/page&gt; อย่างไรก็ตามยังไม่ชัดเจนหากมีบล็อกที่คล้ายกันสำหรับการเพิ่มเนื้อหาใน&lt;head/&gt;องค์ประกอบของหน้า ฉันได้ดูไซต์ dev docs และซอร์สโค้ดแล้วและมีการอ้างอิงมากมายเกี่ยวกับแท็กใหม่ที่คุณสามารถใช้กับ&lt;head/&gt;แท็กได้ &lt;head&gt; &lt;css.../&gt; &lt;js.../&gt; &lt;/head&gt; แต่ฉันไม่พบการอ้างอิงถึงวิธีการเพิ่ม html / text ใด ๆ ลงใน&lt;head/&gt;ส่วนของหน้าใน Magento 2
23 php  layout  magento2 

1
Magento2: อะไรคือความแตกต่างระหว่างการอ้างอิงคอนเทนเนอร์และการอ้างอิงบล็อก
ทั้งสองreferenceBlockและreferenceContainerเอนทิตีถูกใช้ในเลย์เอาต์ใน magento2 อะไรคือความแตกต่างที่สำคัญระหว่างพวกเขากับฉันจะเชื่อมโยงเอนทิตี้เหล่านี้กับ magento1 ได้อย่างไร *

4
วิธีปฏิบัติที่ดีที่สุดในการแก้ไขลิงค์บนสุดของ Magento
สมมติว่าเราต้องการเพิ่มไอคอนรถเข็นช็อปปิ้งก่อนลิงก์ "รถเข็นของฉัน" ในลิงค์ด้านบนของ Magento (ดูลิงค์ด้านบนด้านล่าง) วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? ทำอะไรกับ toplinks.php ทำอะไรกับ links.phtml ไฟล์ xml หรือไม่ ตัวเลือกอื่น ๆ ? ฉันเข้าใจว่าสิ่งนี้สามารถทำได้ด้วย CSS แต่เมื่อความต้องการในการปรับแต่งของฉันเพิ่มขึ้นฉันต้องการทราบว่าวิธีนี้สามารถทำได้โดยไม่ต้องใช้ CSS ดังนั้นฉันจึงสามารถปรับแต่งสิ่งที่ยากขึ้นได้

3
การกำหนดเป้าหมายหลายเค้าโครงจัดการในเค้าโครง XML
ฉันมีตัวควบคุมแบบกำหนดเองที่เข้าถึงที่พา ธ/custommodule/customer/infoซึ่งกำลังโหลด2columns-left.phtmlเทมเพลตบนrootโหนดดังต่อไปนี้: &lt;custommodule_customer_info&gt; &lt;reference name="root"&gt; &lt;action method="setTemplate"&gt;&lt;template&gt;page/2columns-left.phtml&lt;/template&gt;&lt;/action&gt; &lt;/reference&gt; &lt;/custommodule_customer_info&gt; สิ่งที่ฉันต้องการจะทำคืออัปเดตเทมเพลตรูทสำหรับลูกค้าที่ไม่ได้เข้าสู่ระบบบางอย่างเช่น: &lt;customer_logged_out&gt; &lt;custommodule_customer_info&gt; &lt;reference name="root"&gt; &lt;action method="setTemplate"&gt;&lt;template&gt;page/1column.phtml&lt;/template&gt;&lt;/action&gt; &lt;/reference&gt; &lt;/custommodule_customer_info&gt; &lt;/customer_logged_out&gt; ฉันเข้าใจว่าฉันไม่สามารถกำหนดเป้าหมายหลายเลย์เอาต์ในแบบนี้ได้ แต่ความตั้งใจควรชัดเจน อัพเดตเทมเพลตรูทสำหรับการจัดการเลย์เอาต์นี้ในขณะที่ลูกค้าไม่ได้ล็อกอิน ฉันคิดว่าฉันสามารถกำหนดเป้าหมายตัวควบคุมของฉันด้วยสิ่งต่อไปนี้: &lt;customer_logged_out&gt; &lt;reference name="custommodule_customer_info"&gt; &lt;reference name="root"&gt; &lt;action method="setTemplate"&gt;&lt;template&gt;page/1column.phtml&lt;/template&gt;&lt;/action&gt; &lt;/reference&gt; &lt;/reference&gt; &lt;/customer_logged_out&gt; นี่เป็นการอัปเดตเทมเพลตรูทด้วย1column.phtmlเทมเพลต แต่มันก็ทำในสิ่งที่ดูเหมือนจะเป็นทุกหน้าแทนที่จะเป็นแค่หน้าเป้าหมายในreferenceโหนดของฉัน ฉันได้ลองหลายวิธีในการอัพเดทเลย์เอาต์นี้ แต่ดูเหมือนว่าจะไม่มีอะไรทำงาน ฉันจะกำหนดเป้าหมายตัวจัดการรูปแบบนี้ได้อย่างไรในเวลาเดียวกันโดยใช้ตัวcustomer_logged_outจัดการเค้าโครง - แก้ไข - เพื่อให้ชัดเจนนี่เป็นโมดูลของบุคคลที่สามจริงๆ
22 layout 


1
บล็อกด้วย Cachable = false ไม่แสดงผลในหน้ามุมมองผลิตภัณฑ์
ฉันใช้ magento2-1.0.0-beta4 ฉันคัดลอกcheckout.rootบล็อกจากapp/code/Magento/Checkout/view/frontend/layout/checkout_index_index.xmlไปยังหน้าผลิตภัณฑ์ page_cacheทุกอย่างมีการปรับการทำงานจนกว่าฉันจะเปิดใช้งาน บล็อกนั้นมีcacheable="false"อยู่ใน Layout XML ตอนนี้เมื่อฉันเปิดหน้าผลิตภัณฑ์บล็อกจะไม่แสดงผลเลย หากฉันเข้าใจแคชของหน้าอย่างถูกต้องมันควรโหลดบล็อคดังกล่าวผ่านการโทร AJAX แต่ดูเหมือนจะไม่เกิดขึ้นเช่นการโทร AJAX เป็นจุดพักของฉันใน\Magento\PageCache\Controller\Block\Render::executeไม่เคยโดน เมื่อเปิด/checkout/หรือใช้/checkout/cart/งานทุกอย่าง แต่ดูเหมือนจะไม่เกิดขึ้นกับการโทร AJAX แต่ดูเหมือนว่าหน้าทั้งหมดจะไม่ได้รับการแสดงผลจากแคชซึ่งเหมาะสมสำหรับรถเข็น ดังนั้นผมจึงควรยกเว้นเพียงหน้ามุมมองสินค้าจากpage_cache? แต่ฉันไม่พบวิธีที่จะทำเช่นนั้น?

2
ความแตกต่างระหว่าง <remove name =” "/> และ <action method =” unsetChild”> ในรูปแบบ
ความแตกต่างระหว่าง&lt;action method=”unsetChild”&gt;และ&lt;remove name=""/&gt;คืออะไร? ฟังก์ชั่นทั้งสองนี้ใช้เพื่อลบบล็อกออกจากเลย์เอาต์ มีคนอธิบายด้วยตัวอย่างได้ไหม
21 layout  theme  blocks 

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