Hallo zusammen,
ich habe ein Problem mit dem Überschreiben von dem Template meta.html.twig
.
In diesem Template möchte ich den Block layout_head_meta_tags
weitere Metadaten anhängen.
So sieht mein twig-template aus:
{% sw_extends '@Storefront/storefront/layout/meta.html.twig' %}
{% block layout_head_meta_tags %}
{{parent()}}
{% for metaField in page.mykn_metaFields%}
<meta name="{{metaField.name}}" content="{{metaField.value}}">
{% endfor %}
{% endblock %}```
<?php declare(strict_types=1);
namespace <MyPluginRoot>\Subscriber\Storefront\Page;
use Shopware\Storefront\Page\GenericPageLoadedEvent;
use Shopware\Storefront\Page\Product\ProductPageLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
class PageLoadedSubscriber implements EventSubscriberInterface
{
private EntityRepositoryInterface $metaFieldRepository;
public function __construct(EntityRepositoryInterface $metaFieldRepository)
{
$this->metaFieldRepository = $metaFieldRepository;
}
public static function getSubscribedEvents(): array
{
return [
GenericPageLoadedEvent::class => 'addMetaToHead'
];
}
public function addMetaToHead(GenericPageLoadedEvent $event): void
{
$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('active', true));
$metaFields = $this->metaFieldRepository->search($criteria, $event->getContext());
$array = ['mykn_metaFields' => $metaFields];
$event->getPage()->assign($array);
}
}
Ich übergebe mein Array von Metadaten mit dem GenericPageLoaded-Event.
Wenn ich das ausführe, hängt es die Metadaten an den Body und nicht in den Head. Kann mir jemand erklären, warum das so ist?
Vielen Dank