Php Magento将列添加到后端新闻稿gridview

Php Magento将列添加到后端新闻稿gridview,php,magento,admin,Php,Magento,Admin,在magento系统中,我将subscriber\u firstname和subscriber\u lastname列添加到newsletter\u subscriberdb表中 在magento的管理区域中,我希望时事通讯>时事通讯订户网格表显示: 如果客户名存在,则显示时事通讯\u订户。如果订户名存在,则不显示任何内容 客户姓氏(如果存在),否则显示时事通讯\u订户。订户姓氏(如果存在),否则不显示任何内容 我需要编辑哪些magento文件才能执行此操作?如何编辑这些文件以使其工作?ap

在magento系统中,我将
subscriber\u firstname
subscriber\u lastname
列添加到
newsletter\u subscriber
db表中

在magento的管理区域中,我希望时事通讯>时事通讯订户网格表显示:

  • 如果客户名存在,则显示
    时事通讯\u订户。如果订户名存在,则不显示任何内容
  • 客户姓氏(如果存在),否则显示
    时事通讯\u订户。订户姓氏(如果存在),否则不显示任何内容

我需要编辑哪些magento文件才能执行此操作?如何编辑这些文件以使其工作?

app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php

    $this->addColumn('firstname', array(
        'header'    => Mage::helper('newsletter')->__('First Name'),
        'index'     => 'customer_firstname',
        'default'   => '----',
        'renderer'  => 'Mage_Adminhtml_Block_Newsletter_Subscriber_Renderer_FirstName'
    ));
如果subscriber_firstname或subscriber_lastname有值或没有值,则需要将此条件设置为off:

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

此外,请确保制作核心文件的副本,而不是直接编辑它们

app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php

    $this->addColumn('firstname', array(
        'header'    => Mage::helper('newsletter')->__('First Name'),
        'index'     => 'customer_firstname',
        'default'   => '----',
        'renderer'  => 'Mage_Adminhtml_Block_Newsletter_Subscriber_Renderer_FirstName'
    ));
如果subscriber_firstname或subscriber_lastname有值或没有值,则需要将此条件设置为off:

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

此外,请确保制作核心文件的副本,而不是直接编辑它们

快速简便的解决方案是创建列渲染,并根据订户类型选择正确的字段,例如

app/code/local/Mage/Adminhtml/Block/Newsletter/Subscriber/Renderer/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;
    }
}
然后将渲染添加到订阅服务器网格类的本地副本 app/code/local/Mage/Adminhtml/Block/Newsletter/Subscriber/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

快速简便的解决方案是创建列渲染并根据订阅服务器类型选择正确的字段,例如

app/code/local/Mage/Adminhtml/Block/Newsletter/Subscriber/Renderer/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;
    }
}
然后将渲染添加到订阅服务器网格类的本地副本 app/code/local/Mage/Adminhtml/Block/Newsletter/Subscriber/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