Wie stelle ich eine Variable aus meinem Plugin im gesamten Frontend (in allen Twig Templates) zur Verfügung?

Danke dir. Dass es über einen Subscriber gehen könnte, habe ich mir schon gedacht. Dachte aber wirklich, dass es eine elegantere Lösung gibt. Eventuell weiß ja jemand noch etwas besseres? Ich lasse meine „Lösung“ jetzt mal hier als Referenz da:

„src/Resources/config/services.xml“

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <service id="MeinPlugin\Subscriber\MySubscriber">
            <argument type="service" id="media.repository"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <tag name="kernel.event_subscriber"/>
        </service>
    </services>
</container>

„src/Subscriber/MySubscriber.php“

<?php declare(strict_types=1);

namespace MeinPlugin\Subscriber;

use Shopware\Core\Content\Category\Event\NavigationLoadedEvent;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\Struct\ArrayEntity;
use Shopware\Core\System\SystemConfig\SystemConfigService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class MySubscriber implements EventSubscriberInterface
{
    private EntityRepositoryInterface $mediaRepository;
    private SystemConfigService $systemConfigService;

    public function __construct(
        EntityRepositoryInterface $mediaRepository,
        SystemConfigService       $systemConfigService)
    {
        $this->mediaRepository = $mediaRepository;
        $this->systemConfigService = $systemConfigService;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            NavigationLoadedEvent::class => 'onNavigationLoaded'
        ];
    }

    public function onNavigationLoaded(NavigationLoadedEvent $event): void
    {
        $pluginMedia = $this->systemConfigService->get('MeinPlugin.config.pluginMedia');
        $image = $this->mediaRepository->search(new Criteria([$pluginMedia]), $event->getContext())->first();

        //declare an array
        $array = ['key1' => $image];

        //add the array to the context as an extension
        $event->getContext()->addExtension('testContextExtension', new ArrayEntity($array));
    }
}

Ich habe das „NavigationLoadedEvent“ genommen, weil ich das Bild in der Navigation benötige.
Referenz: Gibt es eine Liste von Events fuer Shopware 6? - #2 von patchee500
Referenz2: https://shopwarian.com/how-to-get-the-data-from-php-to-the-twig-template/

Im Twig Template komme ich dann an URL per:
{{ dump( context.context.extensions.testContextExtension[‚key1‘].url ) }}

Bzgl. deinem ersten Hinweis, wäre man so an die Plugin Config im Twig Template gekommen:

Referenz1

Dieser Text wird ausgeblendet

{{ config(‚MeinPlugin.config.pluginMedia‘) }}

Referenzen2

Weitere Refrenzen:
Use plugin configuration - Shopware Developer
Data Abstraction Layer - Shopware Developer
Add custom controller - Shopware Developer
Reading data - Shopware Developer

Vielleicht hilft es jemand.

Falls trotzdem noch jemand eine bessere Lösung kennt, immer gerne her damit.