需要Magento基本建议:在管理部分修改特定的产品网格?

Wac*_*Get 3 php magento

我有一些关于修改Magento管理部分的一般性问题,非常感谢让他们回答.我是Magento的新手所以请耐心等待.

我的目标是将一个带有产品属性(例如"大小")的新列添加到该部分的"类别产品"表中Catalog -> Manage Cateories(参见下面的屏幕截图).

有很少的Magento开发经验,我不太清楚从哪里开始.我查看了Grid.php目录下的一些文件adminhtml,虽然我看到了很多类似的语句addColumn(...),但我不确定我在新属性列中的位置.

另外,我假设不是直接修改任何核心文件,而是将它们复制到local文件夹下的相同路径并编辑或以某种方式扩展它们?我是否必须编辑任何配置文件或执行其他操作才能反映更改?我 - 通过这样做 - 实际上创建我自己的模块?

我还读到我应该在进行任何更改之前禁用"编译".为什么是这样?还有什么需要考虑的吗?

我再次非常感谢任何帮助,并感谢我的问题看起来很基本.您可以指出我的任何补充资源将不胜感激.谢谢.

在此输入图像描述

Max*_*Max 5

实际上,您应该首先了解要编辑的文件以及如何编辑它.在这种情况下,你要修改app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Product.php,但是,就像你说的,你应该修改其当前位置的文件.有两种方法可以"正确"方式修改文件.

  1. (更难但更具可扩展性)创建一个新的模块local并告诉Magento etc/config.xml你在这个新模块中用一个不同的块覆盖那个Block(它只是一个php类),并让新类extend成为核心Block类.然后你只需要覆盖一个函数(_prepareColumns).
  2. (更简单)将文件复制app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tab/Product.phpapp/code/local/Mage/Adminhtml/Block/Catalog/Category/Tab/Product.php并修改所需的功能(_prepareColumns)

如果您是Magento的新手,我建议使用第二个选项,因为它更容易.Magento将始终在加载local之前加载core文件,因此core将不再使用文件,并且将使用您的版本local.要了解更多信息,请阅读Alan Storm的这篇文章

现在,为了添加所需的列,请执行与SKU字段类似的操作

$this->addColumn('size', array(
    'header'    => Mage::helper('catalog')->__('Size'),
    'index'     => 'size'
));
Run Code Online (Sandbox Code Playgroud)

按您想要的顺序(在产品名称和SKU之间).我假设你的产品有一个叫做size你可以跟进的领域$product->getSize()