Da das einzige zum Thema dieser Thread war, als ich vor diesem Problem stand, hier meine Lösung:
Bei mir liegen im root des shops 2 php files.
Damit keiner Mist baut lasse ich nur die feste IP unseres Büros zu.
(Wer keine feste IP hat, kann diese Datei automatisch generieren und per sftp hochladen)
ipcheck.php:
<?php// security -- only allow IP adress of our officeif (getenv('REMOTE_ADDR') != "xxx.xxx.xxx.xxx") die ("Access denied!");?> Dieses File kann man z.B. in ein PHP script auf einem lokalen Webserver im eigenen Büro einbauen.
Ich kopiere per SFTP die Produktbilder und die import.csv auf den Webserver im Internet und rufe dann dieses Script auf mit
echo file_get_contents("
https://www.example.com/upload_products.php");
<?php// security -- only allow IP adress of our officeinclude('ipcheck.php');// filename of input file$filename = 'import.csv';// tell modified shop code, we have a secure accessdefine ("_VALID_XTC","OK");// tell import class our delimeter and textsigndefine ('CSV_SEPERATOR',"\t"); // I use tab here (make sure your import.csv doesn't contain any tab inside a cell!!!)define ('CSV_TEXTSIGN','#'); // I use # here (make sure your import.csv doesn't contain any # inside a cell!!!)// includerequire('includes/application_top.php');require('admin/includes/classes/import.php');require('inc/xtc_format_filesize.inc.php');require('inc/xtc_get_customers_statuses.inc.php');// import data$handler = new xtcImport
($filename);$mapping=$handler->map_file($handler->generate_map());$import=$handler->import($mapping);// output success and/or failureif ($import){ if ($import[0]) { echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="messageStackSuccess">'; if (isset($import[0]['prod_new'])) echo 'Neue Artikel:'.$import[0]['prod_new'].'<br />'; if (isset($import[0]['cat_new'])) echo 'Neue Kategorien:'.$import[0]['cat_new'].'<br />'; if (isset($import[0]['prod_upd'])) echo 'Aktualisierte Artikel:'.$import[0]['prod_upd'].'<br />'; if (isset($import[0]['cat_upd'])) echo 'Aktualisierte Kategorien:'.$import[0]['cat_upd'].'<br />'; if (isset($import[0]['cat_touched'])) echo 'Betroffene Kategorien:'.$import[0]['cat_touched'].'<br />'; if (isset($import[2])) echo $import[2]; echo ' </td>
</tr>
</table>'; } if (isset($import[1]) && $import[1][0]!='') { echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="messageStackError">'; for ($i=0;$i<count($import[1]);$i++) { echo $import[1][$i].'<br />'; } echo ' </td>
</tr>
</table>'; }}?> Im Prinzip macht das exakt das was passiert, wenn man im Backend die Import Funktion nutzt.
Teile des Codes sind aus dem Shop kopiert und nur geringfügig angepasst.
Achja, bevor jetzt jemand motzt "Funktioniert nicht". Die Import Klasse ist (obwohl der Fehler letztes Jahr schon gefunden und hier im Forum behoben wurde) in der aktuellen Version des Shops leider unbrauchbar, da die Gruppenberechtigungen für den Admin fehlen. Ich empfehle dringend die import.php zu reparieren bevor man die nutzt. Wer zusätzliche Datenbankfelder eingebaut hat, muss die sowieso nochmal anpacken. (Fehlt leider im Tutorial "Zusätzliche Datenbankfelder einbauen")
Muss man das eigentlich verstehen warum der Bugfix nicht ins Release eingeflossen ist?
Was noch folgt ist, das Imageprocessing würde ich gerne noch automatisiert anwerfen, ich denke hier noch über die sinnvollste Variante nach.