Advanced Import/ Export Artikelexport über Konsole - nur bestimmte Kategorie

Hallo,

ich arbeite gerade mit dem “neuen” Advanced Import/ Export Modul. Wenn man das Modul im backend verwendet, kann man beim Artikelexport eine bestimmte Kategorie wählen. Leider finde ich in der Konsolendokumentation für das Modul keinen Parameter für die Kategorie.

Ist es möglich nur bestimmt Kategorien zu exportieren? Wenn ja, wie?

Ich habe eine kleine Suche angestellt und habe die Lösung selber gefunden. Ich habe direkt in die Core Dateien geschrieben, für ein Plugin fehlt die Zeit, falls jemand noch die Lösung mal braucht: Derzeit läuft bei mir Import/Export v1.1.7 und Shopware 5.1.3, andere Version können abweichen!

// Datei: Commands/SwagImportExport/Utils/CommandHelper.php

// ganz oben in die Class Paramaeter einfügen
protected $category;



// ---- in __construct(){} ----
// suchen nach:
if (isset($data['username'])) {
    $this->username = $data['username'];
}

// ersetzen durch
if (isset($data['username'])) {
    $this->username = $data['username'];
}
if($data['category'][0])) {
    $this->category = $data['category'];
}


// ---- in prepareExport(){} und in ---- exportAction(){} ----
// suchen nach: 
if ($this->exportVariants) {
   $postData['filter']['variants'] = $this->exportVariants;
}

// ersetzen durch:
if ($this->exportVariants) {
   $postData['filter']['variants'] = $this->exportVariants;
}
if ($this->category) {
   $postData['filter']['categories'] = $this->category;
}

 

 

// Datei: Commands/SwagImportExport/ExportCommand.php

// ganz oben in die Class Parameter einfügen:
protected $category;



// ---- in protected function configure(){} ----
// suchen nach:
->setHelp("The %command.name% imports data from a file.");

// ersetzen durch 
->addOption('category', 'c', InputOption::VALUE_REQUIRED, 'Category ID', null)
->setHelp("The %command.name% imports data from a file.");



// ---- in protected function execute(){} ----
// suchen nach:
$helper = new CommandHelper(
            array(
                'profileEntity' => $this->profileEntity,
                'filePath' => Shopware()->DocPath() . $this->filePath,
                'format' => $this->format,
                'exportVariants' => $this->exportVariants,
                'limit' => $this->limit,
                'offset' => $this->offset,
                'username' => 'Commandline'

            )
);

// ersetzen durch
$helper = new CommandHelper(
            array(
                'profileEntity' => $this->profileEntity,
                'filePath' => Shopware()->DocPath() . $this->filePath,
                'format' => $this->format,
                'exportVariants' => $this->exportVariants,
                'limit' => $this->limit,
                'offset' => $this->offset,
                'username' => 'Commandline',
                // piCategoryParam:
                'category' => array( $this->category ),

            )
);


// suchen nach:
$output->writeln('' . sprintf("Using file: %s.", $this->filePath) . '');

// ersetzen durch:
$output->writeln('' . sprintf("Using file: %s.", $this->filePath) . '');
if( $this->category ) {
    $output->writeln('' . sprintf("Category: %s.", $this->category) . '');
}



// ---- in prepareExportInputValidation(){} ----
// suchen nach: 
$this->filePath = $input->getArgument('filepath');

// ersetzen durch: 
$this->filePath = $input->getArgument('filepath');
$this->category = $input->getOption('category');

Das bezieht sich nur auf den export, den Import interessiert die Kategorie ja nicht.