...
(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
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 | ||||||
---|---|---|---|---|---|---|
| ||||||
/** * 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 | ||||||
---|---|---|---|---|---|---|
| ||||||
/** * 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 | ||||||
---|---|---|---|---|---|---|
| ||||||
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); } |
...