Tutorial: Exportmodul erstellen
(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ährung:</b>');
define('CURRENCY_DESC','Währung in der Exportdatei');
define('EXPORT_STATUS_TYPE','<hr noshade><b>Kundengruppe:</b>');
define('EXPORT_STATUS','Bitte wä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;
}
}