Questions tagged «xml»

表示有关XML文件和XML处理的问题。

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

4
Magento 2 XML验证
一段时间以来,Magento 2有了一种使用XSD文件来验证(和自动完成)任何xml的方法。 例如,module.xml如下所示: <?xml version="1.0"> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd"> .... </config> 但现在module.xml看起来像这样: <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> .... </config> 因此xsi:noNamespaceSchemaLocation属性包含urn:magento:framework:。 我知道这与xml的服务器端验证无关。这仍然有效。 但是,为了识别通往xsd的路径,我该怎么做才能在IDE中恢复我的验证(在我的情况下为PHPStorm,但这并不重要,可以是其他任何事情)? 构建模块时是否仍应使用旧的相对路径?还是有更好的方法呢?

4
用自定义图像类型扩展名为“ imageType”的complexType
我当前正在开发的模块的目标是添加一个称为“ opengraph_image”的自定义图像类型。我通过可以正常运行的InstallData.php脚本添加了新的EAV属性。现在,我登录到Magento2后端并更改产品时,可以在上载或编辑产品图像时选择图像类型“ opengraph_image”。 但是,在前端我想显示此图像。因此,我在模块中创建了一个etc / view.xml文件,其内容如下: <?xml version="1.0"?> <view xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Esites_SEO:etc/custom.xsd"> <media> <images module="Magento_Catalog"> <image id="opengraph_image" type="opengraph_image"> <width>265</width> <height>265</height> </image> </images> </media> </view> 但是现在我得到以下错误: Invalid XML in file /var/www/html/vhosts/magento2/app/code/Esites/SEO/etc/view.xml: Element 'image', attribute 'type': [facet 'enumeration'] The value 'opengraph_image' is not an element of the set {'thumbnail', 'small_image', 'image', 'swatch_image', 'swatch_thumb'}. …
22 magento2  xml 

1
如何在Magento 2中合并为一个模块的模块中创建自定义XML文件?(MageStackDay之谜2)
MageStackDay奖励500pts悬赏的奖金问题,并有可能赢得一年的免费Z-Ray许可证。更多信息可以在这里 >> 这些问题是由Magento 2核心开发人员Anton Kril提供/启发的。 题: 我正在创建具有一组单独配置的扩展。 这意味着我无法使用config.xml或routes.xml或fieldset.xmlmagento拥有的任何其他配置xml文件。 例。 假设我正在定义一个具有行和列的“表”配置。我可以在下面使用此xml。(称之为table.xml) <table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="path/to/table.xsd"> <row id="row1"> <column id="col1" sort="10" attr1="val1"> <label>Col 1</label> </column> </row> <row id="row2"> <column id="col1" sort="10" attr1="val1"> <label>Col 1</label> </column> <column id="col2" sort="20" disabled="true" attr1="val2" > <label>Col 2</label> </column> <column id="col3" sort="15" attr1="val1"> <label>Col 3</label> </column> </row> </table> …

2
Magento2的xml中所有允许的`xsi:type`值是什么
在Magento 2中,(几乎)在xml文件中列出的所有参数都有一个属性xsi:type,该属性确定如何解释参数的值。 例如,在di.xml后端模块的文件中有以下内容: <argument name="scopeType" xsi:type="const">Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT</argument> 这意味着参数scopeType的值是常量的值Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT 或这个 <argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument> 这意味着参数的值template是字符串Magento_Theme::root.phtml。 此xsi:type属性的所有可能值是什么?
20 magento2  xml  di 

6
管理员配置错误:未定义索引:第59行的Iterator.php中的ID
有人可以向我解释这个错误吗? Exception #0 (Exception): Notice: Undefined index: id in /home/staging/vendor/magento/module-config/Model/Config/Structure/Element/Iterator.php on line 59 #0 /home/staging/vendor/magento/module-config/Model/Config/Structure/Element/Iterator.php(59): Magento\Framework\App\ErrorHandler->handler(8, 'Undefined index...', '/home/asconveyo...', 59, Array) #1 /home/staging/vendor/magento/module-config/Model/Config/Structure.php(92): Magento\Config\Model\Config\Structure\Element\Iterator->setElements(Array, 'default') #2 /home/staging/var/generation/Magento/Config/Model/Config/Structure/Interceptor.php(24): Magento\Config\Model\Config\Structure->getTabs() #3 /home/staging/vendor/magento/module-config/Model/Config/Structure.php(135): Magento\Config\Model\Config\Structure\Interceptor->getTabs() #4 /home/staging/var/generation/Magento/Config/Model/Config/Structure/Interceptor.php(63): Magento\Config\Model\Config\Structure->getFirstSection() #5 /home/staging/vendor/magento/module-config/Controller/Adminhtml/System/AbstractConfig.php(57): Magento\Config\Model\Config\Structure\Interceptor->getFirstSection() #6 /home/staging/vendor/magento/framework/Interception/Interceptor.php(74): Magento\Config\Controller\Adminhtml\System\AbstractConfig->dispatch(Object(Magento\Framework\App\Request\Http)) #7 /home/staging/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor->___callParent('dispatch', Array) #8 /home/staging/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Config\\...', 'dispatch', Object(Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor), Array, …
17 magento2  admin  xml 

1
Magento 2-布局XML中的ifconfig
我正在与magento 2合作。 我可以在块代码中使用ifconfig属性,并且效果很好。 <block class="Magento\Catalog\Block\Category\View" name="category_desc_main_column" template="category/desc_main_column.phtml" ifconfig="config_path/group/field" before="category.products"/> 但是我试图用它来移动,但是没有用。 <move element="category.image" destination="content" ifconfig="config_path/group/field" before="-"/> 有人知道如何使用它移动吗?

2
在Magento 2中设置管理路线
查看核心的Magento 2代码,似乎有两种方法来设置管理路径。 首先 #File: vendor/magento/module-media-storage/etc/adminhtml/routes.xml <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd"> <router id="admin"> <route id="adminhtml"> <module name="Magento_MediaStorage" /> </route> </router> </config> 与Magento 1类似。您将模块添加到adminhtml路径中的模块列表中,Magento会为您检查它。 第二 #File: vendor/magento/module-cms/etc/adminhtml/routes.xml <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd"> <router id="admin"> <route id="cms" frontName="cms"> <module name="Magento_Cms" before="Magento_Backend" /> </route> </router> </config> 有你建立一个新的路径(ID cms以上),然后将你的模块吧。 在Magento 2中,其中一种方法是“正确/首选”方法吗?如果没有,两者之间有什么区别?也就是说,您什么时候可以使用另一个? 要求不解决特定问题,但要确保我以正确的方式创建路由,并且避免了类似于Magento 1模块的问题(拉入ajax库,安全性等)。
15 magento2  php  xml  router 

2
如何从模块的config.xml中获取数据
在模块A中,我需要从模块B和C的config.xml文件中获取一些数据。是否有专门用于此的方法或类? 特别是,我需要获取节点的XML结构和值,<default>以便可以恢复模块B和C的系统配置的默认值。以下是Wishlist模块的config.xml中的示例: <config> <default> <wishlist> <general> <active>1</active> </general> <email> <email_identity>general</email_identity> <email_template>wishlist_email_email_template</email_template> </email> </wishlist> </default> </config> 据我所知,Magento加载了所有模块的config.xml文件,所以我想知道此数据是否已经缓存,并且可以通过某种方式从缓存中检索?如果没有,如何以编程方式检索它?

1
改善XML编译错误的错误消息
Magento在错误显示方面具有应有的保护作用。启用开发人员模式时(在开发过程中应该如此),该应用程序允许运行时错误反馈冒泡给用户。对于XML编译错误,尽管此反馈相当无用: 致命错误:消息“警告”的未捕获异常“异常”:实体:第4行:解析器错误:仅在[/] / lib / Varien / Simplexml / Config中的文档开头才允许XML声明。 daccess-ods.un.org daccess-ods.un.org在第245行的app / code / core / Mage / Core / functions.php中的510'行上的php 这是由于Varien_Simplexml_Config::loadFile()呈现::loadString()无法解析的字符串而导致的: public function loadFile($filePath) { if (!is_readable($filePath)) { //throw new Exception('Can not read xml file '.$filePath); return false; } $fileData = file_get_contents($filePath); $fileData = $this->processFileData($fileData); return $this->loadString($fileData, $this->_elementClass); …

3
Magento新的自定义块模块
我正在使用Magento 1.8.1.0版本。 我正在尝试创建一个新的自定义块模块,该模块将用于创建新的主页。 命名空间:十字军 模块:CLHomePage 街区类型:十字军东征 类:Qwerty(仅在测试时才适用) 设计包:十字军 主题:默认 这是我到目前为止所拥有的: \ app \ etc \ modules \ Crusader_All.xml <?xml version="1.0"?> <config> <modules> <Crusader_CLHomePage> <active>true</active> <codePool>local</codePool> </Crusader_CLHomePage> </modules> </config> \ app \ code \ local \ Crusader \ CLHomePage \ etc \ config.xml <?xml version="1.0"?> <config> <modules> <Crusader_CLHomePage> <version>0.0.1</version> </Crusader_CLHomePage> </modules> …

1
您调试xml相关异常的方式是什么?
我在gvim中使用Magento 2编码,而我是Magento 2的新手。 好几次,我每次都只能靠运气来调试与XML相关的错误。但是这种情况让我真的很沮丧:您不知道导致此错误的文件在哪里,调试器也不告诉这两个。 采取以下措施,我得到了:xml文件无效。实际上,我已经创建了一个模块,其中包含module.xml,routes.xml,config.xml,{layout} .xml,di.xml等,或下面的view / layout目录。哪个文件的第12/89 / ..行无效?生成的/合并的一个?我迷路了,因为在var / generated中什么都找不到,并且命令行停止工作。查找此错误是什么的调试方式是什么? 任何帮助表示赞赏。 致命错误:未捕获的Magento \ Framework \ Exception \ LocalizedException:无效的文档元素“项目”:类型定义是抽象的。行:12个元素“ item”,属性“ name”:关键身份约束“ itemName”字段的XPath“ @name”求值为一个具有多个成员的节点集。行:89元素“ item”:并非关键标识约束“ itemName”的所有字段都评估为一个节点。行:89元素“ item”,属性“ name”:关键身份约束“ itemName”字段的XPath“ @name”求值为一个具有多个成员的节点集。行:90元素“ item”:并非关键身份约束“ itemName”的所有字段都评估为一个节点。第90行在/var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php中:
11 magento2  php  xml  debugging 

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> …

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 

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.