Tutorial: Exportmodul erstellen

Aus Wiki | modified eCommerce Shopsoftware
Zur Navigation springenZur Suche springen

(by Hendrik Koch, 08.2009)

Dieser Text behandelt wie man ein einfaches Exportmodul erstellen kann am Beispiel einer Kundenliste. Dieser Text bezieht sich auf xtcommerce304sp21

Modulname[Bearbeiten]

Jedes Exportmodul hat einen eindeutigen Namen. Das Modul soll heißen ex_cust_export

Kopieren eines beispielhaften Moduls[Bearbeiten]

admin/includes/modules/export/froogle.php 
kopieren in
admin/includes/modules/export/ex_cust_export.php 

Löschen von nicht benötigtem[Bearbeiten]

Das Frooglemodul hat einige Routinen die wir nicht benötigen. Diese komplett löschen.

 function getparent() 
 function buildCat()

Ebenso folgende Define-Zeilen:

  define('MODULE_FROOGLE_CURRENCY_TITLE','Währung');
  define('MODULE_FROOGLE_CURRENCY_DESC','Welche Währung soll exportiert werden?');
 
  define('CURRENCY','<hr noshade><b>W&auml;hrung:</b>');
  define('CURRENCY_DESC','W&auml;hrung in der Exportdatei');
 
  define('EXPORT_STATUS_TYPE','<hr noshade><b>Kundengruppe:</b>');
  define('EXPORT_STATUS','Bitte w&auml;hlen Sie die Kundengruppe, ....<i>Gast</i>):</b>');
 
  define('CAMPAIGNS','<hr noshade><b>Kampagnen:</b>');
  define('CAMPAIGNS_DESC','Mit Kampagne zur Nachverfolgung verbinden.');



Bezeichner und Texte anpassen[Bearbeiten]

Alle Vorkommen von MODULE_FROOGLE ändern zu MODULE_EX_CUST_EXPORT. Die Texte am Beginn der Datei anpassen.

Klassenname und Konstruktor anpassen.

class froogle() zu class ex_cust_export()
function froogle() zu function ex_cust_export()
function ex_cust_export()
 $this->code = 'froogle'; 
 ändern zu 
 $this->code = 'ex_cust_export';

Anzeige und Konfiguration[Bearbeiten]

Wir passen die Funktion display() an. Diese enthält Code den wir nicht benötigen. Wir löschen den gesamten Inhalt und lassen nur dies stehen.

Den Ausdruck ..module=froogle.. ersetzen gegen ..module=ex_cust_export..

  return array('text' =>                                 
                 EXPORT_TYPE.'<br>'.
                 EXPORT.'<br>'.
                 xtc_draw_radio_field('export', 'no',false).EXPORT_NO.'<br>'.
                 xtc_draw_radio_field('export', 'yes',true).EXPORT_YES.'<br>'.
                 '<br>' . xtc_button(BUTTON_EXPORT) .
                 xtc_button_link(BUTTON_CANCEL, 
                 xtc_href_link(FILENAME_MODULE_EXPORT, 
                               'set=' . $_GET['set'] . '&module=ex_cust_export')));


Default Dateiname[Bearbeiten]

Den Default Dateinamen froogle.txt ersetzen wir gegen customers.txt

function install(). 

Das Vorkommen von 'froogle.txt' ersetzen gegen 'orders.txt'.


Prozess[Bearbeiten]

Zuletzt die Hauptfunktion: function process()

Deren Inhalt können wir löschen wir bis Zeile:

 // create File
 $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/' . $file, "w+");

so:

function process($file) {

// alles gelöscht
      
      
  // create File
  $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/' . $file, "w+");
  fputs($fp, $schema);
  fclose($fp);


  switch ($_POST['export']) {
    case 'yes':
    // send File to Browser
      $extension = substr($file, -3);
      $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/' . $file,"rb");
      $buffer = fread($fp, filesize(DIR_FS_DOCUMENT_ROOT.'export/' . $file));
      fclose($fp);
      header('Content-type: application/x-octet-stream');
      header('Content-disposition: attachment; filename=' . $file);
      echo $buffer;
      exit;

    break;
  }
}

Den gelöschten Code ersetzen wir durch eigenen Code. Der Code muß nur ein Kriterium erfüllen. Die Kundenliste muß am Ende in der Variable $schema stehen.

function process($file) {

  // Anfang neuer Code ---------------
  $sql = "select customers_lastname 
          from ".TABLE_CUSTOMERS."
          order by customers_lastname";
  $res = xtc_db_query($sql);
  $schema='';
  while( $data=xtc_db_fetch_array($res) ) {
    $schema .= $data['customers_lastname']."\n";
  }

  // Ende neuer Code ---------------
  // create File
  $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/' . $file, "w+");
  fputs($fp, $schema);
  fclose($fp);


  switch ($_POST['export']) {
    case 'yes':
      // send File to Browser
      $extension = substr($file, -3);
      $fp = fopen(DIR_FS_DOCUMENT_ROOT.'export/' . $file,"rb");
      $buffer = fread($fp, filesize(DIR_FS_DOCUMENT_ROOT.'export/' . $file));
      fclose($fp);
      header('Content-type: application/x-octet-stream');
      header('Content-disposition: attachment; filename=' . $file);
      echo $buffer;
      exit;
    break;
  }

}
           
anything