2011-02-05 3 views
0

magento 시스템에서 subscriber_firstnamesubscriber_lastname 열을 newsletter_subscriber db 테이블에 추가했습니다. 마 젠토의 관리 영역에서 Magento가 백엔드 뉴스 레터 gridview에 열을 추가합니다.

, 나는 뉴스 레터> 뉴스 레터 가입자 그리드 테이블이 보여주고 싶은 : 존재하는 경우

  • 고객이 첫 번째 것은 그렇지 보여 존재하는 경우, 그렇지 않으면 newsletter_subscriber.subscriber_firstname을 보여,
  • 고객의 이름을 지정하지 성이있는 경우 성을 입력하고 그렇지 않으면 아무것도 표시하지 않음

이 작업을 수행하려면 어떤 magento 파일을 편집해야합니까? 이 작업을 수행하기 위해 파일을 편집하려면 어떻게해야합니까?

답변

0

응용 프로그램/코드/코어/마법사/Adminhtml/차단/뉴스/가입자/Grid.php

이 기반으로 subscriber_firstname 또는 subscriber_lastname 값 여부가 있다면 컨디셔닝 할 것이다

:

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

또한 코어 파일의 사본을 만들고 직접 편집하지 않도록하십시오!

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를 확장해야합니다.

관련 문제