Magento добавить столбец в бэкэнд-рассылку gridview - PullRequest
1 голос
/ 05 февраля 2011

В системе magento я добавил столбцы subscriber_firstname и subscriber_lastname в таблицу newsletter_subscriber db.

В админке magento я хочу, чтобы в таблице сетки подписчиков на рассылку:

  • имя клиента, если оно существует, в противном случае показывать newsletter_subscriber.subscriber_firstname, если оно существует, в противном случае ничего не показывать
  • Фамилия клиента, если она существует, в противном случае показать newsletter_subscriber.subscriber_lastname, если она существует, в противном случае ничего не показать

Какие magento файлы мне нужно отредактировать, чтобы это работало? Как мне отредактировать файлы, чтобы сделать эту работу?

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

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

Вы можете ограничить это, если subscriber_firstname или subscriber_lastname имеют значения или нет:

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

Кроме того, обязательно сделайте копию основных файлов и НЕ редактируйте их напрямую!

0 голосов
/ 28 июля 2011

быстрое и простое решение - создать визуализацию столбца и выбрать правильное поле в зависимости от типа подписчика, например

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;
    }
}

, затем добавьте свой рендер в локальную копию приложения класса сетки абонента / 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'
    ));

Примечание.поиск и сортировка не будут работать в полях имени подписчика, чтобы это работало, вам необходимо расширить приложение / code / core / Mage / Newsletter / Model / Mysql4 / Subscriber / Collection.php

...