ZIP-Dateien in Medienverwaltung

Hallo,

gibt es eine Chance, ZIP-Dateien in die Medienverwaltung zu bekommen? Offiziell klappt es wohl nicht?

Ich möchte für Produkte zusätzliche Downloads anbieten, die ich im Frontend, auf der Produktdetailseite, zugänglich mache. Dazu gehören manchmal auch ZIP-Dateien.

Die Download-Dokumente (PDF, TEXT, ZIP, usw.) werden via API in die Medienverwaltung übertragen und über ein CustomField den Produkten zugewiesen.

Da ich die ZIP-Dateien nicht in die Medienverwaltung bekomme, verwalte ich diese Dateien momentan in einem eigenen Ordner. Es wäre allerdings besser, wenn man das einheitlich, über die Medienverwaltung, hinbekommen könnte :thinking: .

Habe selbst eine Lösung gefunden :wink: .

Dieser Subscriber öffnet die Medienverwaltung für ZIP-Dateien:

<?php declare(strict_types=1);

namespace MyCustomPlugin\Subscriber;

use Shopware\Core\Content\Media\Event\MediaFileExtensionWhitelistEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class MediaSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents(): array
    {
        return [
            MediaFileExtensionWhitelistEvent::class => 'onGetMediaFileExtensionWhitelist',
        ];
    }

    public function onGetMediaFileExtensionWhitelist(MediaFileExtensionWhitelistEvent $event): void
    {
        $whitelist = $event->getWhitelist();
        $whitelist[] = 'zip';
        $event->setWhitelist($whitelist);
    }
}
1 „Gefällt mir“

D.h. man könnte das auch über die config/packages/shopware.yaml (bzw. die in prod) ergänzen, oder?

Ja, dafür gibt es die config.

In private_allowed_extensions ist zip und rar bereits enthalten.

Da ich bereits einen EventSubscriber für die Ermittlung der URLs aus der Medienverwaltung programmiert hatte, war es für mich eleganter, den Subscriber um das o.g. Event zu erweitern :slightly_smiling_face: .

Aber toll, dass es immer noch weitere Wege gibt, um zum Ziel zu kommen.