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 值如何,页面布局都会发生变化