Das DOIT Import Modul ermöglicht es Importe mit gewohnter DOIT-Funktionalität auf einfache Art umzusetzen.
Es ist nicht mehr notwendig Shop-Artikel überwiegend manuell zu pflegen. Laden Sie eine Excel, CSV, Text Datei gepackt oder ungepackt hoch, definieren Sie in einer einfach aufgebauten DOIT PHP-Funktion die Daten die Daten-Zuordnungen und starten Sie den Datenimport.
Ergebnis ist ein Shop komplett mit Kategorie und Kategorienbaum, Artikel mit Varianten und Attribute.
Führen Sie anschließend mit den anderen DOIT Modulen weitere Aufgaben aus, z.B.
Keywordrecherche (SEO Explorer)
Crosselling / Zubehör Erstellung (DOIT CrossSelling)
Content Erstellung (DOIT Content)
Bilder Optimierung (DOIT Pictures)
Url Optimierung (DOIT Url)
Google Sitemap Generierung (DOIT Google Sitemap)
uvm.
Wenden Sie sich an uns um das Maximale auf Ihrem Shop heraus zu holen.
YAML-Konfigurations-Dateien
Die Konfiguration des DOIT Import Moduls wird (wie bei allen DOIT Modulen) in einer oder mehreren YAML-Dateien eingestellt.
YAML Dateien sind vergleichbar mit XML Dateien und werden dementsprechend strukturiert aufgebaut.
DOIT Modul Einstellungen
Um das DOIT Import Modul aufrufen zu können muss es als DOIT Modul konfiguriert sein.
Die Konfigurationsdatei, z.B. “doitimport.yaml” muss sich im Verzeichnis:
„Shopverzeichnis/source/modules/webtools/doitconfig/doitimport“
befinden.
Import-Schritte:
Der Import geschieht in mindestens 2 Schritten.
Laden der Daten und füllen der Session-Variablen und / oder erzeugten Objekte
Verarbeitung der Session-Variablenund / oder erzeugten Objekte
Schritt 2 wird durch die standardisierten Funktionen des DOIT Moduls erledigt. Es ist also nur notwendig im Schritte 1 in einer Funktion die zu importierenden Daten eventuell zu modifizieren und dann den Artikel, Kategorie oder Hersteller-Objekten zuzuweisen.
Defintion der Schritte im Yaml-File:
task:
module:
id: doitimport
name: Do It Import
classname: DoItMeineImportKlasse
namespacename: WebTools\DoItImport\Application\Controller\Admin
active: true
stepsize: 25
form:
active: true
template:
alternative_definition:
id: Form1
name: FormName
submits:
taskformsubmit:
type: submit
active: true
id: submit
name: Submit
value: TaskFormSubmit
css: btn btn-success mt-3
label: mein Import
rows:
row01:
id: Row1
columns:
column0:
id: col0
css: col-md-12
name: mein Import
label: mein Import
type: Dieser Import ist ein D
value:
varname: sImporttext
steps:
# Schritt 1
meinImport:
id: meinimport
active: true
hasheader: true
headerlinescount: 1
headerline:
separator:
name: mein Import
handling: run
mode: fileimport
importmode:
functionname: meinImport
namespacename:
inputfile: meineImportDatei.txt
inputpath: import
inputtype:
sessionvar: meinImportSessionVar
logmode: new
logfile: meinImport.log
logpath: log/import/
stepsize: 100
# Schritt 2
saveArticleObjects:
id: saveArticleObjects
active: true
name: meinImportSessionVar Articles Import
handling: run
mode: sessionimport
sessionvar: meinImportSessionVar
functionname: saveArticleObject
classname: DoItImport
namespacename: WebTools\DoItImport\Application\Controller\Admin
outputfile: meinImportSessionVar_Result.txt
outputpath: output/
outputtype: object
logmode: new
logfile: meinImportSessionVarArticlesImport.log
logpath: log/import/
stepsize: 100
Beispiel für umfangreichere DOIT Import Konfiguration
entpacken
MyZipFile.zipFile und ErzeugenMyUnzippedFile.xlsladen des Tabellenblattes
mein TabellenblattausMyUnzippedFile.xlsund speichern in Dateitabellenblatt.txtund Session-VariableTabellenblatteventuell nicht notwendig:
Laden der Dateitabellenblatt.txtin die Session VariableTabellenBlattZuweisung der Daten aus der Session Variablen
TabellenBlattzu den Artikel, Kategorien, Attributen und Hersteller-ObjektenSpeichern der Objekte in Datenbank
task:
module:
id: doitimportbergamont2022
name: Do It Bergamont Import 2022
classname: DoItBergamontImport2022
namespacename: WebTools\DoItImport\Application\Controller\Admin
sessionvars: CategoryTree, ArticleList, Kreidler,KreidlerArticleList, AttributeValuesList, AttributeNamesList,Bergamont2022
active: true
stepsize: 25
globals:
mysqld:
mysqldumper:
importconfig: bergamont_config
form:
active: true
template:
alternative_definition:
id: Form1
name: FormName
submits:
taskformsubmit:
type: submit
active: true
id: submit
name: Submit
value: TaskFormSubmit
css: btn btn-success mt-3
label: Bergamont Import
rows:
row01:
id: Row1
columns:
column0:
id: col0
css: col-md-12
name: Bergamont Import
label: Bergamont Import
type: text
value:
varname: sImporttext
steps:
handleZipFile:
id: handleZipFile
active: true
name: handle ZipFile
handling: run
mode: function
functionname: handleZipFile
classname: DoItImport
namespacename: WebTools\DoItImport\Application\Controller\Admin
inputfile: MyZipFile.zip
inputpath: downloads/
outputfile: MyUnzippedFile.xls
outputpath: unzip/
importtoOutputFile:
id: importtoOutputFile
active: true
name: load Data
handling: run
mode: fileimport2file
# ändert die Art der Datenverarbeitung für Excel-Dateien
importmode: leer / csv / txt / text / xls
# bei importmode xls Name des Tabellenblattes
importsheets: mein Tabellenblatt
inputfile: MyUnzippedFile.xls
inputpath: unzip/
fileoutput: true
outputfile: tabellenblatt.txt
outputpath: export/
outputtype:
sessionoutput: tabellenblatt
# dieser kann Sinn machen wenn die ersten 2 Schritte schon durchgeführt wurden,
# also nicht mehr erzeugt werden müssen (Schritt 1 und 2 dekativiert)
# lädt lediglich die Daten der Datei in Session Variabletabellenblatt.txttask:
module:
id: doitimportbergamont2022
name: Do It Bergamont Import 2022
classname: DoItBergamontImport2022
namespacename: WebTools\DoItImport\Application\Controller\Admin
sessionvars: CategoryTree, ArticleList, Kreidler,KreidlerArticleList, AttributeValuesList, AttributeNamesList,Bergamont2022
active: true
stepsize: 25
globals:
mysqld:
mysqldumper:
importconfig: bergamont_config
form:
active: true
template:
alternative_definition:
id: Form1
name: FormName
submits:
taskformsubmit:
type: submit
active: true
id: submit
name: Submit
value: TaskFormSubmit
css: btn btn-success mt-3
label: MyImport
rows:
row01:
id: Row1
columns:
column0:
id: col0
css: col-md-12
name: MyImport
label: MyImport
type: text
value:
varname: sImporttext
steps:
# Schritt 1
handleZipFile:
id: handleZipFile
active: true
name: handle ZipFile
handling: run
mode: function
functionname: handleZipFile
classname: DoItImport
namespacename: WebTools\DoItImport\Application\Controller\Admin
inputfile: MyZipFile.zip
inputpath: downloads/
outputfile: MyUnzippedFile.xls
outputpath: unzip/
# Schritt 2
importtoOutputFile:
id: importtoOutputFile
active: true
name: load Data
handling: run
mode: fileimport2file
# ändert die Art der Datenverarbeitung für Excel-Dateien
importmode: leer / csv / txt / text / xls
# bei importmode xls Name des Tabellenblattes
importsheets: mein Tabellenblatt
inputfile: MyUnzippedFile.xls
inputpath: unzip/
fileoutput: true
outputfile: tabellenblatt.txt
outputpath: export/
outputtype:
sessionoutput: Tabellenblatt
# dieser kann Sinn machen wenn die ersten 2 Schritte schon durchgeführt wurden,
# also nicht mehr erzeugt werden müssen (Schritt 1 und 2 dekativiert)
# lädt lediglich die Daten der Datei in Session Variable
# Schritt 3
TabellenBlattLoad2Session:
id: TabellenBlattLoad2Session
active: true
name: TabellenBlatt load 2 Session
handling: run
mode: fileload2sessionvar
sessionvar: TabellenBlatt
inputfile: tabellenblatt.txt
inputpath: import/
inputtype:
# Schritt 4
MyImport:
id: myimport
active: true
hasheader: true
headerlinescount: 1
headerline:
separator:
name: My Import
handling: run
mode: sessionimport
sessionvar: TabellenBlatt
importmode:
functionname: MyImportDefinitionFunction
namespacename:
outputfile: MyImportDefinitionObjects_Result.txt
outputpath: import/
outputtype: object
sessionoutput: MyImportDefinitionObjects
logmode: new
logfile: MyImportDefinitionObjects.log
logpath: log/import/
stepsize: 100
# Schritt 5
saveArticleObjects:
id: saveArticleObjects
active: true
name: Articles Import
handling: run
mode: sessionimport
sessionvar: MyImportDefinitionObjects
importmode:
functionname: saveArticleObject
classname: DoItImport
namespacename: WebTools\DoItImport\Application\Controller\Admin
outputfile: saveArticleObjects_Result.txt
outputpath: results/
logmode: new
logfile: saveArticleObjects.log
logpath: log/
stepsize: 100Es können beliebig viele Schritte vor und nach dem Speichern der Daten definiert werden.
eigene Import Funktion / Klasse
Diese eigene DOIT Klasse (nur mit DOIT Professional) ist vergleichbar mit jeder anderen DOIT Klasse.
Die Objekte bzw. deren Funktionen sind NICHT OXID Objekte (Funktionen)
<?php
namespace myNameSpace;
use WebTools\Base\Application\Model\BaseSession;
use WebTools\Base\Application\Model\FileHelper;
use WebTools\Base\Application\Model\ShopData\Article;
use WebTools\Base\Application\Model\Base;
use WebTools\Base\Application\Model\ShopData\Category;
use WebTools\Base\Application\Model\ShopData\Manufactuer;
use WebTools\DoIt\Application\Model\StepTraits;
class myImport
{
use StepTraits;
public function __construct {
$this->Session = \OxidEsales\Eshop\Core\Registry::getSession();
$iLang = \OxidEsales\Eshop\Core\Registry::getLang()->getTplLanguage();
$this->config = \OxidEsales\Eshop\Core\Registry::getConfig();
}
public function myImport($Row) {
$this->getStepVariables();
$Data=$Row->Data;
$Article = new Article();
$Article->setShopId($this->config->getShopId());
$Manufactuer=new Manufactuer;
$Manufactuer->setShopId($this->config->getShopId());
$Category=new Category;
$Category->setShopId($this->config->getShopId());
// Article Data
$Article->setActive('1');
$Article->setId($Data[6]);
$Article->setArtNum($Data[6]);
$Article->setPrice($Price);
$Article->setWeight($Data[71]);
// Article Longdescription
$Article->setLongDescription( $Data[73]);
//Article Attribute
$Article->addAttribute('AttributName', $Data[1]);
//Article Variant
if ($Data[8]!='') {
$Article->setParentId(substr($Data[6], 0, -3));
$Article->setHasVariants('true');
$Article->setVarSelect( $Data[8]);
$Article->setVarName( 'Größe wählen');
}
// Article NOT OXID Fields (Fields which are added in oxarticles)
$Article->addAdditionalField('fieldname', $Data[13]);
// Manufacturer Data
$Manufactuer->setTitle($Data[2]);
$Article->setManufacturer($Manufactuer);
// Category Tree
$Tree='';
$Tree.="Main Category";
$Tree.="|";
$Tree.=$SubCategory;
// geht natürlich auch mit Array implode("|", $TreeArray)
$Category->setTree($Tree);
$Category->setTitle($Data[13]);
$Article->addCategory($Category);
$this->ImportData[$Article->getId()]=$Article;
$this->setStepVariables();
}
}
Funktionen des DOIT Article Objects
public function getId()
public function setId($Id): void
public function getShopId()
public function setShopId($ShopId): void
public function getParentId()
public function setParentId($ParentId): void
public function getActive()
public function setActive($Active): void
public function getHidden()
public function setHidden($Hidden): void
public function getEAN()
public function setEAN($EAN): void
public function getArtNum()
public function setArtNum($ArtNum): void
public function getTitle($iLang=0)
public function setTitle($Title, $iLang=0): void
public function getShortDescription($iLang=0)
public function setShortDescription($ShortDescription, $iLang=0): void
public function getLongDescription($iLang=0)
public function setLongDescription($LongDescription, $iLang=0): void
public function getPrice()
public function setPrice($Price): void
public function getPriceA()
public function setPriceA($PriceA): void
public function getPriceB()
public function setPriceB($PriceB): void
public function getPriceC()
public function setPriceC($PriceC): void
public function getBPrice()
public function setBPrice($BPrice): void
public function getTPrice()
public function setTPrice($TPrice): void
public function getUnitName()
public function setUnitName($UnitName): void
public function getUnitQuantity()
public function setUnitQuantity($UnitQuantity): void
public function getExturl()
public function setExturl($Exturl): void
public function getUrlDesc()
public function setUrlDesc($UrlDesc): void
public function getUrlImg()
public function setUrlImg($UrlImg): void
public function getVat()
public function setVat($Vat): void
public function getThumb()
public function setThumb($Thumb): void
public function getIcon()
public function setIcon($Icon): void
public function getPic1()
public function setPic1($Pic1): void
public function getPic2()
public function setPic2($Pic2): void
public function getPic3()
public function setPic3($Pic3): void
public function getPic4()
public function setPic4($Pic4): void
public function getPic5()
public function setPic5($Pic5): void
public function getPic6()
public function setPic6($Pic6): void
public function getPic7()
public function setPic7($Pic7): void
public function getPic8()
public function setPic8($Pic8): void
public function getPic9()
public function setPic9($Pic9): void
public function getPic10()
public function setPic10($Pic10): void
public function getPic11()
public function setPic11($Pic11): void
public function getPic12()
public function setPic12($Pic12): void
public function getWeight()
public function setWeight($Weight): void
public function getStock()
public function setStock($Stock): void
public function getStockFlag()
public function setStockFlag($StockFlag): void
public function getStockText($iLang=0)
public function setStockText($StockText, $iLang=0): void
public function getNoStocktext($iLang=0)
public function setNoStocktext($NoStocktext, $iLang=0): void
public function getDelivery()
public function setDelivery($Delivery): void
public function getLength()
public function setLength($Length): void
public function getWidth()
public function setWidth($Width): void
public function getHeight()
public function setHeight($Height): void
public function getFile()
public function setFile($File): void
public function getSearchKeys($iLang=0)
public function setSearchKeys($SearchKeys, $iLang=0): void
public function getTemplate()
public function setTemplate($Template): void
public function getBIsSearch()
public function setBIsSearch($bIsSearch): void
public function getBIsConfigurable()
public function setBIsConfigurable($bIsConfigurable): void
public function getVarName($iLang=0)
public function setVarName($VarName, $iLang=0): void
public function getVarSelect($iLang=0)
public function setVarSelect($VarSelect, $iLang=0): void
public function getVarMinPrice()
public function setVarMinPrice($VarMinPrice): void
public function getVarMaxPrice()
public function setVarMaxPrice($VarMaxPrice): void
public function getSort()
public function setSort($Sort): void
public function getNonMaterial()
public function setNonMaterial($NonMaterial): void
public function getFreeShipping()
public function setFreeShipping($FreeShipping): void
public function getRemindActive()
public function setRemindActive($RemindActive): void
public function getRemindAmount()
public function setRemindAmount($RemindAmount): void
public function getMinDelTime()
public function setMinDelTime($MinDelTime): void
public function getMaxDelTime()
public function setMaxDelTime($MaxDelTime): void
public function getBIsDownloadable()
public function setBIsDownloadable($bIsDownloadable): void
public function getVendor()
public function setVendor($Vendor): void
public function getManufacturer()
public function setManufacturer($Manufacturer): void
public function getVariantList()
public function setVariantList($VariantList): void
public function addVariantList($Article): void
public function getCrossSellingList()
public function setCrossSellingList($CrossSellingList): void
public function addCrossSelling($Article): void
public function getAccessoriesList()
public function setAccessoriesList($AccessoriesList): void
public function addAccessorie($Article): void
public function getCategoryList()
public function setCategoryList($CategoryList): void
public function addCategory($Category, $iLang=0)
public function getAttributeList()
public function setAttributeList($AttributeList): void
public function addAttribute($Attribute, $Value, $iLang=0): void
public function getAttribute($Name, $iLang=0)
public function getAdditionalFieldsList()
public function setAdditionalFieldsList($AdditionalFieldsList): void
public function addAdditionalField($FieldName, $Value, $iLang=0): void
public function HasVariants()
public function setHasVariants($HasVariants): void
Funktionen des DOIT Category Objects
public function loadOXIDCategory($Oxid) {
public function getId()
public function setId($Id): void
public function getShopId()
public function setShopId($ShopId): void
public function getParentId()
public function setParentId($ParentId): void
public function getRootId()
public function setRootId($RootId): void
public function getLeft()
public function setLeft($Left): void
public function getRight()
public function setRight($Right): void
public function getSort()
public function setSort($Sort): void
public function getActive()
public function setActive($Active): void
public function getHidden()
public function setHidden($Hidden): void
public function getTitle($iLang=0)
public function setTitle($Title, $iLang=0): void
public function getShortDescription($iLang=0)
public function setShortDescription($ShortDescription, $iLang=0): void
public function getLongDescription($iLang=0)
public function setLongDescription($LongDescription, $iLang=0): void
public function getThumb()
public function setThumb($Thumb): void
public function getExtLink()
public function setExtLink($ExtLink): void
public function getTemplate()
public function setTemplate($Template): void
public function getDefSort()
public function setDefSort($DefSort): void
public function getDefSortMode()
public function setDefSortMode($DefSortMode): void
public function getPriceFrom()
public function setPriceFrom($PriceFrom): void
public function getPriceTo()
public function setPriceTo($PriceTo): void
public function getIcon()
public function setIcon($Icon): void
public function getPromoIcon()
public function setPromoIcon($PromoIcon): void
public function getVat()
public function setVat($Vat): void
public function getSkipDiscounts()
public function setSkipDiscounts($SkipDiscounts): void
public function getShowSuffix()
public function setShowSuffix($ShowSuffix): void
public function getTree()
public function setTree($Tree): void
Funktionen des DOIT Manufacturer Objects
public function getId()
public function setId($Id): void
public function getShopId()
public function setShopId($ShopId): void
public function getActive()
public function setActive($Active): void
public function getIcon()
public function setIcon($Icon): void
public function getTitle($iLang=0)
public function setTitle($Title, $iLang=0): void
public function getShortDescription($iLang=0)
public function setShortDescription($ShortDescription, $iLang=0): voidDOIT Module Voraussetzungen
Jedes Modul von WebTools benötigt die Installation des WebTools-Basis Moduls.
Für die Anpassung / Entwicklung von DOIT Funktion oder eigenen DOIT Klassen ist eine DOIT (Workflow) Modul Professional Lizenz erforderlich.
Alle DOIT Module sind mit IonCube verschlüsselt.
DOIT Module Preise
Die DOIT Module sind sehr komplex und kaum zu vergleichen mit “einfachen OXID Modulen”. Für uns steht die Leistungsfähigkeit der Module, die Kosten und Zeit-Ersparnis und der Mehrwert der durch die Module erzeugt wird im Vordergrund.
Deshalb haben alle DOIT Module eine einmalige Lizenzgebühr die die Nutzung des Modules für 1 Jahr includiert. Die Module werden laufend fortentwickelt und deshalb berechnen wir in jedem Folgejahr automatisch eine jährliche Gebühr von 50% der ursprünglichen Lizenzgebühr damit das Modul aktiv bleibt. Soll das Modul nicht mehr genutzt werden senden Sie uns bitte eine Kündigung für das Modul an doit@webtools.de
Fragen zu DOIT Modulen?
Wir freuen uns darauf Sie unterstützen zu dürfen. Gerne erarbeiten wir das für Ihren Shop passende Optimierungskonzept.
Sie erreichen und telefonisch unter +49 89 45455580 oder per E-Mail an doit@webtools.de .
War dieser Artikel hilfreich?
Das ist großartig!
Vielen Dank für das Feedback
Leider konnten wir nicht helfen
Vielen Dank für das Feedback
Feedback gesendet
Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren