Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

(Bilderstecke gif)

Einrichten des Editors

  • Über den Einrichtungsassistent presetCmsSeiteJsonXlsxEditor.json einrichten lassen

  • Unter shop / Artikel-Vorlagen einen neue Vorlage anlegen

    • Dort die folgenden Einstellungen vornehmen und die gewünschten Print-Templates verknüpfen

    • Image RemovedImage Added

Einstellung des Print-Templates

...

Allgemeiner Ablauf für ein Datenquellen-Plugin

  • Upload/Auswahl der Datenquelle.

  • Die Datenquelle auslesen und mit w2p_in/store im JSON-Dokument speichern.

Upload/Auswahl der Datenquelle

Register source select hook
Codeblock
languagephp
themeRDark
titleRegister source select hook
/**
 * Hooks to w2p/xlsx.source/plugin
 * Used to register plugin as an xlsx editor source plugin.
 *
 * @plugin w2p/xlsx
 * @filename source/plugin
 * @priority 2
 *
 * @return array
 * @grantAccessPlugin
 */
public function plugin() {

  return [
    [
      'label'   => i18n\translator::__(
        'w2p_in/xlsx',
        'XLSX/XLS Datei'
      ),
      'request' => 'w2p_in/xlsx.form'
    ]
  ];
}

Konvertieren der Datenquelle und das Ergebnis in die Datenbank schreiben

Register source submit hook
Codeblock
languagephp
themeRDark
titleRegister source submit hook
/**
 * Is called on sourceSubmit.
 * Converts uploaded file to xlsx editor structure and saves it to a json document.
 *
 * @plugin w2p/xlsx
 * @filename hook/source/submit
 * @priority 2
 *
 * @param int $source
 * @param bool $isSourceXLSX
 * @param int $documentID
 *
 * @return array
 * @grantAccessRoute
 */
public function submit($source, $isSourceXLSX, $documentID) {

  $serve = [];

  if($isSourceXLSX):
    // calls the convert logic if is responsible Plugin
    $serve[] = $this
      ->getAppFactory(lib\execute\submit::class)
      ->execute($source, $documentID)
    ;

  endif;

  return $serve;
}


Example convert Code
Codeblock
languagephp
themeRDark
titleExample convert Code
use brandbox\w2p_in\store;

...

public function execute($sourceFilePath, $documentID) {
  //Example Code

  //Get the data rows from the data source (e.q. xlxs-File)
  $fileRows = $this->getRowsFromDataSource($sourceFilePath);
  $headerCells = $this->getHeaderCells($fileRows);

  /** var store\lib\common\writerStructure $structureWriter **/
  $structureWriter = $this
    ->getAppFactory(store\engine::class)
    ->getWriterStructure()
  ;
  // set the header. Needed for the mapping step from datasource to w2pPrintTemplateFields
  $structureWriter->setHeader($headerCells);

  $isFirst = true;
  $fileRows->resetStart();
  foreach($fileRows as $fileRow):
    if($isFirst):
      $isFirst = false;
      continue;
    endif;

    $fileCells = $fileRow->getCellIterator();

    $rowEmpty = true;
    $cells = [];
    foreach($fileCells as $fileCell):
      // collect rows and manipulate values if necessary
      $sanitizedValue = $this->sanitize($fileCell->getValue());
      if('' !== $sanitizedValue):
        $rowEmpty = false;
      endif;
      $cell = $this
        ->getAppFactory(store\engine::class)
        ->mapToCell(
          $fileCell->getCoordinate(),
          $sanitizedValue
        )
      ;
      $cells[] = $cell;
    endforeach;

    if(!$rowEmpty):
      // Add row to structure
      $structureWriter->addRow($cells);
    endif;

  endforeach;
  
  // let the store plugin write the structure to the database
  return $structureWriter->write($documentID);
}

...