ich verstehe es nicht mit der sales_channel Spalte. Weise einem Produkt manuell den Channel zu, exportiere die CSV und die sales_channel Spalte bleibt immer leer. Habe auch beim CSV-Import die unterschiedlichen ID’s aus der Datenbank der salen_channel Spalte zugewiesen, es funktioniert aber nicht.
Es geht um einen Import von über 10.000 Artikel, welcher auch sehr gut funktioniert, ich kann nur nicht dem Kunden sagen das die Channels manuell zugewiesen werden müssen. Es muss doch über den Import funktionieren.
Hey! Kann ich irgendwie nicht verstehen. Meine Entwickler mußten den Bereich Sales_Channels komplett weiterentwickeln im Import-Plugin. Jetzt funktioniert alles. Falls jmnd. das gleiche Problem hat, kann sich melden.
Hi @Joachim, ich bin kein Entwickler, daher versuche ich es genau zu erklären. Es ist ein Hotfix! Wir brauchten eine schnelle Lösung.
Schritt 1.
vendor/shopware/core/Content/ImportExport/ImportExport.php --- line ~142 -- replace tryCatch
Schritt 2.
try { // ----------------- CC ------ // // ----------------- CC ------ // // ----------------- CC ------ // $salesChannelsCell = $row['sales\_channel']; $salesChannelsArr = explode ("|", $salesChannelsCell); $record['visibilities'] = []; foreach ($salesChannelsArr as $salesChannelId) { $criteria2 = new Criteria(); // $criteria2-\>addFilter(new MultiFilter( // MultiFilter::CONNECTION\_AND, [// new EqualsFilter('id', $record['id']), // new EqualsFilter('product.visibilities.salesChannelId', $salesChannelId) // ] // )); $prodVisibilityRes = $this-\>repository-\>search($criteria2, Context::createDefaultContext()); // if ($prodVisibilityRes-\>getTotal() === 0) { $record['visibilities'][] = ['salesChannelId' =\> $salesChannelId, 'visibility' =\> ProductVisibilityDefinition::VISIBILITY\_ALL]; // } } // ----------------- CC ------ // // ----------------- CC ------ // // ----------------- CC ------ // // TODO: event before import record $this-\>repository-\>upsert([$record], $context); $progress-\>addProcessedRecords(1); // TODO: event after import record } catch (\Throwable $exception) { // TODO: event on exception - can rethrow $record['\_error'] = mb\_convert\_encoding($exception-\>getMessage(), 'UTF-8', 'UTF-8'); $failedRecords[] = $record; }
Schritt 3.
Ganz oben wo sich die dependencies befinden das hier zusätzlich hinzufügen:
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter; use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\MultiFilter; use Shopware\Core\Content\Product\Aggregate\ProductVisibility\ProductVisibilityDefinition;
**WICHTIG
Es funktioniert nur beim Erstimport. Die SC ID’s findest du ganz einfach im SC Link (Im Chrome-Browser unten links) im Admin-Bereich. Die SC einfach mit einen “|” Pipe trennen.**