So migrieren Sie Produkt-Downloads von Shopware 5 auf Shopware 6

So migrieren Sie Produkt-Downloads von Shopware 5 auf Shopware 6

Eine der größten Herausforderungen bei der Migration von Shopware 5 auf Shopware 6 ist das Fehlen der Produkt-Download-Funktion in Shopware 6. Diese Lücke in der Migration führt dazu, dass der Prozess unvollständig ist. In diesem Blogbeitrag stellen wir Ihnen eine einfache Schritt-für-Schritt-Anleitung für die erfolgreiche Migration von Produkt-Downloads von Shopware 5 auf Shopware 6 vor.

In Shopware 5 werden Produkt-Downloads als Teil von Produktmedien gespeichert. Wenn wir daher das Migration Assistant-Plugin verwenden, werden alle Produkt-Downloads automatisch auf Shopware 6-Medien migriert. In den weiteren Schritten ordnen Sie diese migrierten Downloads den richtigen Produkten zu und konfigurieren sie für die Anzeige im Frontend Ihres Shopware 6 Shops.

Schritt 1. Erstellen Sie benutzerdefinierte Felder für Downloads und zeigen Sie sie auf der Produktdetailseite an.

Wir entwickeln ein Plugin, das die Erstellung benutzerdefinierter Felder und die Erweiterung von Twig-Vorlagen für Produktdetailseiten umfasst. Diese benutzerdefinierten Felder werden zum Speichern und Anzeigen von Produktdownloads verwendet. Unser Ziel ist es, diese Downloads in einem neuen Tab neben dem Rezensionen-Bereich zu präsentieren. Nachfolgend finden Sie ein Beispiel dafür, wie Sie benutzerdefinierten Felderstellungscode in die Klassendatei des neu erstellten Plugins einfügen.

public function install(InstallContext $installContext): void
   {


       /**
        * @var EntityRepositoryInterface $customFieldSetRepository
        */


       $customFieldSetRepository = $this->container->get('custom_field_set.repository');


       $customFieldSetRepository->create($this->getCustomFieldSet(), $installContext->getContext());


   }

 

protected function getCustomFieldSet(): array
   {


       return [
           [
               'name' => 'hatslogic_product_downloads',
               'config' => [
                   'label' => [
                       'de-DE' => 'Downloads',
                       'en-GB' => 'Downloads',
                   ],
               ],
               'customFields' => [
                   [
                       'name' => 'hatslogic_product_download_1',
                       'type' => 'media',
                       'config' => [
                           'customFieldPosition' => 1,
                           'componentName' => 'sw-media-field',
                           'customFieldType' => 'media',
                           'label' => [
                               'de-DE' => 'Download 1',
                               'en-GB' => 'Download 1',
                           ],
                       ],
                   ],
               'relations' => [
                   [
                       'entityName' =>  $this->container->get(ProductDefinition::class)->getEntityName()
                   ]
               ]
           ]
       ];


   }

In the services.xml file, please include the following two services:

<service id="HatsLogic\ProductDownloads\Subscriber\PageSubscriber">
           <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService" />
           <argument type="service" id="HatsLogic\ProductDownloads\Service\ProductDownloadsService" />
           <tag name="kernel.event_subscriber" />
       </service>


       <service id="HatsLogic\ProductDownloads\Service\ProductDownloadsService">
           <argument type="service" id="media.repository"/>
           <argument type="service" id="custom_field.repository"/>
       </service>

 

Fügen Sie in die Datei „services.xml“ bitte die folgenden zwei Dienste ein:

public function getProductDownloads($context, $product)
   {
      
       $mediaFile = [];


       $customFields = $product->getCustomFields();


       if (!empty($customFields)) {


           $mediaId = $customFields['hatslogic_product_download_1'];


           if (!empty($mediaId)) {


               $criteria = new Criteria($mediaId);


               $searchResult = $this->mediaRepository->search($criteria, $context);


               if (!empty($searchResult)) {
                   $mediaFile = $searchResult->getElements();
                   $downloadTitle = $mediaFile->getTitle();


                   if (empty($downloadTitle)) {


                       $downloadTitle = $mediaFile->getFileName();
                   }


                   $mediaFile = [
                       'id' => $mediaFile->getId(),
                       'title' => $downloadTitle,
                       'url' => $mediaFile->getUrl()
                   ];
               }
           }
       }


       return $mediaFile;

 

FAQ

Der Zweck der Erstellung von benutzerdefinierten Feldern für Downloads in Shopware 6 während der Migration von Shopware 5 ist es, einen reibungslosen Übergang von Produkt-Downloads zu gewährleisten. Shopware 6 unterstützt von Haus aus keine Produktdownloads wie Shopware 5.

Nach der Migration von Shopware 5 auf Shopware 6 werden die Produktdownloads als Teil der Produktmedien gespeichert. Das Migration Assistant Plugin überträgt diese Downloads automatisch auf Shopware 6-Medien.

Das benutzerdefinierte Feldset spielt eine entscheidende Rolle in diesem Migrationsprozess. Es definiert, wo und wie die Produktdownloads in Shopware 6 gespeichert und angezeigt werden sollen. Innerhalb dieses Sets werden benutzerdefinierte Felder erstellt, um die Downloads unterzubringen und sicherzustellen, dass sie richtig organisiert und zugänglich sind.

Die Erweiterung der Vorlagen für Produktdetailseiten in Shopware 6 ist wichtig, da sie die Anzeige von Produktdownloads auf benutzerfreundliche Weise ermöglicht. Durch die Anpassung der Vorlagen können Sie einen eigenen Bereich für Downloads einrichten, der sich in der Regel in der Nähe des Bereichs "Bewertungen" befindet.

Leave a Reply

Your email address will not be published. Required fields are marked *