2011-02-05 7 views
0

Dans le système Magento, j'ai ajouté les colonnes subscriber_firstname et subscriber_lastname à la table db newsletter_subscriber.Magento ajouter une colonne à la newsletter backend gridview

Dans la zone d'administration de magento, je veux la Newsletter> Newsletter table de grille abonnés à afficher:

  • client premier nom si elle existe, sinon montrer newsletter_subscriber.subscriber_firstname si elle existe, sinon rien montrer
  • client nom de famille s'il existe, sinon afficher newsletter_subscriber.subscriber_lastname s'il existe, sinon ne rien afficher

Quels fichiers magento dois-je modifier pour que cela fonctionne? Comment puis-je éditer les fichiers pour que cela fonctionne?

Répondre

0

app/code/core/Mage/Adminhtml/Bloc/Lettre d'Information/abonné/Grid.php

Vous voulez conditionner cette base hors tension si subscriber_firstname ou subscriber_lastname ont des valeurs ou non:

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

Aussi, assurez-vous de faire une copie des fichiers de base et ne pas les modifier directement!

0

la solution rapide et facile est de créer un rendu de colonne et de sélectionner le champ correct en fonction du type d'abonné, par ex.

app/code/local/Mage/Adminhtml/Bloc/Lettre d'Information/abonné/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; 
    } 
} 

puis ajoutez votre render à une copie locale du réseau d'abonnés classe app/code/local/Mage/Adminhtml/Bloc/Bulletin/Abonné/Grid.php

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

Remarque. la recherche et le tri ne fonctionneront pas sur les champs de nom d'abonné, pour que cela fonctionne, vous devrez étendre app/code/core/Mage/Newsletter/Model/Mysql4/Subscriber/Collection.php

Questions connexes