DOIT Import

Geändert am Mon, 10 Oct 2022 um 03:41 PM

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.

  1. Laden der Daten und füllen der Session-Variablen und / oder erzeugten Objekte

  2. 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

  1. entpacken MyZipFile.zip File und Erzeugen MyUnzippedFile.xls

  2. laden des Tabellenblattes mein Tabellenblatt aus MyUnzippedFile.xls und speichern in Datei tabellenblatt.txt und Session-Variable Tabellenblatt

  3. eventuell nicht notwendig:
    Laden der Datei tabellenblatt.txt in die Session Variable TabellenBlatt

  4. Zuweisung der Daten aus der Session Variablen TabellenBlatt zu den Artikel, Kategorien, Attributen und Hersteller-Objekten

  5. Speichern 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

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren