Magento在后端简报gridview中添加了一列

时间:2011-02-05 00:39:25

标签: php magento admin

在magento系统中,我将subscriber_firstnamesubscriber_lastname列添加到newsletter_subscriber db表中。

在magento的管理区域,我想要简报> Newsletter Subscribers网格表显示:

  • 客户名称(如果存在),否则显示newsletter_subscriber.subscriber_firstname是否存在,否则显示
  • 客户姓氏(如果存在),否则显示newsletter_subscriber.subscriber_lastname是否存在,否则显示

我需要编辑哪些magento文件才能使其正常工作?如何编辑文件以使其工作?

2 个答案:

答案 0 :(得分:1)

应用程序/代码/核心/法师/ Adminhtml /砌块/新闻/订户/ Grid.php

如果subscriber_firstname或subscriber_lastname具有值,您将要根据此情况进行调整:

    $this->addColumn('subscribername', array(
        'header'    => Mage::helper('newsletter')->__('Subscriber First Name'),
        'index'     => 'subscriber_firstname',
        'default'   =>    '----'
    ));

另外,请务必复制核心文件,不要直接编辑它们!

答案 1 :(得分:0)

快速简便的解决方案是创建一个列呈现并根据订阅者类型选择正确的字段,例如

应用程序/代码/本地/法师/ Adminhtml /砌块/新闻/订户/渲染器/ FirstName.php

class Mage_Adminhtml_Block_Newsletter_Subscriber_Renderer_FirstName extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract {
    public function render(Varien_Object $row) {
        $value = '';
        if ($row->getData('type') == 2) {
            $value = $row->getData('customer_firstname');
        }
        else {
            $value = $row->getData('subscriber_firstname');
        }
        return $value;
    }
}

然后将您的渲染添加到订阅者网格类的本地副本 应用程序/代码/本地/法师/ Adminhtml /砌块/新闻/订户/ Grid.php

    $this->addColumn('firstname', array(
        'header'    => Mage::helper('newsletter')->__('First Name'),
        'index'     => 'customer_firstname',
        'default'   => '----',
        'renderer'  => 'Mage_Adminhtml_Block_Newsletter_Subscriber_Renderer_FirstName'
    ));

请注意。搜索和排序将不适用于订户名称字段,为了使其工作,您将需要扩展app / code / core / Mage / Newsletter / Model / Mysql4 / Subscriber / Collection.php