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.zip
File und ErzeugenMyUnzippedFile.xls
laden des Tabellenblattes
mein Tabellenblatt
ausMyUnzippedFile.xls
und speichern in Dateitabellenblatt.txt
und Session-VariableTabellenblatt
eventuell nicht notwendig:
Laden der Dateitabellenblatt.txt
in die Session VariableTabellenBlatt
Zuweisung der Daten aus der Session Variablen
TabellenBlatt
zu 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: 100
Es 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): void
DOIT 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