Magento - 向客户网格添加列

时间:2011-05-18 14:59:28

标签: magento

如何向magento客户网格添加自定义列?

非常感谢。

5 个答案:

答案 0 :(得分:7)

您应该覆盖Mage_Adminhtml_Block_Customer_Grid类(app / code / core / Mage / Adminhtml / Block / Customer / Grid.php)并应用以下更改:

1 - 添加要在_prepareCollection()函数中显示的新属性

2 - 添加要在_prepareColumns()函数中显示的新列

答案 1 :(得分:2)

信用:http://www.leonhostetler.com/blog/magento-add-attribute-columns-in-manage-products-grid-201205/

Magento没有为我们提供选择管理产品网格中哪些属性作为列包含的功能,但是进行必要的代码更改非常简单。

生成“管理产品”网格的代码位于/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php。您需要做的第一件事是将Grid.php复制到本地目录结构中。换句话说,您将Grid.php复制到以下位置; /应用程序/代码/本地/法师/ Adminhtml /座/目录/产品/。如果没有这样的位置,则必须创建必要的目录。文件的最终位置必须是; /app/code/local/Mage/Adminhtml/Block/Catalog/Product/Grid.php

现在,打开Grid.php(本地目录结构中的那个)并开始编辑。找到以下代码;

  

$这 - > addColumn( 'SKU',       阵列(           '标题'=>法师::助手( '目录') - > __( 'SKU'),           'width'=> '80px',           'index'=> 'SKU',       ));

这是将SKU列添加到产品网格的代码。现在,假设您有一个名为Supplier ID(supplier_ID)的自定义属性,并且您希望它们也显示在Manage Products网格中。在上面的代码块之前或之后放置以下代码,只要它在_prepareColumns()中。

$this->addColumn('supplier_id',
    array(
        'header'=> Mage::helper('catalog')->__('Supplier ID'),
        'width' => '150px',
        'index' => 'supplier_id',
    ));

然后将以下行添加到_prepareCollection(),其中列出其他属性;

  

- > addAttributeToSelect( 'supplier_id')

这应该就是你需要做的一切。您可能需要重新编译,刷新缓存,注销并重新登录以查看产品网格中的更改。

以上示例用于为文本字段的商店所有者添加具有目录输入类型的属性。如果您的属性使用下拉列表怎么办?上面的代码必须修改。

假设您有一个名为Supplier(供应商)的属性,它在产品编辑器中显示供应商的下拉列表供您选择。为此,我们可以将以下代码添加到_prepareColumns():

  

$ supplier_items =   法师:: getModel( 'EAV / entity_attribute_option') - > getCollection() - > setStoreFilter() - >加入( '属性', 'attribute.attribute_id = main_table.attribute_id',   'attribute_code'); foreach($ supplier_items as $ supplier_item):       if($ supplier_item-> getAttributeCode()=='supplier')           $ supplier_options [$ supplier_item-> getOptionId()] = $ supplier_item-> getValue(); endforeach; $这 - > addColumn( '供应商',       阵列(           '标题'=>法师::助手( '目录') - > __( '供应商'),           'width'=> “150像素”,           'type'=> “选项”,           'index'=> “供应商”,           'options'=> $ supplier_options,));

让我们不要忘记将以下行添加到_prepareCollection()中,其他属性如下所示;

  

- > addAttributeToSelect( '供应商')

那应该为你做。重新编译,刷新缓存,然后注销,如果需要,则重新登录。

答案 2 :(得分:1)

我发布了here的实例。

如果您需要添加custome属性,您可能需要仔细处理连接语句。

->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')

答案 3 :(得分:1)

使用自定义模块重写客户网格块。

app / code / [local or community] /YourCompany/YourModule/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <yourcompany_yourmodule>
            <version>0.1.0</version>
        </yourcompany_yourmodule>
    </modules>
    <global>
        <blocks>
            <adminhtml>
                <rewrite>
                    <customer_grid>YourCompany_YourModule_Block_Customer_Grid</customer_grid>
                </rewrite>
            </adminhtml>
        </blocks>
    </global>
</config>

app / code / [local or community] /YourCompany/YourModule/Block/Customer/Grid.php

<?php

class YourCompany_YourModule_Block_Customer_Grid extends Mage_Adminhtml_Block_Customer_Grid
{
    public function setCollection($collection)
    {
        $collection->addAttributeToSelect('confirmation');                    
        parent::setCollection($collection);
    }

    protected function _prepareColumns()
    {
        parent::_prepareColumns();

        $this->addColumn('confirmation', array(
                'header'=> Mage::helper('sales')->__('Confirmed'),
                'index' => 'confirmation',
                'type'  => 'text',
                'width' => '100px',
        ));
        return parent::_prepareColumns();
    }
}

详细说明可在此处找到:

http://tipsmagento.blogspot.com/2011/03/add-new-column-on-customers-grid.html

答案 4 :(得分:0)

请务必查看TigerMin for Magento。它是一个工具,您可以使用该工具轻松地向productsgrid添加列,甚至可以立即内联编辑值。这是一个现场演示:http://demo.emvee-solutions.com/tigermin/