Herstellerbeschreibung auf Produktdetailseite ausgeben

Hallo,

wie kann ich die Herstellerbeschreibung auf der Produktdetailseite ausgeben? Es muss kein eigener Tab sein.

Was genau meinst du mit „Herstellerbeschreibung“ welches Feld ist das bei dir im Backend (Screenshot)?
Die normale Beschreibung sollte eigentlich standardmäßig auf der Produktdetailseite ausgegeben werden.

ja genau, dieser Text soll auf der Produktdetailseite angezeigt werden. An welcher Stelle sollte er denn standardmäßig angezeigt werden? Bei mir nämlich nicht.

ah, warte - kleines Missverständnis. Diesen Text meine ich nicht. Ich meine tatsächlich die Beschreibung, die beim Hersteller hinterlegt wird: Kataloge->Hersteller. Hast du da eine Idee, wie ich diese Beschreibung auf der Produktdetailseite ausgeben kann?

Danke!

Guten Morgen,

weißt du, wie man das Template anpasst? Dann könntest du mal diese Variabel probieren:
{{page.product.manufacturer.translated.description}}

Falls du auch noch den Namen des Herstellers ausgeben möchtest:
{{page.product.manufacturer.translated.name}}

und das Bild:
<img src="{{page.product.manufacturer.media.url}}">

Generell kannst du dir mit {{dump()}} alle verfügbaren Variablen anzeigen lassen.

Viele Grüße
Tom

Klasse, danke dir Tom. Die Variable hatte ich gesucht.

Funktioniert nur im dev Modus, nur so als Hinweis.

Ich habe mich über diesen Beitrag sehr gefreut als ich ihn gefunden habe, aber Leider habe ich die Ausgabe nicht hinbekommen. Das Template habe ich angepasst aber auch da erhalte ich „null“. Ich habe ein Layout angelegt in der Erlebniswelt. Unter \vendor\shopware\storefront\Resources\views\storefront\element habe ich eine neue html.twig-Datei erstellt. Mit diesem Wert {{page.product.manufacturer.translated.description}} wollte ich die Ausgabe der Herstellerbeschreibung aus Katalog/Hersteller die angelegte Beschreibung ausgeben. Ich wähle das Layout aus, was ich in den Erlebniswelten angelegt habe, bekomme aber leider keinen Inhalt. Kann mir evtl. jemand helfen oder mir einen Hinweis geben was ich übersehen ? Oder gibt es eine Möglichkeit die Herstellerbeschreibung auf gewünschte Kategorien auszugeben ? Das Datamapping geht leider nicht, da es zu der Herstellerbeschreibung keine Datenzuordnung gibt.

Schau dir mal die Entwickler Dokumentation an. Was du da machst ist ziemlicher Mist, denn beim nächsten Update sind deine Änderungen ggf. weg.

Lade dir mal das Moori Twig Plugin herunter. Könnte ggf. auch ähnlich heißen. Dann kannst du einen Block im CMS einfügen und direct auf Variablen zugreifen.

Es könnte jedoch sein, dass die Daten je nach Seite nicht geladen werden. Dann benötigst du einen Subscriber (siehe Entwickler Dokumentation).

Ja, dass Moori Twig Plugin habe ich bereits tatsächlich heruntergeladen aber leider keine Daten ausgeliefert bekommen. Das mit dem Subscriber ist eine Idee die ich jetzt versuchen werde.

page.product existiert natürlich auch nur auf einer Produkt-Detailseite.

Im Listing sind das ja mehrere Produkte in einem Array. Ebenso bei Slidern etc. nur als Hinweis, falls du das übersehen hast.

Ich habe das natürlich im eigenen Theme gemacht… nicht im Vendor. Da passiert nichts mit einem Update! Das ist ja selbstverständlich.

und was passt dann bei den Kategorien ? category.name oder wie ?

Wenn du in der .env von prod auf dev umstellst (nicht im Live Shop machen!) dann kannst du im twig {{ dump() }} ausgeben lassen. Dort sind alle verfügbaren Variablen sichtbar.

Ja das mit dem dump habe ich probiert, aber die Variable ist immer „Null“ aber dort müssten ja eigentlich Ergebnisse sein. Was verhindert die Ausgabe?

Nichts. Sie wurde dann einfach nicht geladen. Per Subscriber und addAssociation() nachladen.

Das wäre mein subscriber (src/Subscriber/CategoryListingSubscriber.php):

<?php declare(strict_types=1);

namespace MeinTheme\Subscriber;

use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Storefront\Pagelet\Listing\ListingPageletLoadedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class CategoryListingSubscriber implements EventSubscriberInterface
{
    private $productRepository;

    public function __construct(EntityRepositoryInterface $productRepository)
    {
        $this->productRepository = $productRepository;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            ListingPageletLoadedEvent::class => 'onListingPageletLoaded',
        ];
    }

    public function onListingPageletLoaded(ListingPageletLoadedEvent $event): void
    {
        $products = $event->getPagelet()->getListing()->getElements();

        foreach ($products as $product) {
            $manufacturerId = $product->getManufacturerId();
            if ($manufacturerId) {
                $criteria = new Criteria([$manufacturerId]);
                $criteria->addAssociation('translated');

                $manufacturer = $this->productRepository->search($criteria, $event->getContext())->get($manufacturerId);
                if ($manufacturer) {
                    $product->addExtension('manufacturer', $manufacturer);
                }
            }
        }
    }
}

Subscriber registrieren (src/Resources/config/service.xml):

<?xml version="1.0" ?>

<services>
    <service id="MeinPlugin\Subscriber\CategoryListingSubscriber">
        <argument type="service" id="product.repository" />
        <tag name="kernel.event_subscriber" />
    </service>
</services>

und das wäre meine Twig (src/Resources/views/storefront/element/mein-template.html.twig):

{% for product in searchResult.elements %}
    <div class="product-box">
        <h2>{{ product.translated.name }}</h2>
        {% if product.extensions.manufacturer %}
            <p>{{ product.extensions.manufacturer.translated.description }}</p>
        {% endif %}
    </div>
{% endfor %}

ich hab mal mein Erlebnisweltlayout ein dump gemacht. Das habe ich als Variable gefunden mit null: page/header/languages/elements/productManufacturerTranslations

schau dir mal an, ob Collect Data dir etwas bringt.

Alternativ würde ich immer beim Criteria Event ansetzen, bevor die Daten aus der Datenbank gelesen werden. Dann kann man mit addAssociation arbeiten.

In 6.6 wurde alles auf das CM/S verschoben, wenn ich es richtig weiß. Daher musst du mal schauen, weiß es leider nicht auswendig.

Das hat alles leider nicht geklappt!!! Jetzt habe ich mal alles verworfen und einen anderen Weg eingeschlagen. Ich habe nun ein Zusatzfeld erstellt mit dem Namen custom_hersteller_beschreibung.

im Bereich Katalog / Hersteller ist nun ein weiterer Texteditor. Dort habe ich nun die Herstellerbeschreibung eingefügt. Im Layout der Erlebniswelt habe ich über das MoorlTwig-Plugin ein Html/Twig Element hinzugefügt und ein dump erstellt. Ich finde leider das customField mit dem Technischen Namen custom_hersteller_beschreibung nirgendswo!!!. Kann mir jemand sagen was ich falsch mache oder etwas übersehe ?