In questo tutorial vediamo come aggiungere una colonna con la data al csv di esportazione dei prodotti di Magento.
Se non avete chiaro cosa siano i profili di Magento vi consiglio di andare a leggervi questo e questo articolo sul blog di Artera (mi trovate anche tra i commenti mentre cerco anch'io di capirci qualcosa).
Override dei file di core di Magento
E' sempre buona norma non modificare mai i file del core di Magento (nè di nessun altro cms) per una serie di motivi:
a) per non perdere le modifiche fatte ad ogni aggiornamento del software;
b) per non passare delle nottate a frugare tra i file in cerca dell'errore non appena sorge un problema;
c) per non rovinare la vita ad un collega che dovesse ereditare il vostro lavoro.
Per sovrascrivere i file di Magento (in maniera più o meno temporanea) ci basterà creare una cartella local in /app/code/ in cui ricostruire la struttura ad albero della cartella core.
Magento, infatti, legge prima le istruzioni nella cartella local, poi quelle in community (quella che contiene le estensioni) e infine quelle in core. Non è necessario copiare tutto il contenuto della cartella core, basterà semplicemente riportare i file che ci interessa modificare.
Aggiungere la data di oggi al CSV
La funzione su cui dobbiamo intervenire è unparse() in /app/code/local/Mage/Dataflow/Model/Convert/Parser/Csv.php
Innanzitutto recuperiamo la data di oggi:
public function unparse() { //Inizio - Sostituisci 'd/m/Y' con il formato che preferisci $currentTimestamp = Mage::getModel('core/date')->timestamp(time()); $date = date('d/m/Y', $currentTimestamp); //Fine// $batchExport = $this->getBatchExportModel() ->setBatchId($this->getBatchModel()->getId()); $fieldList = $this->getBatchModel()->getFieldList();
Aggiungiamo un campo che decidiamo di chiamare 'data':
$fieldList['date'] = 'date';
Popoliamo il campo con la variabile $date che abbiamo dichiarato all'inizio:
foreach ($batchExportIds as $batchExportId) { $csvData = array(); $batchExport->load($batchExportId); $row = $batchExport->getBatchData(); //Inizio// $row['date'] = $date; //Fine// sort($fieldList); foreach ($fieldList as $field) { $csvData[] = isset($row[$field]) ? $row[$field] : ''; } $csvData = $this->getCsvString($csvData); $io->write($csvData); }
Esportare il profilo
Il più è fatto. Non ci resta che tornare in backend: Sistema -> Importa/Esporta -> Dataflow - profili ed esportare il nostro profilo.
Articolo scritto 1/07/2013 e testato su Magento Community ver. 1.7.0.2