Modificare tabelle del backoffice in Magento
Dove trovare il codice:
In Magento , i dati di molte sezioni del back-office (come il catalogo e gli ordini) sono esposti tramite una tabella . Tutte le tabelle del back-office richiamano lo stesso blocco di codice , che si adatta al tipo di contesto in cui viene richiamato e stampa a video solamente i dati richiesti .
Il blocco di codice si trova in :
app/design/adminhtml/default/default/template/widget/grid.phtml
<?php foreach ($this->getCollection() as $_index=>$_item): ?> <tr title="<?php echo $this->getRowUrl($_item) ?>"<?php if ($_class = $this->getRowClass($_item)):?> class="<?php echo $_class; ?>"<?php endif;?> > <?php $i=0;foreach ($this->getColumns() as $_column): ?> <td class="<?php echo $_column->getCssProperty() ?> <?php echo ++$i==$numColumns?'last':'' ?>"> <?php echo (($_html = $_column->getRowField($_item)) != '' ? $_html : ' ') ?> </td> <?php endforeach; ?> </tr> <?php endforeach; ?>
Questo codice stampa il contenuto (righe , colonne e dati) di tutte le tabelle.
Nascondere una riga a seconda del contenuto:
Per nascondere una riga a seconda di ciò che contiene , è necessario per prima cosa accedere ai dati interessati : tutti i dati della tabella sono contenuti nell’array $_item . Per vedere il contenuto dell’array , incollare prima del blocco di codice precente , questo :
//STAMPARE L’ARRAY CHE CONTIENE I DATI DELLA TABELLA
foreach ($this->getCollection() as $_index=>$_item) { print_r ($_item); }
Aggiornando la pagina si ottiene la stampa del contenuto dell’array . Per ottenere solamente i dati interessati , basta indicare al comando “print_r” la loro posizione .
Esempio , per ottenere:
[_data:protected] => Array ( [entity_id] => 71 [status] => canceled << QUESTO [attribute_set_id] => 0 Scrivere , nel blocco di codice aggiunto: foreach ($this->getCollection() as $_index=>$_item) { print_r ($_item->_data['status']) }
Dopo essersi accertati che sono stati stampati i dati interessati (si può cancellare il blocco di codice appena scritto), è possibile intervenire sul codice che stampa le tabelle , aggiungendo le righe in grassetto:
<?php foreach ($this->getCollection() as $_index=>$_item): ?> <?php if ( ($_item->_data['status']) != 'canceled'): ?> <tr title="<?php echo $this->getRowUrl($_item) ?>"<?php if ($_class = $this->getRowClass($_item)):?> class="<?php echo $_class; ?>"<?php endif;?> > <?php $i=0;foreach ($this->getColumns() as $_column): ?> <td class="<?php echo $_column->getCssProperty() ?> <?php echo ++$i==$numColumns?'last':'' ?>"> <?php echo (($_html = $_column->getRowField($_item)) != '' ? $_html : ' ') ?> </td> <?php endforeach; ?> <?php endif; ?> </tr> <?php endforeach; ?>
In questo modo , se la variabile interessata contiene il campo interessato
(nell’esempio “status = canceled”) , la riga che contiene il campo non verrà inserita nella tabella .
A questo punto sorge un problema : in Magento , tutte le tabelle richiamano questo blocco di codice , e non è detto che una modifica fatta in una tabella sia necessaria anche in tutte le altre .
Per fare in modo che le altre tabelle non vengano modificate , aggiungere le righe in grassetto al codice:
<?php if (($this->getId()) == IDDELLATABELLA): ?> // sostituire IDDELLATABELLA con l’ID giusto (si ottiene stampando ($this->getId()) ) <?php foreach ($this->getCollection() as $_index=>$_item): ?> <?php if ( ($_item->_data['status']) != 'canceled'): ?> <tr title="<?php echo $this->getRowUrl($_item) ?>"<?php if ($_class = $this->getRowClass($_item)):?> class="<?php echo $_class; ?>"<?php endif;?> > <?php $i=0;foreach ($this->getColumns() as $_column): ?> <td class="<?php echo $_column->getCssProperty() ?> <?php echo ++$i==$numColumns?'last':'' ?>"> <?php echo (($_html = $_column->getRowField($_item)) != '' ? $_html : ' ') ?> </td> <?php endforeach; ?> <?php endif; ?> </tr> <?php endforeach; ?> <?php endif ?>
Così viene modificata solo la tabella interessata . Per ogni altra tabella da modificare , è necessario creare un nuovo blocco di codice.
1stonthenet è la discarica dei miei deliri digitali.
(cit. Paolo Attivissimo)
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!