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

แสดงถึงคำถามเกี่ยวกับคลาส `Block`

4
ข้อผิดพลาดของตัวสลับเปลี่ยน Magento 2 Store ใน“ section-config.js” Uncaught TypeError: ไม่สามารถอ่านคุณสมบัติ '*' จากไม่ได้กำหนด (…)
ฉันกำลังใช้ตัวจัดการร้านค้าแบบกำหนดเองในธีมที่กำหนดเองของฉัน เทมเพลตบล็อกมีดังนี้: <?php if (count($block->getStores())>1): ?> <?php $id = $block->getIdModifier() ? '-' . $block->getIdModifier() : ''?> <span><?php echo $block->escapeHtml($block->getStoreName()) ?></span> <span>/</span> <?php foreach ($block->getStores() as $_lang): ?> <?php if ($_lang->getId() != $block->getCurrentStoreId()): ?> <span class="view-<?php echo $block->escapeHtml($_lang->getCode()); ?> switcher-option"> <a href="#" data-post='<?php /* @escapeNotVerified */ echo $block->getTargetStorePostData($_lang); ?>'> <?php echo …

3
Magento โมดูลบล็อกที่กำหนดเองใหม่
ฉันใช้ Magento รุ่น1.8.1.0 ฉันกำลังพยายามสร้างโมดูลบล็อกที่กำหนดเองใหม่ซึ่งฉันจะใช้สำหรับสร้างโฮมเพจใหม่ Namespace: Crusader โมดูล: CLHomePage ประเภท Block: บ้านครูเสด Class: Qwerty (ตอนนี้กำลังทดสอบอยู่) แพ็คเกจการออกแบบ: สงคราม ธีม: ค่าเริ่มต้น นี่คือสิ่งที่ฉันมี: \ แอป \ etc \ โมดูล \ Crusader_All.xml <?xml version="1.0"?> <config> <modules> <Crusader_CLHomePage> <active>true</active> <codePool>local</codePool> </Crusader_CLHomePage> </modules> </config> \ แอป \ รหัส \ ท้องถิ่น \ สงคราม \ CLHomePage \ etc \ …

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


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
ความแตกต่างระหว่าง 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
การตั้งค่าวิดเจ็ต Magento 1 ในแบ็กเอนด์ - ฉันจะเลื่อนขึ้นไปได้อย่างไร
ฉันมีการตั้งค่าวิดเจ็ตในหน้าหมวดหมู่ทั้งหมดผ่านแบ็กเอนด์ -> CMS -> วิดเจ็ต ตอนนี้เมื่อฉันใช้วิธีนี้ฉันเลือกบล็อกสำหรับหน้าหมวดหมู่และบล็อกแสดงขึ้นเป็นอย่างดี มันอยู่ที่ด้านล่างของข้อมูลอื่น ๆ ทั้งหมดในคอลัมน์ด้านซ้าย แต่ฉันจะย้ายบล็อกขึ้นไปด้านบนได้อย่างไร (เหนือชั้น ฯลฯ ) ... ทางเลือกคือการใช้งานlocal.xmlที่ฉันไม่ชอบ + มันก็จะปรากฏบนเว็บไซต์ของฉันทั้งหมดที่ใช้ชุดรูปแบบเดียวกัน

3
ประเภทบล็อกไม่ถูกต้อง: [Namespace] \ [Module] \ Block \ Timeline
ฉันพยายามเพิ่มบล็อกไปยังส่วนท้าย แต่จนถึงตอนนี้มันกลับมาแล้ว Invalid block type: [Namespace]\[Module]\Block\Timeline แหล่งที่มาของสิ่งที่ฉันมีจนถึงสามารถพบได้ที่นี่: https://github.com/sandermangel/magento2-twitterfeed ของฉัน layout/default.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="footer"> <block class="[Namespace]\[Module]\Block\Timeline" name="twitterfeed-timeline" template="footer/timeline.phtml"></block> </referenceBlock> </body> </page> และคลาสบล็อกของฉันใน vendor/[namespace]/[module]/Block/Timeline.php namespace [Namespace]\[Module]\Block; use Magento\Framework\View\Element\Template; class Timeline extends Template { /** * Timeline constructor. * @param Template\Context $context * @param array $data */ public …
11 blocks  magento2 

3
Magento 2: วิธีเพิ่มบล็อกเพิ่มเติมในหน้าชำระเงิน?
liฉันต้องการจะแทนที่แฟ้มข้างต้นและแสดงบล็อกของฉันเองใน วีโอไอพี \ ผู้ขาย \ วีโอไอพี \ โมดูลเช็คเอาท์ \ มุมมอง \ ส่วนหน้า \ เว็บ \ แม่แบบ \ shipping.html <li id="shipping" class="checkout-shipping-address" data-bind="fadeVisible: visible()"> <div class="step-title" data-bind="i18n: 'Shipping Address'" data-role="title"></div> </li> <!-- ko if:myBlock --> // Mine need to call block created from Admin <li> <p data-bind="html: myBlock"></p> </li> <!-- /ko …



1
Magento 2 - block name vs เป็นชื่อ
ฉันทำงานบางอย่างในMagento 2และได้เขียนทับโมดูลที่ฉันติดตั้งแล้ว (ที่ส่วนหน้า) อย่างไรก็ตามวันนี้ฉันเพิ่งเจอสิ่งที่ฉันไม่เคยพบมาก่อน โมดูลที่ฉันใช้มีบล็อกอยู่ภายในซึ่งมีสิ่งต่อไปนี้: <referenceBlock name="product.info.details"> <block class="Vender\Module\Block\Catalog\Related" name="posts.tab" as="blog.posts" template="Vender_Module::catalog/posts.phtml" group="detailed_info"> </block> </referenceBlock> มันตั้งชื่อ: posts.tab แล้วใช้เป็นจะให้มันถูกเรียกว่าผ่าน: เป็น = "blog.posts" เมื่อฉันพยายามที่จะอ้างอิงบล็อกจะถูกลบออกใช้เป็นชื่อผมสังเกตเห็นว่ามันก็ไม่ได้ลบออกจากหน้า: <referenceBlock name="product.info.details"> <referenceBlock as="blog.posts" remove="true"/> </referenceBlock> ดังนั้นฉันจึงไปดูสิ่งที่หน้าจริงเรียกว่าในส่วนหน้า (เพียงเพราะมันถูกเปลี่ยนชื่อที่อื่นหรือไม่ได้ใช้ชื่อ posts.tab) - ชื่อบล็อกจะถูกเรียกด้วยposts.tabซึ่งเป็นสิ่งที่ดี เนื่องจากฉันสามารถอ้างอิงบล็อกนั้นเพื่อลบออกได้ มันใช้งานได้ดี แต่คำถามของฉันคือทำไมบล็อกไม่ถูกดึงผ่านการใช้เป็นและแทนที่จะถูกดึงผ่านการใช้ชื่อแทน ประการที่สองสิ่งที่เป็นจุดในการเป็นเพราะเห็นได้ชัดว่าบล็อกไม่สามารถมีความขัดแย้งชื่ออยู่แล้วและต้องไม่ซ้ำกัน - แต่ผมอาจจะผิดโดยสิ้นเชิง

4
Magento 2: วิธีการเปลี่ยนเทมเพลตของบล็อกโดยไม่มี“ ชื่อ”
ฉันต้องการเปลี่ยนเพื่อแทนที่เทมเพลตของบล็อกด้วยเทมเพลตที่กำหนดเองของฉัน แต่มันไม่มี "ชื่อ" แต่จะมี "เป็น" เท่านั้น สิ่งที่ฉันต้องการแทนที่คือ: <block class="Magento\Sales\Block\Adminhtml\Order\View\Items\Renderer\DefaultRenderer" as="default" template="order/view/items/renderer/default.phtml"/>

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