Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
magento产品网格,仅在1列模板上有4列_Magento_Layout - Fatal编程技术网

magento产品网格,仅在1列模板上有4列

magento产品网格,仅在1列模板上有4列,magento,layout,Magento,Layout,我想让产品列表页面使用4列而不是3列(默认) 我发现如果我使用 <reference name="product_list"> <action method="setColumnCount"><columns>4</columns></action> </reference> 4. 在类别布局更新(从后端)它的工作良好。我还发现了许多关于如何为所有页面布局制作4列网格的帖子 我只需要在一列页面上使用4列网格。我把它放在

我想让产品列表页面使用4列而不是3列(默认) 我发现如果我使用

<reference name="product_list">
<action method="setColumnCount"><columns>4</columns></action>
</reference>

4.
在类别布局更新(从后端)它的工作良好。我还发现了许多关于如何为所有页面布局制作4列网格的帖子

我只需要在一列页面上使用4列网格。我把它放在local.xml上,但它不起作用

<page_one_column>
     <reference name="product_list">
        <action method="setColumnCount"><columns>4</columns></action>
    </reference>
</page_one_column>

4.
我做错了什么?谢谢

转到管理员

2) 目录->管理类别

3) 在我的示例中,选择您希望成为一列布局的类别手机

4) 点击定制设计

(五)

使用父类别设置=否
页面布局=1列
自定义布局更新
4.
希望这有帮助 (一)

或替代解决方案

app/design/frontend/default/[yourtheme]/template/catalog/product/list.phtml

第89行

 <?php $_columnCount = $this->getColumnCount(); ?>

将上述代码替换为

 <?php $_collectionSize = $_productCollection->count() ?>
    <?php $pageLayout=$this->getLayout()->getBlock('root')->getTemplate(); ?>
    <?php if ($pageLayout="page/1column.phtml"):?>
        <?php $_columnCount = 4 ?>
    <?php else: ?>  
        <?php $_columnCount = $this->getColumnCount(); ?>
    <?php endif; ?>

openapp/design/frontend/default/default/layout/catalog.xml

根据您的需求定义列计数

现在在中定义观察者

app/code/core/Mage/Catalog/etc/config.xml

添加下面的函数

public function addHandle($observer)
    {
        $controllerAction = $observer->getEvent()->getControllerAction();
        $category = $observer->getEvent()->getCategory();
        if ($category->getPageLayout()) {
                $controllerAction->getLayout()->helper('page/layout')
                    ->applyHandle($category->getPageLayout());
            }
    }
转到管理员

2) 目录->管理类别

3) 选择要成为单列布局的类别

4) 点击定制设计

5) 使用父类别设置=否 页面布局=1列

注意:不要在核心中编辑,而是创建新模块并定义上述观察者


希望这有助于您编辑:stack不允许我编辑以前的评论。。正如我所说,“定制设计”方法对我没有用处,因为我需要所有1列布局都使用它。。使用代码编辑的替代解决方案可以工作,但我希望使用布局xml。这也是我提问的目的。。如果仅使用xml更新无法完成所需的操作,我将使用您提供的php方法。谢谢,是否可以只使用layout upadate,而不编辑(覆盖)任何核心代码?仅使用local.xml或其他内容。如果不在核心文件中进行更改或重写,则不可能实现。local.xml用于布局目的,而不是用于配置或设置。或者您可以创建模块并在其中定义上述代码
<action method="addColumnCountLayoutDepend"><layout>empty</layout><count>6</count></action>
<action method="addColumnCountLayoutDepend"><layout>one_column</layout><count>4</count></action>
<action method="addColumnCountLayoutDepend"><layout>two_columns_left</layout><count>4</count></action>
<action method="addColumnCountLayoutDepend"><layout>two_columns_right</layout><count>4</count></action>
<action method="addColumnCountLayoutDepend"><layout>three_columns</layout><count>3</count></action>
app/code/core/Mage/Catalog/etc/config.xml
    <catalog_controller_category_init_after>
          <observers>
                <custom_page_layout>
                    <class>catalog/observer</class>
                         <method>addHandle</method>
                </custom_page_layout>
           </observers>
  </catalog_controller_category_init_after>
 app/code/core/Mage/Catalog/Model/Observer.php
public function addHandle($observer)
    {
        $controllerAction = $observer->getEvent()->getControllerAction();
        $category = $observer->getEvent()->getCategory();
        if ($category->getPageLayout()) {
                $controllerAction->getLayout()->helper('page/layout')
                    ->applyHandle($category->getPageLayout());
            }
    }