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

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

2
CMS XML จัดการสำหรับการปรับปรุงเค้าโครง
ฉันมีสถานการณ์บางอย่างที่ฉันพยายามใช้ตัวจัดการ cms เพื่ออัปเดตเค้าโครงของหน้า cms ตัวอย่างเช่นฉันพยายามใช้ cms_index_index จัดการการอ้างอิงรูทและตั้งค่าเทมเพลตหน้า สิ่งนี้ล้มเหลวและฉันต้องทำการอัพเดตเลย์เอาต์นี้ผ่านระบบผู้ดูแลระบบโดยตรงในการตั้งค่าการแสดงผลหน้าแรกของ cms ฉันยังพยายามเพิ่มบล็อกเพื่ออ้างอิงซ้ายโดยใช้หมายเลขอ้างอิง cms_page สิ่งนี้ล้มเหลวอีกครั้งและฉันต้องใช้การอัพเดทโครงร่างผ่านระบบผู้ดูแลระบบ ฉันอ่านแล้วว่าคุณไม่สามารถกำหนดเทมเพลตรูทให้กับหน้าเว็บ cms ได้ ถูกต้องและทุกคนสามารถอธิบายได้ว่าทำไม ฉันยังสงสัยด้วยว่ามีวิธีใดที่จะเปิดใช้งานตัวจัดการ cms เพื่อใช้การอ้างอิงมาตรฐานเช่นซ้าย, ขวา, รูตเป็นต้น ฉันดูเหมือนจะสามารถอ้างอิงสิ่งต่าง ๆ เช่นหัวและเนื้อหาได้ดี

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

2
ย้ายบล็อกไปยังคอนเทนเนอร์อื่นได้อย่างไร
เป็น Newby ฉันมองหาวิธีแก้ปัญหาที่จะย้ายเข้าสู่ระบบและร้านสลับจากไปheader.panel header.containerฉันเพิ่งลองรหัสนี้ แต่ใช้ไม่ได้ <referenceContainer name="header.container"> <referenceBlock class="Magento\Store\Block\Switcher" name="store.settings.language" template="switch/languages.phtml"> </referenceBlock> </referenceContainer>

1
รูปแบบชุดรูปแบบที่กำหนดเองวีโอไอพี xml และ CSS ไม่ทำงาน
ฉันสร้างธีมใหม่และมันก็ทำงานได้ดี แต่หลังจากนั้นไม่กี่วันฉันก็ตระหนักว่ามีบางสิ่งที่ไม่ได้ทำงาน default_head_blocks.xml จะไม่ดึงไฟล์ css ใด ๆ ที่ฉันรวมอีกต่อไป (ทั้งโฮสต์และภายนอก) default.xml ไม่ได้เขียนทับแม่หนึ่ง ฉันไม่แน่ใจว่าเกิดจากอะไร ฉันยังพยายามลบ / var / โฟลเดอร์รวมถึง / pub / static / frontend /
13 layout  theme  css 

6
วิธีลบชื่อหน้า (h1) ออกจากหน้าแรก cms_index_index.xml ไม่ทำงาน
ฉันกำลังพยายามลบชื่อหลักของโฮมเพจออกในธีมที่กำหนดเองของฉัน (ซึ่งกำลังทำงานอยู่ด้านบนของธีม luma) ฉันได้พยายามเพิ่มแท็กปกติเพื่อลบดังต่อไปนี้ (และเนื่องจากได้รับคำตอบแล้วที่นี่) เนื้อหาทั้งหมดของcms_index_index.xmlไฟล์ปัจจุบันของฉัน: <?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceBlock name="page.main.title" remove="true"/> </body> </page> ฉันได้ลองใช้โปรแกรมอื่น ๆ เช่น <referenceBlock name="page.main.title" display="false"/> และ <referenceBlock name="cms_page" display="false"/> โดยไม่ประสบความสำเร็จเช่นกัน กำลังล้างแคชและไฟล์ถูกปรับใช้ ไฟล์ cms_index_index.xml ที่ฉันทำงานอยู่จะอยู่ในโฟลเดอร์ /app/design/frontend/<vendor>/<theme>/Magento_Cms/layout ฉันมีตัวเลือกอื่น ๆ อีกบ้าง? ทำไม aproach นี้ไม่ทำงาน

2
Magento 2: การส่งผ่านตัวแปรจากแอคชั่นคอนโทรลเลอร์ไปที่“ ดู”
ใน Magento 1 หากคุณต้องการส่งผ่านข้อมูลจากแอ็คชั่นคอนโทรลเลอร์ของคุณไปยัง "มุมมอง" (เช่นบล็อกในเลย์เอาต์ของคุณคุณสามารถทำได้) เพิ่มค่า / วัตถุให้กับรีจิสตรีส่วนกลางผ่าน Mage::register ดึงวัตถุบล็อกโดยตรงและตั้งค่าคุณสมบัติข้อมูลบนวัตถุบล็อกที่ถูกดึงข้อมูลหลังจากเรียกใช้ loadLayout วิธีการโทรบนบล็อกวัตถุในphtmlไฟล์และให้วัตถุบล็อกใช้เลเยอร์โมเดล / ฐานข้อมูลเพื่ออ่านข้อมูลที่บันทึกไว้ก่อนหน้านี้ในแอคชั่นคอนโทรลเลอร์ การใช้วิธีการบล็อกวัตถุเพื่ออ่านจากฐานข้อมูลยังคงปรากฏว่าทำงานได้ใน Magento 2 - ซึ่งเหมาะสำหรับการใช้งานบางประเภท อย่างไรก็ตาม ไม่มีการลงทะเบียนระดับโลกใน Magento 2 อีกต่อไป (หรือมีอยู่แล้ว) ตอนนี้ระบบเลย์เอาต์ทำงานโดยการสร้างวัตถุหน้าผ่านโรงงานและคุณไม่สามารถคว้าการอ้างอิงบล็อกแบบเดียวกับที่คุณทำได้ใน Magento 1 เป็นไปได้ไหมใน Magento 2 ที่จะส่งผ่านข้อมูลโดยตรงจากคอนโทรลเลอร์ลงสู่มุมมอง? หรือนี่เป็นรูปแบบที่ตรงกับโลกแห่ง Design Pattern ™ที่กล้าหาญของวีโอไอพีหรือไม่? หากนี่เป็นรูปแบบที่ตรงเกินไปสิ่งที่ควรทำถ้ามีข้อมูลจากการคำนวณบางอย่างที่เราต้องการแสดงในเทมเพลต แต่ไม่ต้องการเก็บข้อมูลนั้นไว้ในระบบ stateful (เช่นเราไม่ต้องการบันทึกลงใน ฐานข้อมูล) ฉันสามารถคิดถึงวิธีที่แตกต่างกันเล็กน้อยในการแฮ็คข้อมูลนี้ด้วยตนเอง - แต่ฉันสนใจว่า Magento 2 ต้องการให้คุณทำอย่างไร หมายเหตุ : …

6
โหลด js ในส่วนท้ายใน Magento
<reference name="footer"> <action method="addItem"> <type>skin_js</type> <file>js/fabric/tool/controller_tool.js</file> </action> </reference> ฉันใช้โค้ดด้านบนเพื่อโหลด js ในส่วนท้าย แต่วีโอไอพีพ่นข้อผิดพลาดเช่น วิธีการที่ไม่ถูกต้อง Mage_Page_Block_Html_Footer :: addItem (Array ([0] => skin_js [1] => js / fabric / tool / controller_tool.js)) ฉันต้องการโหลด js ในส่วนท้าย วิธีที่จะเอาชนะปัญหานี้

4
ส่งผ่านข้อมูลไปยัง getChildHtml () หรือวิธีการโทรในบล็อกย่อย
ฉันต้องการส่งผ่านข้อมูลไปยังการเรียกใช้ getChildHtml () เหตุผลคือผลลัพธ์ของบล็อกขึ้นอยู่กับประเภทของผลิตภัณฑ์ ดังนั้นฉันต้องการส่งผลิตภัณฑ์ไปที่ getChildHtml เพื่อให้สามารถตัดสินใจเกี่ยวกับผลลัพธ์ template/checkout/cart/item/default.phtmlฉันกำลังทำอยู่ภายในนี้ เป็นการดีที่การโทรจะมีลักษณะดังนี้: echo $this->getChildHtml('child_block_name', $_item); จากนั้นบล็อกของฉันจะได้รับประเภทผลิตภัณฑ์จากรายการและแสดงผลลัพธ์ที่ถูกต้อง เนื่องจากเป็นไปไม่ได้ที่จะส่งผ่านข้อมูลนี้ไปgetChildHtml- พฤติกรรมประเภทนี้สามารถทำได้โดยไม่ต้องเขียนบล็อกแกนใหม่ สองวิธีที่ฉันมีอยู่ในปัจจุบันมีดังนี้ (ไม่น่าสนใจมาก): 1 - สร้างผู้ช่วยและเข้าถึงเอาต์พุต html ผ่านตัวช่วยแทนที่จะปล่อยให้บล็อกและเทมเพลตแสดงเป็น ala $this->helper('my_module')->getItemHtml($_item); 2 - เข้าถึงบล็อกย่อยและ setData ที่อยู่ด้านในเทมเพลต: $this->getChild('child_name')->setData('item', $_item); echo $this->getChildHtml('child_name') ฉันคิดว่าในแง่ของสถาปัตยกรรมวีโอไอพีหมายเลข 2 นั้นน้อยกว่าความชั่วร้ายสองอย่าง แต่มันน่าเกลียดน่าดูในเทมเพลต
12 layout  blocks 

3
ลบบล็อกจากเลย์เอาต์ที่ไม่มีชื่อ
ฉันต้องการลบบล็อกออกจากเลย์เอาต์ใน magento 2 ที่มีการประกาศในส่วนขยายของบุคคลที่สาม แต่บล็อกนั้นไม่มีชื่อ ฉันจะทำสิ่งนั้นได้ไหม บล็อกถูกประกาศเช่นนี้ <referenceContainer name="before.body.end"> <block class="Magento\Backend\Block\Template" template="[Vendor_Module]::template.phtml"/> </referenceContainer> ฉันไม่สามารถใช้ <referenceBlock name="..." remove="true" /> เพราะอย่างที่คุณเห็นไม่มีชื่อเลย

3
วิธีแสดง HTML ด้วย AJAX ใน Magento 2
ฉันพยายามค้นหาวิธีที่ดีที่สุดในการแสดง HTML ผ่าน AJAX ใน Magento 2 วิธีที่ 1: การใช้ตัวควบคุมโดยไม่มีเค้าโครง ไฟล์ Foo/Bar/Controller/Popin/Content.php <?php namespace Foo\Bar\Controller\Popin; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; /** * Class Content */ class Content extends Action { /** * Content constructor. * * @param Context $context */ public function __construct( Context $context ) { parent::__construct($context); } /** * …

1
Magento 2: วิธีเพิ่มข้อความภายในคอนเทนเนอร์ผ่าน XML
ฉันพยายามแสดงข้อความบรรทัดเดียวก่อนรายการลิงก์ในส่วนท้าย การสร้างไฟล์เทมเพลตเพื่อทำสิ่งนี้ดูเหมือนจะเป็นการสิ้นเปลืองทรัพยากรสำหรับงานนี้ ตามที่ฉันเข้าใจฉันสามารถส่งออกข้อความด้วยMagento\Framework\View\Element\Textบล็อกในเค้าโครง XML <referenceContainer name="footer"> <container name="footer.column.about_us" htmlTag="div" htmlClass="column about-us" before="-"> <container name="column.about_us.label" htmlTag="div" htmlClass="label"> <block class="Magento\Framework\View\Element\Text" name="about_us.label"> <arguments> <argument name="data" xsi:type="array"> <item name="text" xsi:type="string">About Us</item> </argument> </arguments> </block> </container> <block class="Magento\Framework\View\Element\Html\Links" name="footer_links.about_us"> <arguments> <argument name="css_class" xsi:type="string">footer links</argument> </arguments> </block> </container> </referenceContainer> ก่อนหน้านี้จะไม่แสดงผลใด ๆ และฉันไม่แน่ใจว่าสิ่งนี้จะได้รับการสนับสนุนหรือไม่หากฉันเพิ่งทำผิดหรือมีวิธีการอื่นที่เหมาะสมกว่าในการทำสิ่งนี้ให้สำเร็จ เพื่อให้ชัดเจนสิ่งที่ฉันเห็นอยู่ในขณะนี้คือ: <div class="column about-us"> …

1
Magento 2: การเรียงลำดับผลกระทบของ Module Module จัดการกับการโหลดคำสั่ง XML หรือไม่?
อย่า<sequence/>แท็กในmodule.xmlไฟล์ส่งผลกระทบต่อการสั่งซื้อวีโอไอพีจะประมวลผลไฟล์รูปแบบ XML จับอะไรบ้าง? การวิจัยเบื้องต้นของฉันบอกว่าไม่แต่ดูเหมือนผิดดังนั้นฉันกำลังมองหาการยืนยัน / พิสูจน์ว่าพวกเขาไม่ได้ (หลักฐาน == รหัสแหล่งที่มาจุดที่รูปแบบการจัดการเส้นทางไฟล์ XML จะถูกสร้างและโหลด) หากแท็กลำดับไม่ส่งผลกระทบต่อการจัดการลำดับการโหลดไฟล์ XML - มีวิธีการเปลี่ยนลำดับโมดูลหรือไม่ไฟล์เหล่านี้ถูกโหลดเข้ามาหรือไม่? ปัญหาเฉพาะที่ฉันพยายามแก้ไขคือถ้าฉันโหลดสิ่งต่อไปนี้ก่อนที่จะลงโฆษณาในคอนเทนเนอร์จริง ๆ <referenceContainer name="product.info.media"> <action method="unsetChild"> <argument name="block" xsi:type="string">product.info.media.image</argument> </action> </referenceContainer> วีโอไอพี barfs

6
ค้นหา "ชื่อ" สำหรับการอ้างอิงบล็อกใน Magento 2
ฉันต้องการลบบล็อกบางส่วนออกจากหน้าของฉัน พูดเช่นฉันต้องการลบคอนเทนเนอร์สำหรับโลโก้ จากนั้นฉันสร้าง/app/design/frontend/MYVENDORNAME/MYTHEMENAME/Magento_Theme/layout/default.xmlด้วยรหัสต่อไปนี้: <page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <referenceBlock name="logo" remove="true"/> </page> ในกรณีนี้ฉันจัดการเพื่อหาชื่อ (name = "logo") ของบล็อกอ้างอิงนี้โดยการค้นหาไฟล์ใน Theme Base คำถามคือ: มีวิธีที่ดีกว่าในการหาชื่อของบล็อก ฉันคิดว่าต้องมีรายชื่อทั้งหมดที่ใช้ในไฟล์ XMl ใน Magento? หรือการอ้างอิงบางอย่าง? พูดเช่นว่าฉันต้องการลบเมนู ( <div class="sections nav-sections">...</div>) ฉันจะหาชื่อได้อย่างไร
11 magento2  layout  xml 

1
ความแตกต่างระหว่าง getChildHtml และ getBlockHtml คืออะไร
สรุป ความแตกต่างระหว่างgetChildHtmlและgetBlockHtmlคืออะไร? ฉันจะรับชื่อ cms / block ในเทมเพลตได้อย่างไร ฉันได้แทนที่ส่วนท้ายด้วยส่วนท้ายของฉันและตั้งค่าของฉันเอง<?= $this->getChildHtml('...') ?>สิ่งนี้ไม่ทำงานจนกว่าฉันจะใช้: <?= $this->getBlockHtml('...') ?>. โครงร่าง XML: <layout> <default> <block type="core/template" name="custom_footer" as="footer" template="page/html/footer.phtml"> <block type="cms/block" name="child_1"> <action method="setBlockId"><block_id>footer_child_1</block_id></action> </block> </block> </layout> </default> เทมเพลต (ใช้งานไม่ได้): <footer> <div class="row"> <div class="col-sp4"><?= $this->getChildHtml('child_1') ?></div> </div> </footer> แม่แบบ (งาน): <footer> <div class="row"> <div class="col-sp4"><?= $this->getBlockHtml('child_1') …

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จะไม่ทำงานฉันควรดำเนินการอย่างไรโดยไม่แตะที่แกนกลาง

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