Rem*_*emy 9 php xml layout magento
我遇到问题,让customer.xml布局文件在客户的"我的帐户"页面上正常工作.
导航链接和通常位于页面左侧的先前订购的项目将不会显示在页面上,但如果我将参考名称更改为xml文件中的"content",则会显示(除了它之外)显然然后在右边).我已经检查了它引用的模板(2columns-left.phtml),并且getChildHtml('left')位于正确的位置.
导致问题的块:
<customer_account>
<!-- Mage_Customer -->
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
<reference name="left">
<action method="unsetChild"><name>catalog.navigation.all</name></action>
<action method="unsetChild"><name>callout.sendcard</name></action>
<action method="unsetChild"><name>callout.specialorder</name></action>
<block type="customer/account_navigation" name="customer_account_navigation" before="-" template="customer/account/navigation.phtml">
<action method="addLink" translate="label" module="customer"><name>account</name><path>customer/account/</path><label>Account Dashboard</label></action>
<action method="addLink" translate="label" module="customer"><name>account_edit</name><path>customer/account/edit/</path><label>Account Information</label></action>
<action method="addLink" translate="label" module="customer"><name>address_book</name><path>customer/address/</path><label>Address Book</label></action>
</block>
<block type="sales/reorder_sidebar" name="sale.reorder.sidebar" as="reorder" template="sales/reorder/sidebar.phtml"/>
<remove name="tags_popular"/>
</reference>
</customer_account>
Run Code Online (Sandbox Code Playgroud)
这基本上是从我们的另一个网站直接复制,这是100%的工作.我已经尝试了我能想到的一切(例如,在模板和布局xml中更改引用的名称)无济于事.布局引用的模板显然有效,因为它们在放入"内容"区域时会显示出来.
magento的安装版本为1.3.1.1.
我感谢您给我的任何建议......
更新:我尝试将引用更改为"global_messages",它也没有显示.它似乎只适用于"内容"部分.
更新2:这些是在使用Alan Storm非常方便的调试模块时在页面上使用"showLayout = page"查询字符串的结果(您可以在下面的答案中找到).
<?xml version="1.0"?>
<layout><block type="page/html" name="root" output="toHtml" template="page/3columns.phtml">
<block type="page/html_head" name="head" as="head">
<action method="addJs">
<script>prototype/prototype.js</script>
</action>
<action method="addJs">
<script>prototype/validation.js</script>
</action>
<action method="addJs">
<script>paypoint/validation.js</script>
</action>
<action method="addJs">
<script>scriptaculous/builder.js</script>
</action>
<action method="addJs">
<script>scriptaculous/effects.js</script>
</action>
<action method="addJs">
<script>scriptaculous/dragdrop.js</script>
</action>
<action method="addJs">
<script>scriptaculous/controls.js</script>
</action>
<action method="addJs">
<script>scriptaculous/slider.js</script>
</action>
<action method="addJs">
<script>varien/js.js</script>
</action>
<action method="addJs">
<script>varien/form.js</script>
</action>
<action method="addJs">
<script>varien/menu.js</script>
</action>
<action method="addJs">
<script>mage/translate.js</script>
</action>
<action method="addJs">
<script>mage/cookies.js</script>
</action>
<action method="addCss">
<stylesheet>css/reset.css</stylesheet>
</action>
<action method="addCss">
<stylesheet>css/boxes.css</stylesheet>
</action>
<action method="addCss">
<stylesheet>css/clears.css</stylesheet>
</action>
<action method="addCss">
<stylesheet>css/menu.css</stylesheet>
</action>
<action method="addCss">
<stylesheet>css/calendar-blue.css</stylesheet>
</action>
<action method="addCss">
<stylesheet>css/styles.css</stylesheet>
</action>
<action method="addItem">
<type>skin_css</type>
<name>css/iestyles.css</name>
<params/>
<if>IE</if>
</action>
<action method="addItem">
<type>skin_css</type>
<name>css/ie7.css</name>
<params/>
<if>IE 7</if>
</action>
<action method="addItem">
<type>skin_css</type>
<name>css/ie7minus.css</name>
<params/>
<if>lt IE 7</if>
</action>
<action method="addItem">
<type>js</type>
<name>lib/ds-sleight.js</name>
<params/>
<if>lt IE 7</if>
</action>
<action method="addItem">
<type>js</type>
<name>varien/iehover-fix.js</name>
<params/>
<if>lt IE 7</if>
</action>
<action method="addCss">
<stylesheet>css/print.css</stylesheet>
<params>media="print"</params>
</action>
</block>
<block type="page/html_header" name="header" as="header">
<block type="page/template_links" name="top.links" as="topLinks"/>
<block type="page/switch" name="store_language" as="store_language" template="page/switch/languages.phtml"/>
<block type="core/template" name="top.nav" template="page/html/top.nav.phtml"/>
</block>
<block type="core/messages" name="global_messages" as="global_messages"/>
<block type="core/messages" name="messages" as="messages"/>
<block type="core/text_list" name="content" as="content"/>
<block type="core/text_list" name="right" as="right"/>
<block type="page/html_footer" name="footer" as="footer" template="page/html/footer.phtml"/>
<block type="core/text_list" name="before_body_end" as="before_body_end"/>
</block>
<block type="core/profiler" output="toHtml"/>
<reference name="top.links">
<action method="addLink" translate="label title" module="customer">
<label>My Account</label>
<url helper="customer/getAccountUrl"/>
<title>My Account</title>
<prepare/>
<urlParams/>
<position>10</position>
</action>
</reference>
<reference name="root">
<action method="setTemplate">
<template>page/2columns-left.phtml</template>
</action>
</reference>
<reference name="top.menu">
<block type="catalog/navigation" name="catalog.topnav" template="catalog/navigation/top.phtml"/>
</reference>
<reference name="footer_links">
<action method="addLink" translate="label title" module="catalog" ifconfig="catalog/seo/site_map">
<label>Site Map</label>
<url helper="catalog/map/getCategoryUrl"/>
<title>Site Map</title>
</action>
</reference>
<reference name="footer_links">
<action method="addLink" translate="label title" module="catalogsearch" ifconfig="catalog/seo/search_terms">
<label>Search Terms</label>
<url helper="catalogsearch/getSearchTermUrl"/>
<title>Search Terms</title>
</action>
<action method="addLink" translate="label title" module="catalogsearch">
<label>Advanced Search</label>
<url helper="catalogsearch/getAdvancedSearchUrl"/>
<title>Advanced Search</title>
</action>
</reference>
<reference name="top.links">
<block type="checkout/links" name="checkout_cart_link">
<action method="addCartLink"/>
<action method="addCheckoutLink"/>
</block>
</reference>
<reference name="footer">
<block type="cms/block" name="cms_footer_links" before="footer_links">
<action method="setBlockId">
<block_id>footer_links</block_id>
</action>
</block>
</reference>
<reference name="left">
<block type="tag/popular" name="tags_popular" template="tag/popular.phtm" ignore="1">
<action method="setTemplate">
<template>tag/popular.phtml</template>
</action>
</block>
</reference>
<reference name="left">
</reference>
<reference name="before_body_end">
<block type="googleanalytics/ga" name="google_analytics" as="google_analytics"/>
</reference>
<reference name="footer_links">
<action method="addLink" translate="label title" module="contacts" ifconfig="contacts/contacts/enabled">
<label>Contact Us</label>
<url>contact-us</url>
<title>Contact Us</title>
<prepare>true</prepare>
</action>
</reference>
<reference name="footer_links">
<action method="addLink" translate="label title" module="rss" ifconfig="rss/config/active">
<label>RSS</label>
<url>rss</url>
<title>RSS testing</title>
<prepare>true</prepare>
<urlParams/>
<position/>
<li/>
<a>class="link-feed"</a>
</action>
</reference>
<reference name="wishlist_sidebar">
<action method="addPriceBlockType">
<type>bundle</type>
<block>bundle/catalog_product_price</block>
<template>bundle/catalog/product/price.phtml</template>
</action>
</reference>
<reference name="cart_sidebar">
<action method="addItemRender">
<type>bundle</type>
<block>bundle/checkout_cart_item_renderer</block>
<template>checkout/cart/sidebar/default.phtml</template>
</action>
</reference>
<reference name="root">
<action method="setTemplate">
<template>page/2columns-left.phtml</template>
</action>
</reference>
<reference name="left">
<action method="unsetChild">
<name>catalog.navigation.all</name>
</action>
<action method="unsetChild">
<name>callout.sendcard</name>
</action>
<action method="unsetChild">
<name>callout.specialorder</name>
</action>
<block type="customer/account_navigation" name="customer_account_navigation" before="-" template="customer/account/navigation.phtml">
<action method="addLink" translate="label" module="customer">
<name>account</name>
<path>customer/account/</path>
<label>Account Dashboard</label>
</action>
<action method="addLink" translate="label" module="customer">
<name>account_edit</name>
<path>customer/account/edit/</path>
<label>Account Information</label>
</action>
<action method="addLink" translate="label" module="customer">
<name>address_book</name>
<path>customer/address/</path>
<label>Address Book</label>
</action>
</block>
<block type="sales/reorder_sidebar" name="sale.reorder.sidebar" as="reorder" template="sales/reorder/sidebar.phtml"/>
<remove name="tags_popular"/>
</reference>
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="sales">
<name>orders</name>
<path>sales/order/history/</path>
<label>My Orders</label>
</action>
</reference>
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="tag">
<name>tags</name>
<path>tag/customer/</path>
<label>My Tags</label>
</action>
</reference>
<reference name="customer_account_navigation">
<action method="addLink" translate="label" module="newsletter">
<name>newsletter</name>
<path>newsletter/manage/</path>
<label>Newsletter Subscriptions</label>
</action>
</reference>
<reference name="cart_sidebar">
<action method="addItemRender">
<type>bundle</type>
<block>bundle/checkout_cart_item_renderer</block>
<template>checkout/cart/sidebar/default.phtml</template>
</action>
</reference>
<update handle="customer_account"/>
<reference name="content">
<block type="customer/account_dashboard" name="customer_account_dashboard" template="customer/account/dashboard.phtml">
<block type="customer/account_dashboard_hello" name="customer_account_dashboard_hello" as="hello" template="customer/account/dashboard/hello.phtml"/>
<block type="core/template" name="customer_account_dashboard_top" as="top"/>
<block type="customer/account_dashboard_info" name="customer_account_dashboard_info" as="info" template="customer/account/dashboard/info.phtml"/>
<block type="customer/account_dashboard_newsletter" name="customer_account_dashboard_newsletter" as="newsletter" template="customer/account/dashboard/newsletter.phtml"/>
<block type="customer/account_dashboard_address" name="customer_account_dashboard_address" as="address" template="customer/account/dashboard/address.phtml"/>
<block type="core/template" name="customer_account_dashboard_info1" as="info1"/>
<block type="core/template" name="customer_account_dashboard_info2" as="info2"/>
</block>
</reference>
<reference name="right">
<action method="unsetChild">
<name>catalog_compare_sidebar</name>
</action>
</reference>
<reference name="customer_account_dashboard">
<action method="unsetChild">
<name>top</name>
</action>
<block type="sales/order_recent" name="customer_account_dashboard_top" as="top" template="sales/order/recent.phtml"/>
</reference>
<reference name="right">
<action method="unsetChild">
<name>right.poll</name>
</action>
</reference>
<reference name="customer_account_dashboard">
<action method="unsetChild">
<name>customer_account_dashboard_info2</name>
</action>
<block type="tag/customer_recent" name="customer_account_dashboard_info2" as="info2" template="tag/customer/recent.phtml"/>
</reference>
<reference name="right">
<action method="unsetChild">
<name>right.newsletter</name>
</action>
</reference>
<reference name="top.links">
<action method="addLink" translate="label title" module="customer">
<label>Log Out</label>
<url helper="customer/getLogoutUrl"/>
<title>Log Out</title>
<prepare/>
<urlParams/>
<position>100</position>
</action>
</reference></layout>
Run Code Online (Sandbox Code Playgroud)
Ala*_*orm 19
首先要做的事情.确保已清除Magento应用程序缓存.所有布局XML都由Magento缓存,因此在其中删除新文件不足以触发任何更改.
听起来你的左手栏没有渲染.以下是一些可能的原因
您的根模板将被设置为左列两列以外的其他布局
正在将<remove />标记注入到布局左侧列的布局中
您的"左"块被覆盖,因此它没有正确渲染所需的子块
因此,第1步是弄清楚这三者中的哪一个.在你的所有php/phtml文件中放置一些任意但明显的文本(我倾向于像<h1>一个</ h1>,<h1>两个</ h1>等),这样你就可以知道哪些文件实际被加载了.
还有一个模板调试设置
System->Configuration->Developer->Debug->Template Path Hints
Run Code Online (Sandbox Code Playgroud)
它做了类似的事情.如果您想使用它,您需要深入到特定的配置范围(您不能将其设置为默认值)
虽然这些中的任何一个都不会指向直接问题,但他们(希望)会让你排除个别原因.
关于布局要记住一件重要的事情.这些XML文件的名称是任意的.他们的布局工作方式是将所有布局XML组合成一个巨大的XML文件.然后,对于每个请求,这个大型XML文件将根据页面请求的"处理"而减少.句柄类似于<default>或<checkout_cart_index>.换句话说,任何其他布局文件中的某些内容可能会导致您在结帐页面上出现问题,而不仅仅是customer.xml中的问题.
您正在使用的Magento站点也可能有一个或两个被覆盖的控制器,这将改变Magento在任何页面请求时查找的布局句柄.
重点是,有很多事情可能导致这种情况,我们需要窥视Magento的内部结构.在您的开发环境中安装此模块(这是我正在进行的实验性调试)
http://alanstorm.com/2005/projects/Layoutviewer.tar.gz
启动并运行后,使用以下查询字符串在商店中加载页面
http://magento.example.com/customer/account/?showLayout=handles
Run Code Online (Sandbox Code Playgroud)
这将显示magento在任何请求中使用的句柄.您应该看到类似的列表
如果数字4不同(companyname_modulename_customer_account_index),则表示您的站点具有此请求的自定义控制器.如果是这种情况,您将需要在<companyname_modulename_customer_account_index>中的布局中查找可能会覆盖您要执行的操作的标记.
接下来,使用以下查询字符串加载Magento URL
http://magento.example.com/customer/account/?showLayout=page
Run Code Online (Sandbox Code Playgroud)
您应该看到在浏览器中呈现的XML文件.这是您请求的最终布局XML.查找具有输出属性集的标记(最有可能名为root)
<block type="page/html" name="root" output="toHtml" template="page/2columns-left.phtml">
Run Code Online (Sandbox Code Playgroud)
输出属性意味着这是Magento将开始渲染的模板.如果这不是您的两个列布局,那么您就更接近解决问题了.
接下来,在根模块中查找名为left的模块
<block type="core/text_list" name="left" as="left" ignore="1"/>
Run Code Online (Sandbox Code Playgroud)
如果这有一个ignore属性,则可能会有相应的标记
<remove name="left"/>
Run Code Online (Sandbox Code Playgroud)
布局中的某个地方.你想要删除它.
另外,请确保您的根块实际上有一个名为left的子块.
<block type="page/html" name="root" output="toHtml" ... >
...
<block type="core/text_list" name="left" as "left" />
...
</block>
Run Code Online (Sandbox Code Playgroud)
最后,这更像是一种健全性检查
http://magento.example.com/checkout/cart/?showLayout=package
Run Code Online (Sandbox Code Playgroud)
在showLayout查询字符串参数中指定"package"将显示整个包布局.这是所有layout.xml文件合并为一个.您可以使用它来确保magento知道您正在添加的XML(缓存),并确保您正在编辑正确的文件.您还可以举例说明每个句柄部分,以查找意外的布局入侵,这些入侵会为您提供您不满意的结果.
| 归档时间: |
|
| 查看次数: |
23418 次 |
| 最近记录: |