Die Antwort von mageUz ist wirklich gut und einfach.
Ich hatte einige Probleme mit der Spalte "Aktion", die in der Summenzeile angezeigt wird, also habe ich mich etwas weiter damit befasst. Hier ist es also...
1. Blenden Sie die Aktionsspalte in Summen und mehr aus
Aufgrund wahrscheinlich ein Fehler in widget/grid.phtml
dem 'is_system'
wird der Parameter nicht in Betracht genommen, so zeigt es den Aktionslink in der Zeile Summen. Um dies zu lösen, fügen Sie einfach 'totals_label' => '',
Ihre Aktionsspaltendeklaration hinzu.
Der 'totals_label' => 'label',
Parameter kann in allen Spalten verwendet werden und überschreibt die Summenzelle, auch wenn sie festgelegt ist.
Das heißt, Sie können die $fields['entity_id']='Totals';
Zeile der Antwort von mageUz weglassen, zur Spalte 'entity_id' (oder einer beliebigen Spalte, die Sie auswählen) gehen und hinzufügen
'totals_label' => $this->__('Total'),
(+ mehrsprachige Unterstützung)
2. Gleiches Ergebnis, etwas anderer Ansatz
Fügen Sie in Ihrem Rasterblock eine geschützte Funktion _prepareTotals ($ column) hinzu. Rufen Sie es dann in der Funktion _prepareCollection () mit den gewünschten Zeilen als durch Kommas getrennte Summen auf. Um klarer zu sein, sollte Ihre Whatever / Grid.php ungefähr so aussehen
protected function _prepareCollection(){
$collection = Mage::getResourceModel('mymodule/mymodel_collection');
$this->setCollection($collection);
$this->_prepareTotals('price,special_price'); //Add this Line with all the columns you want to have in totals bar
return parent::_prepareCollection();
}
//Add following function
protected function _prepareTotals($columns = null){
$columns=explode(',',$columns);
if(!$columns){
return;
}
$this->_countTotals = true;
$totals = new Varien_Object();
$fields = array();
foreach($columns as $column){
$fields[$column] = 0;
}
foreach ($this->getCollection() as $item) {
foreach($fields as $field=>$value){
$fields[$field]+=$item->getData($field);
}
}
$totals->setData($fields);
$this->setTotals($totals);
return;
}
protected function _prepareColumns(){
$this->addColumn('entity_id', array(
'index' => 'entity_id',
'header' => $this->__('ID'),
'totals_label' => $this->__('Total'), //Add this line to show "Total" in the beginning of the row
));
$this->addColumn('name', array(
'index' => 'name',
'header' => $this->__('Name'),
));
$this->addColumn('price', array(
'index' => 'price',
'header' => $this->__('Price'),
'type' => 'currency',
'currency_code' => $this->_getStore()->getBaseCurrency()->getCode(),
));
$this->addColumn('special_price', array(
'index' => 'special_price',
'header' => $this->__('Special Price'),
'type' => 'currency',
'currency_code' => $this->_getStore()->getBaseCurrency()->getCode(),
));
$this->addColumn('action',array(
'header' => $this->__('Action'),
'width' => '100',
'type' => 'action',
'getter' => 'getId',
'actions' => array(array(
'caption' => $this->__('edit'),
'url' => array('base' => '*/*/edit'),
'field' => 'product_id',
)),
'filter' => false,
'sortable' => false,
'is_system' => true,
'totals_label' => '' //Add this line to stop the action showing
));
return parent::_prepareColumns();
}