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. 

override magento

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. 

csv esportato

 

Articolo scritto 1/07/2013 e testato su Magento Community ver. 1.7.0.2 

blog comments powered by Disqus