blog.erikkothe.de rund um Magento, TYPO3, CSS, ….

4Okt/101

Wie erstelle ich neue Spalten?

In der Kundenübersicht von Magento sieht man schon so einige Details auf den ersten Blick, aber was ist wenn das nicht genug ist?

Wenn man es mal gefunden hat, ist es leicht umgesetzt ;) Die Spalten für die Kundenübersicht werden in der Datei /app/code/core/Mage/Adminhtml/Block/Customer/Grid.php verwaltet. Hierbei müssen zwei Funktionen überschrieben werden. In meinem Beispiel hab ich Kundennummer und Firma den Spalten hinzugefügt. Diese Lösung habe ich unter 1.3.x getestet, ob es auch unter 1.4.x auch so funktioniert habe ich noch nicht überprüft.

protected function _prepareCollection()
{
$collection = Mage::getResourceModel('customer/customer_collection')
->addNameToSelect()
->addAttributeToSelect('email')
->addAttributeToSelect('created_at')
->addAttributeToSelect('group_id')
->addAttributeToSelect('kundennummer') // Muss ergänzt werden, damit die Daten auch ausgegeben werden
->addAttributeToSelect('company')
->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left');

$this->setCollection($collection);

return parent::_prepareCollection();
}

und

protected function _prepareColumns()
{
/* ... */

$this->addColumn('kundennummer', array(
'header' => 'Kundennummer', // Spaltenüberschrift
'width' => '150', // Breite der Spalte
'index' => 'kundennummer'
));

$this->addColumn('company', array(
'header' => 'Firma', // Spaltenüberschrift
'width' => '150', // Breite der Spalte
'index' => 'company'
));

/* ... */

return parent::_prepareColumns();
}
Share
Kommentare (1) Trackbacks (0)
  1. In der 1.4 hat es so nicht bzw. nur teilweise funktioniert (Ergebnis = leere neue Spalten ohne Inhalt). Ich wollte nur den Firmennamen haben (!), das mit der Kundennummer ist in meiner Lösung also nicht mit drin.
    Ich habe es auf Basis dieses Artikels jetzt anders gelöst, funktioniert so auch (natürlich nicht updatesafe), auch in allen Sprachen, getestet mit 1.4, jetzt im Live-Einsatz:

    In protected function _prepareCollection() folgende Zeile, z.B. nach “->addAttributeToSelect(‘group_id’)” einfügen:

    ->joinAttribute(‘billing_company’, ‘customer_address/company’, ‘default_billing’, null, ‘left’)

    Und dann in protected function _prepareColumns() folgendes einfügen, z.B. direkt nach $this->addColumn(‘entity_id’,[...]):

    $this->addColumn(‘company’, array(
    ‘header’ => Mage::helper(‘customer’)->__(‘Company’), // Spaltenüberschrift, internat. über Mage-Systen
    ‘width’ => ’150′, // Breite der Spalte
    ‘index’ => ‘billing_company’
    ));

    That’s it.
    Viel Spass :)


Kommentar schreiben


Noch keine Trackbacks.