Questions tagged «layout»

表示用于定义最终呈现模板文件的块层次结构的xml文件。

4
Magento 2中的UI组件网格的说明
在Magento 2中创建UI组件网格所需的最低配置是否有很好的解释和/或示例? 我知道有很多核心组件,例如 ./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:客户区段/sections.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 version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" …

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> </observers> </controller_action_layout_load_before> </events> </global> .... </config> 我的观察者文件: <?php class Dts_Banners_Model_Observer { /** * Checks if the search text on the list …

3
从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>之前
有谁知道如何使Magento的所有JS脚本标签(例如&lt;script type="text/javascript" src="http://sitename.com/js/prototype/prototype.js"&gt;&lt;/script&gt;在结束前渲染)&lt;/body&gt;? 我曾经尝试过这种方法,但是我得到了一个错误,我认为这是沿着addJS方法使用的,在我使用它的地方(可能在参考页脚中)不可用。

3
有条件地显示/隐藏布局XML中的块
如何有条件地在Magento的布局XML中添加一个块(取决于管理面板中的配置)? 我们可以检查config是否为true。在下面的示例中,如果sample/config/show_toplinks管理面板中的config(在“系统”-&gt;“配置”中)为true,则将使用模板文件links.phtml来呈现“顶部链接”。如果sample/config/show_toplinks为false,则将使用默认模板。 &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为true,则将使用模板links.phtml并显示“顶部链接”。但是如果sample/config/show_toplinks为false,则将empty_template_for_links.phtml使用该模板,并且该模板完全为空,因此它不返回任何HTML,并且顶部链接也不可见。 还有其他方法可以根据管理面板中的配置有条件地显示或隐藏块吗? 这种解决方法安全吗? 这会导致任何意外错误吗? 编辑: 根据所有答案,我认为Rick Kuipers的解决方案对于我的情况而言似乎最为方便。但是我还有另一个相关的问题: &lt;block type="core/template" name="my_block" template="my/block.phtml" /&gt; &lt;!-- ...add more blocks here --&gt; &lt;reference name="footer"&gt; …
32 template  layout  blocks  xml 

3
何时使用“名称”,何时使用“ as”
我发现尝试使用该unsetChild方法时,有时必须使用'name'属性,而其他则使用'as'。看来,如果正常添加一个块,则使用“ as”,但是如果使用该append方法将其添加到一个块,则可能必须使用“ name”。这个假设正确吗? 这背后的原因是什么,有没有一种标准的方法来理解您应该使用哪个属性?

1
Magento 2:向每个页面的<head>添加任意HTML吗?
在Magento 2中,是否可以向每个前端/购物车页面的HTML添加任意位的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;页面元素的类似块。我已经浏览了开发文档网站和源代码,并且有很多对新标签的引用,您可以将它们与&lt;head/&gt;标签一起使用 &lt;head&gt; &lt;css.../&gt; &lt;js.../&gt; &lt;/head&gt; 但我找不到&lt;head/&gt;在Magento 2 中将任意html /文本添加到页面部分的方法的任何参考。
23 php  layout  magento2 


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"在布局XML中。 现在,当我打开我的产品页面时,该块完全无法渲染。 如果我正确理解页面缓存,它应该通过AJAX调用加载此类块。但是似乎没有发生这样的AJAX调用,因为我的中断点\Magento\PageCache\Controller\Block\Render::execute从未被击中。 当打开/checkout/或/checkout/cart/一切正常。但是似乎也没有发生AJAX调用。相反,整个页面似乎都不是从缓存呈现的,这对于购物车来说是有意义的。 因此,我应该简单地从中排除产品视图页面page_cache吗?但是我没有找到方法吗?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.