Tutorial: Exportmodul erstellen – Wiki | modified eCommerce Shopsoftware

Tutorial: Exportmodul erstellen

Aus Wiki | modified eCommerce Shopsoftware

(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;
  }

}
  • Diese Seite wurde zuletzt am 11. November 2012 um 21:58 Uhr bearbeitet.