Questions tagged «layout»

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

2
布局更新的CMS XML句柄
我曾尝试使用cms句柄来更新cms页面的布局。例如,我试图使用cms_index_index句柄引用root并设置页面模板。这失败了,我不得不通过管理系统直接在主页cms页面显示设置上进行此布局更新。 我还尝试使用cms_page句柄添加一个要引用的块。再次失败了,我不得不通过管理系统来实现布局更新。 我了解到您无法为cms页面分配根模板。正确吗,有人可以解释为什么吗? 我也想知道是否有一种方法可以使cms句柄使用标准引用,例如left,right,root等?我似乎能够引用诸如标题和内容之类的东西。

5
如何使模块布局显示在所有主题上
情况如下:我有几个自制模块,所有模块都经过测试,并使用默认主题工作。然后,我们购买并安装了一个新主题。切换到新主题,模块不显示。经过几次尝试/失败测试后,我发现我需要将相应的布局和模板文件复制到最近安装的主题的相应文件夹中。 所以,我的问题是:在模块设置后,我该怎么做才能使所有模块与任何主题一起工作?

2
如何将块移动到其他容器
作为新手,我正在寻找一种解决方法,将“ 登录和存储切换器”从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
Magento 2自定义主题布局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 我还有什么其他选择?为什么这种方法不起作用?

2
Magento 2:将变量从控制器操作传递到“视图”
在Magento 1中,如果要将数据从Controller动作传递到“视图”(即,布局中的块,则可以) 通过以下方式将值/对象添加到全局注册表中 Mage::register 运行后直接获取块对象并在获取的块对象上设置数据属性 loadLayout 调用phtml文件中块对象的方法,并使块对象使用模型/数据库层读取以前保存在控制器动作中的数据 在Magento 2中,仍然可以使用块对象方法从数据库中读取数据,这适用于某些类型的操作。然而, Magento 2中不再有全局注册表(或存在?) 现在,布局系统可以通过工厂创建页面对象来工作,并且您无法像在Magento 1中一样获取块引用 在Magento 2中,是否可以将数据从控制器动作直接传递到视图?还是对于Magento勇敢的全新Design Pattern™世界而言,这是否太直接了?如果这是直接模式,那么如果我们要在模板中显示一些计算出的信息,但又不想将该信息存储到有状态系统中(即我们不想将其保存到数据库) 我可以想出几种不同的方法来自己破解这些东西-但我对Magento 2 希望您如何做感兴趣。 注意:我意识到可以使用类似这样的方法在控制器动作中获取块实例 $resultPage = $this->resultPageFactory->create(); $block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js'); var_dump(spl_object_hash($block)); Magento 2核心代码经常这样做。但是-在控制器对象中获取的块对象似乎与phtml通过$this或在模板中可用的对象不同$block(前者($this似乎是实际呈现模板的对象,而后者($block)似乎是实际呈现模板的对象) Magento块类型的实例)。 #File: path/to/template.phtml var_dump(spl_object_hash($block)); var_dump(spl_object_hash($this)); 我之所以说“似乎是”,是因为如果我在controller action方法中设置数据,则该数据在phtml模板中不可用-如果我比较spl_object_hash上面的结果,则会得到三个不同的哈希值。但是,对于这一切我还是很陌生,因此上面的内容可能是我犯的其他错误-因此,如果您能够在块上设置数据并将其提取到模板中,那么我很想听听!

6
在Magento的页脚中加载js
<reference name="footer"> <action method="addItem"> <type>skin_js</type> <file>js/fabric/tool/controller_tool.js</file> </action> </reference> 我使用上面的代码将js加载到页脚中。但是Magento抛出错误 无效的方法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-在模板内访问子块并在其上设置数据: $this->getChild('child_name')->setData('item', $_item); echo $this->getChildHtml('child_name') 我认为就Magento架构而言,数字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 2中使用AJAX呈现HTML
我尝试在Magento 2中找到通过AJAX呈现HTML的最佳方法。 方法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); } /** * */ public function execute() { /** @var …

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"> <ul class="footer links">...</ul> </div> …

1
Magento 2:模块序列会影响布局处理XML加载顺序吗?
文件中的<sequence/>标签是否module.xml会影响Magento处理布局处理XML文件的顺序?我的初步研究说没有,但似乎错了,所以我在寻找的确认/证明,他们没有(其中布局处理XML文件路径生成和加载证明==源代码分) 如果序列标签不影响布局句柄XML文件的加载顺序,是否可以更改这些文件的加载顺序? 我要解决的特定问题是在容器实际添加到页面之前是否加载了以下内容 <referenceContainer name="product.info.media"> <action method="unsetChild"> <argument name="block" xsi:type="string">product.info.media.image</argument> </action> </referenceContainer> Magento 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> 在这种情况下,我通过搜索基本主题中的文件来设法找出此参考块的名称(名称=“徽标”)。 问题是:是否有更好的方法来找出块的名称。我认为必须在Magento的XMl文件中使用的所有名称都有一个列表吗?还是某种参考? 举例来说,我要删除菜单(<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') ?></div> </div> </footer> 解: 首先,我必须通过以下方法覆盖页脚中的页脚local.xml: <default> …

2
如何向Mage_Page模块添加页面布局?
我升级的Magento后发现,核心Mage_Page的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似乎没有工作,我应该如何去这样做不接触核心是什么?

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.