Magento 类别自定义设计页面布局未更改
Magento Category Custom Design Page Layout not changing
我已经关闭了缓存,但是当我编辑 Admin -> Catalog -> Categories 时我做什么都没有关系。然后单击自定义设计并编辑页面布局,并从 1 到 3 列进行布局。
None 的更改出现。我已经针对默认站点和每个类别的特定站点进行了尝试,没有反映前端的更新。我可以编辑自定义布局更新区域并使用类似的东西:
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
或者我可以编辑 local.xml 文件并强制所有类别为特定布局:
<catalog_category_default>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</catalog_category_default>
<catalog_category_layered>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</catalog_category_layered>
但是我需要页面布局选项才能工作。也许这与 local.xml 中从左侧和右侧添加/删除内容的布局有关?作为CMS页面区域的注释,我可以成功更改页面布局。
不要使用参考代码更改布局,而是在管理控制面板中这样做:
Go to categories / custom design
找到页面布局选择并更改为 2 列,左侧栏或右侧栏。
我发现了问题。我依赖于另一个主题,它强制 catalog_category_default 始终呈现 2 列。这是因为更新句柄将应用变量设置为 1,这会忽略管理页面布局更改。
这是它正在做的事情:
<catalog_category_default>
<update handle="page_two_columns_left"/>
...
</catalog_category_default>
所以我可以覆盖它的唯一方法是通过我自己的 XML 更新,但它仍然不允许我从管理员更新页面布局。
<catalog_category_default>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</catalog_category_default>
因此解决方法是将应用变量设置为 0。
<catalog_category_default>
<reference name="root">
<action method="setIsHandle"><applied>0</applied></action>
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</catalog_category_default>
这让我可以使用类别管理中自定义设计选项卡中的类别布局 ]
我通过定位句柄并查看它设置的变量发现了这一点。所以这是 page_two_columns_left 的定义:
<page_two_columns_left translate="label">
<label>All Two-Column Layout Pages (Left Column)</label>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
<!-- Mark root page block that template is applied -->
<action method="setIsHandle"><applied>1</applied></action>
<action method="setLayoutCode"><name>two_columns_left</name></action>
</reference>
</page_two_columns_left>
备选方案:
使用布局更新:
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
这样,无论 is_handle
值如何,页面布局都会发生变化
我已经关闭了缓存,但是当我编辑 Admin -> Catalog -> Categories 时我做什么都没有关系。然后单击自定义设计并编辑页面布局,并从 1 到 3 列进行布局。
None 的更改出现。我已经针对默认站点和每个类别的特定站点进行了尝试,没有反映前端的更新。我可以编辑自定义布局更新区域并使用类似的东西:
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
或者我可以编辑 local.xml 文件并强制所有类别为特定布局:
<catalog_category_default>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</catalog_category_default>
<catalog_category_layered>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</catalog_category_layered>
但是我需要页面布局选项才能工作。也许这与 local.xml 中从左侧和右侧添加/删除内容的布局有关?作为CMS页面区域的注释,我可以成功更改页面布局。
不要使用参考代码更改布局,而是在管理控制面板中这样做:
Go to categories / custom design
找到页面布局选择并更改为 2 列,左侧栏或右侧栏。
我发现了问题。我依赖于另一个主题,它强制 catalog_category_default 始终呈现 2 列。这是因为更新句柄将应用变量设置为 1,这会忽略管理页面布局更改。
这是它正在做的事情:
<catalog_category_default>
<update handle="page_two_columns_left"/>
...
</catalog_category_default>
所以我可以覆盖它的唯一方法是通过我自己的 XML 更新,但它仍然不允许我从管理员更新页面布局。
<catalog_category_default>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</catalog_category_default>
因此解决方法是将应用变量设置为 0。
<catalog_category_default>
<reference name="root">
<action method="setIsHandle"><applied>0</applied></action>
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</catalog_category_default>
这让我可以使用类别管理中自定义设计选项卡中的类别布局 ]
我通过定位句柄并查看它设置的变量发现了这一点。所以这是 page_two_columns_left 的定义:
<page_two_columns_left translate="label">
<label>All Two-Column Layout Pages (Left Column)</label>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
<!-- Mark root page block that template is applied -->
<action method="setIsHandle"><applied>1</applied></action>
<action method="setLayoutCode"><name>two_columns_left</name></action>
</reference>
</page_two_columns_left>
备选方案:
使用布局更新:
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
这样,无论 is_handle
值如何,页面布局都会发生变化