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

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

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

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ในโมดูลของฉัน แต่ฉันต้องใส่อะไรลงไป

3
magento 2 วิธีการเรียกฟังก์ชั่นบล็อกใด ๆ ใน phtml
ฉันจะเรียกใช้ฟังก์ชันบล็อกใด ๆ ใน phtml ใด ๆ ได้อย่างไร ตัวอย่างเช่นถ้าฉันต้องการเรียกใช้ฟังก์ชั่นบล็อกที่กำหนดเองของฉันในรายการ list.phtml

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

3
ฉันจะปิดการใช้งานแคชสำหรับส่วนหรือบล็อกเฉพาะได้อย่างไร
ฉันได้พัฒนาฟังก์ชั่นรถเข็นบาร์ด้านบนสำหรับหน้าร้านที่แสดงผลิตภัณฑ์สามรายการล่าสุดที่เพิ่มลงในรถเข็นซึ่งใช้งานได้ดีเมื่อปิดการใช้งานแคช แต่เมื่อฉันเปิดใช้งานแคชมันจะแสดงผลรวมย่อยแปลก ๆ นี่ทำให้ฉันเศร้า: '( ฉันรู้ว่าสิ่งนี้เกิดขึ้นเพราะแคช มีอะไรที่ฉันสามารถปิดการใช้งานแคชสำหรับส่วนนี้เท่านั้น? ฉันได้ลองปิดการใช้งานแคชบล็อก html และตรวจสอบว่าตอนนี้ใช้งานได้ดี แต่ฉันพบว่าหมวดหมู่แฟลตกำลังมีปัญหาที่ไม่ระบุเมื่อบล็อก HTML ถูกปิดใช้งาน

2
Magento 2: การรักษาความปลอดภัยแม่แบบ: วิธีไหนที่จะใช้?
ฉันทราบว่าวีโอไอพี 2 มีหลายวิธีที่จะรักษาความปลอดภัยของเทมเพลต: $block->escapeHtml() $block->escapeQuote() $block->escapeUrl() $block->escapeXssInUrl() แต่ฉันสงสัยว่าจะใช้วิธีเหล่านี้เมื่อใด

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

4
วิธีสร้างบล็อกแบบคงที่หลายภาษา
ฉันต้องการสร้างบล็อกแบบคงที่หลายภาษา จนถึงตอนนี้ฉันได้สร้างบล็อกแบบคงที่ด้วยรหัส 'delivery_returns' ฉันเรียกมันว่าในแคตตาล็อก \ product \ view.phtml เช่นนี้: $deliveryBlock = Mage::getModel('cms/block')->load('delivery_returns'); echo $deliveryBlock->getTitle(); echo $deliveryBlock->getContent(); ฉันเข้าใจที่จะแปลบล็อกนี้: ฉันควรสร้างอีกอัน เลือกภาษาที่ฉันต้องการจากสาขา store_view และเก็บตัวระบุบล็อกแบบคงที่เหมือนเดิม วิธีนี้ใช้ได้กับ 'footer_links' และกับสแตติกบล็อกอื่นที่ฉันสร้างขึ้นเรียกว่า 'header_links' แต่ดูเหมือนจะไม่ทำงานกับบล็อค 'delivery_returns' การเปลี่ยนภาษาของร้านค้าไม่ได้โหลดบล็อก 'delivery_returns' ที่สอดคล้องกัน ฉันพลาดอะไรไป มีวิธีที่ดีกว่าในการบรรลุเป้าหมายนี้หรือไม่?


1
DEBUG (7): ปัญหาด้านความปลอดภัย: block_name ไม่ได้อยู่ในรายการที่อนุญาต (ระบบ Magento.log)
ในsystem.logไฟล์ Magento ของฉันติดตั้งฉันมีข้อความแสดงข้อผิดพลาดดังต่อไปนี้ DEBUG (7): ปัญหาด้านความปลอดภัย: block_nameไม่ได้อยู่ในรายการที่อนุญาต ที่block_nameเป็นชื่อของบล็อกที่ใช้ในการจัดเก็บของฉัน มันหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร

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 

3
จะวินิจฉัยข้อผิดพลาด“ ประเภทบล็อกไม่ถูกต้อง .. ” ได้อย่างไร
ไม่แน่ใจว่าจะหาข้อผิดพลาดนี้ได้อย่างไรฉันใช้งาน Google เป็นเวลาหนึ่งสัปดาห์และดูเหมือนหาวิธีแก้ปัญหาไม่ได้ ความคิดใด ๆ 2013-06-10T04:04:28+00:00 ERR (3): exception 'Mage_Core_Exception' with message 'Invalid block type: ' in /home/xxxxxxx/public_html/app/Mage.php:594 Stack trace: #0 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block t...') #1 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout-&gt;_getBlockInstance('', Array) #2 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout-&gt;createBlock('', 'checkout.cart') #3 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout-&gt;addBlock('', 'checkout.cart') #4 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(205): Mage_Core_Model_Layout-&gt;_generateBlock(Object(Mage_Core_Model_Layout_Element), Object(Mage_Core_Model_Layout_Element)) #5 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Model/Layout.php(210): Mage_Core_Model_Layout-&gt;generateBlocks(Object(Mage_Core_Model_Layout_Element)) #6 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(344): Mage_Core_Model_Layout-&gt;generateBlocks() #7 /home/xxxxxxx/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(269): Mage_Core_Controller_Varien_Action-&gt;generateLayoutBlocks() …

1
ข้อผิดพลาดร้ายแรงการโทรไปยังฟังก์ชั่นสมาชิก dispatch () ในขณะที่เรียกบล็อกของฉันใน magento 2
นี่คือไฟล์บล็อกของฉัน: &lt;?php namespace ChennaiBox\Mymail\Block\Mail; class MailContent extends \Magento\Framework\View\Element\Template { protected $_objectManager; protected $customerSession; public function __construct( \Magento\Customer\Model\Session $customerSession, \Magento\Framework\ObjectManagerInterface $objectManager ) { $this-&gt;customerSession = $customerSession; $this-&gt;_objectManager = $objectManager; } public function mymailData() { try{ if ($this-&gt;customerSession-&gt;isLoggedIn()) { $cutomerEmail =(string)$this-&gt;customerSession-&gt;getCustomer()-&gt;getEmail(); echo $cutomerEmail; else{ $this-&gt;_redirect('customer/account/login/'); } }catch (Exception $e) { $e-&gt;getMessage(); } …

6
ลบ "ข้อมูลผลิตภัณฑ์บทวิจารณ์แท็ก" ออกจากหน้าผลิตภัณฑ์
ฉันกำลังพยายามลบบล็อกบางส่วนจากหน้าผลิตภัณฑ์ของฉันใน Magento แต่ดูเหมือนไม่สามารถหาที่ที่ฉันควรจะลบ ฉันคิดว่ามันอยู่ที่ไหนสักแห่งในไฟล์ XML แต่เนื่องจากฉันไม่เก่งเรื่องนักพัฒนาเว็บฉันจึงคิดว่ามันโง่ที่จะลองลบไฟล์บางไฟล์ ในผู้ดูแลระบบ Magento ฉันปิดใช้งานฟังก์ชั่น 'แท็ก' (admin -&gt; system -&gt; configuration -&gt; advanced -&gt; disable Mage_Tag)แล้ว แต่ไม่พบตำแหน่งที่จะลบทั้งบล็อก บล็อกที่เป็นวงกลมสีแดงในภาพคือบล็อกที่ฉันพยายามลบ ดังนั้นยัง 'productomschrijving' และ 'ข้อมูลเสริม'

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