GoogleShopping Export

Beim CronJop habe ich gerade diesen Fehler:

[business_events] Failed rendering string template using Twig: Failed rendering string template using Twig: Impossible to access an attribute (\"locale\") on a null variable in \"bc50da776529a6f56579797015be37ed\" at line 8. [\"source\" => \"core\",\"environment\" => \"prod\",\"additionalData\" => [\"exception\" => \"\"\"  Shopware\\Core\\Content\\ProductExport\\Exception\\RenderHeaderException: Failed rendering string template using Twig: Failed rendering string template using Twig: Impossible to access an attribute (\"locale\") on a null variable in \"bc50da776529a6f56579797015be37ed\" at line 8. 

hatte zuerst einen anderen konnte ich aber damit lösen das ich die Hersteller zugewiesen habe beim Artikel wie auch hier im Forum schonmal beschrieben.

Leider kommt nun auch diese hinzu. Kann aber dazu gerade nichts im Forum oder selbst herausfinden was er meinen könnte.

Wer kann helfen oder mir einen Tipp geben.

Kennt keiner diesen Fehler:

Failed rendering string template using Twig: Failed rendering string template using Twig: Impossible to access an attribute („locale“) on a null variable in „bc50da776529a6f56579797015be37ed“ at line 8. {„source“:„core“,„environment“:„prod“,„additionalData“:{„exception“:„Shopware\Core\Content\ProductExport\Exception\RenderHeaderException: Failed rendering string template using Twig: Failed rendering string template using Twig: Impossible to access an attribute („locale“) on a null variable in „bc50da776529a6f56579797015be37ed“ at line 8. in /var/www/html/SW-Projekt/vendor/shopware/core/Content/ProductExport/Service/ProductExportRenderer.php:70\nStack trace:\n#0 /var/www/html/SW-Projekt/vendor/shopware/core/Content/ProductExport/ScheduledTask/ProductExportPartialGenerationHandler.php(189): Shopware\Core\Content\ProductExport\Service\ProductExportRenderer->renderHeader(Object(Shopware\Core\Content\ProductExport\ProductExportEntity), Object(Shopware\Core\System\SalesChannel\SalesChannelContext))\n#1 /var/www/html/SW-Projekt/vendor/shopware/core/Content/ProductExport/ScheduledTask/ProductExportPartialGenerationHandler.php(159): Shopware\Core\Content\ProductExport\ScheduledTask\ProductExportPartialGenerationHandler->finalizeExport(Object(Shopware\Core\Content\ProductExport\ProductExportEntity), ‚export/PL-CH-GS…‘)\n#2 /var/www/html/SW-Projekt/vendor/shopware/core/Framework/MessageQueue/Handler/AbstractMessageHandler.php(16): Shopware\Core\Content\ProductExport\ScheduledTask\ProductExportPartialGenerationHandler->handle(Object(Shopware\Core\Content\ProductExport\ScheduledTask\ProductExportPartialGeneration))\n#3 /var/www/html/SW-Projekt/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(96): Shopware\Core\Framework\MessageQueue\Handler\AbstractMessageHandler->__invoke(Object(Shopware\Core\Content\ProductExport\ScheduledTask\ProductExportPartialGeneration))\n#4 /var/www/html/SW-Projekt/vendor/symfony/messenger/Middleware/SendMessageMiddleware.php(74): Symfony\Component\Messenger\Middleware\HandleMessageMiddleware->handle(Object(Symfony\Component\Messenger\Envelope), Object(Symfony\Component\Messenger\Middleware\StackMiddleware))\n#5 /var/www/html/SW-Projekt/vendor/shopware/core/Framework/MessageQueue/Middleware/RetryMiddleware.php(41): Symfony\Component\Messenger\Middleware\SendMessageMiddleware->handle(Object(Symfony\Component\Messenger\Envelope), Object(Symfony\Component\Messenger\Middleware\StackMiddleware))\n#6 /var/www/html/SW-Projekt/vendor/symfony/messenger/Middleware/FailedMessageProcessingMiddleware.php(34): Shopware\Core\Framework\MessageQueue\Middleware\RetryMiddleware->handle(Object(Symfony\Component\Messenger\Envelope), Object(Symfony\Component\Messenger\Middleware\StackMiddleware))\n#7 /var/www/html/SW-Projekt/vendor/symfony/messenger/Middleware/DispatchAfterCurrentBusMiddleware.php(68): Symfony\Component\Messenger\Middleware\FailedMessageProcessingMiddleware->handle(Object(Symfony\Component\Messenger\Envelope), Object(Symfony\Component\Messenger\Middleware\StackMiddleware))\n#8 /var/www/html/SW-Projekt/vendor/symfony/messenger/Middleware/RejectRedeliveredMessageMiddleware.php(48): Symfony\Component\Messenger\Middleware\DispatchAfterCurrentBusMiddleware->handle(Object(Symfony\Component\Messenger\Envelope), Object(Symfony\Component\Messenger\Middleware\StackMiddleware))\n#9 /var/www/html/SW-Projekt/vendor/symfony/messenger/Middleware/AddBusNameStampMiddleware.php(37): Symfony\Component\Messenger\Middleware\RejectRedeliveredMessageMiddleware->handle(Object(Symfony\Component\Messenger\Envelope), Object(Symfony\Component\Messenger\Middleware\StackMiddleware))\n#10 /var/www/html/SW-Projekt/vendor/symfony/messenger/MessageBus.php(77): Symfony\Component\Messenger\Middleware\AddBusNameStampMiddleware->handle(Object(Symfony\Component\Messenger\Envelope), Object(Symfony\Component\Messenger\Middleware\StackMiddleware))\n#11 /var/www/html/SW-Projekt/vendor/shopware/core/Framework/MessageQueue/Monitoring/MonitoringBusDecorator.php(37): Symfony\Component\Messenger\MessageBus->dispatch(Object(Symfony\Component\Messenger\Envelope), Array)\n#12 /var/www/html/SW-Projekt/vendor/symfony/messenger/RoutableMessageBus.php(54): Shopware\Core\Framework\MessageQueue\Monitoring\MonitoringBusDecorator->dispatch(Object(Symfony\Component\Messenger\Envelope), Array)\n#13 /var/www/html/SW-Projekt/vendor/symfony/messenger/Worker.php(158): Symfony\Component\Messenger\RoutableMessageBus->dispatch(Object(Symfony\Component\Messenger\Envelope))\n#14 /var/www/html/SW-Projekt/vendor/symfony/messenger/Worker.php(107): Symfony\Component\Messenger\Worker->handleMessage(Object(Symfony\Component\Messenger\Envelope), ‚default‘)\n#15 /var/www/html/SW-Projekt/vendor/symfony/messenger/Command/ConsumeMessagesCommand.php(225): Symfony\Component\Messenger\Worker->run(Array)\n#16 /var/www/html/SW-Projekt/vendor/symfony/console/Command/Command.php(298): Symfony\Component\Messenger\Command\ConsumeMessagesCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))\n#17 /var/www/html/SW-Projekt/vendor/symfony/console/Application.php(1033): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))\n#18 /var/www/html/SW-Projekt/vendor/symfony/framework-bundle/Console/Application.php(96): Symfony\Component\Console\Application->doRunCommand(Object(Symfony\Component\Messenger\Command\ConsumeMessagesCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))\n#19 /var/www/html/SW-Projekt/vendor/symfony/console/Application.php(299): Symfony\Bundle\FrameworkBundle\Console\Application->doRunCommand(Object(Symfony\Component\Messenger\Command\ConsumeMessagesCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))\n#20 /var/www/html/SW-Projekt/vendor/symfony/framework-bundle/Console/Application.php(82): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))\n#21 /var/www/html/SW-Projekt/vendor/symfony/console/Application.php(171): Symfony\Bundle\FrameworkBundle\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))\n#22 /var/www/html/SW-Projekt/bin/console(69): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput))\n#23 {main}“}}

Den Fehler hatte erst letztes jemand. Oder es war dein Post im Englischen Forum :laughing:

Irgendein Produkt scheint korrupt zu sein, vermutlich hat es etwas mir der Übersetzung zu tun. Genaues kann ich aus dem Fehler aber auch nicht mehr rauslesen.

ja sowas habe ich auch schon rausgefunden.
Aber mit der Übersetzung kann es wenig zu tun haben. Es sind 3 Domains ( DA, AT, CH ) angelegt diese haben aber als Sprache jeweils DE hinterlegt.
Es sind auch im Shop gerade nur 2 Artikel mit ihren Varianten angelegt und die sind beide ohne Probleme aufrufbar. Dies sollte da ja auch schon zu einen Fehler führen oder?

Hallo zusammen,

habe selbst mit allem zu kämpfen gehabt.
Mein Code funktioniert jetzt aber einwandfrei:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <atom:link href="{{ productExport.salesChannelDomain.url }}/store-api/product-export/{{ productExport.accessKey }}/{{ productExport.fileName }}" rel="self" type="application/rss+xml" />
        <title>{{ context.salesChannel.name }}</title>
        <description>{# change your shop's description #}</description>
        <link>{{ productExport.salesChannelDomain.url }}</link>
        <language>{{ productExport.salesChannelDomain.language.locale.code }}</language>
        <image>
            <url>{# add your logo URL #}</url>
            <title>{{ context.salesChannel.name }}</title>
            <link>{{ productExport.salesChannelDomain.url }}</link>
        </image>
<item>
    <g:id>{{ product.productNumber }}</g:id>
    <title>{{ product.translated.name|escape }}</title>
    <description>{{ product.translated.description|escape }}</description>
    <g:google_product_category>5457</g:google_product_category>
    <g:product_type>{{ product.categories.first.getBreadCrumb|slice(1)|join(' > ')|raw|escape }}</g:product_type>
    <link>{{ seoUrl('frontend.detail.page', {'productId': product.id}) }}</link>
    <g:image_link>{{ product.cover.media.url }}</g:image_link>
    <g:condition>new</g:condition>
    <g:availability>
        {%- if product.availableStock >= product.minPurchase and product.deliveryTime -%}
            in_stock
        {%- elseif product.availableStock < product.minPurchase and product.deliveryTime and product.restockTime -%}
            preorder
        {%- else -%}
            out_of_stock
        {%- endif -%}
    </g:availability>
    {% set price = product.calculatedPrice %}
    {%- if product.calculatedPrices.count > 0 -%}
        {% set price = product.calculatedPrices.last %}
    {%- endif -%}

    <g:price>{{ price.unitPrice|number_format(context.currency.itemRounding.decimals, '.', '') }} {{ context.currency.isoCode }}</g:price>
    <g:brand>BRANDNAME HIER EINTRAGEN</g:brand>
    <g:gtin>{{ product.ean }}</g:gtin>
    <g:mpn>{{ product.manufacturerNumber }}</g:mpn>
    <g:shipping>
        <g:country>DE</g:country>
        <g:service>Standard</g:service>
        <g:price>{{ 4.95|currency }}{# change your default delivery costs #}</g:price>
    </g:shipping>
</item>

Achtung: Versand und Brand sind manuell eingetragen bei uns. Da müsst ihr vielleicht noch Anpassungen durchführen ^^

mit

<g:image_link>{%- if product.cover -%}{{ product.cover.media.url }}{%- endif -%}</g:image_link>

ersetzen

1 Like

Lass mich raten, sonst funktioniert es nicht falls kein Cover Bild vorhanden ist? :slight_smile: Oder wozu das Upgrade mit dem if?

1 Like

Richtig, so einfach ist das. :wink:

Da wir alle Produkte mit Coverbild haben, ging es auch so. Aber gut für die Zukunft. Danke!

Hi, was war bei dir die Lösung? Wir haben vermutlich das gleiche Problem. Die Templates sind sauber, aber der Fehler taucht trotzdem auf. habe aktuell 30K Zeilen Log pro Tag :frowning:
Danke und Grüße

Ich habe das Problem mit ‚locale‘ ebenfalls, wenn die Generierung via Cron/Console erfolgt und es so umbaut:

  {% if productExport.salesChannelDomain.language %}
        <language>{{ productExport.salesChannelDomain.language.locale.code }}</language>
        {% else %}
        <language>de-DE</language>
        {% endif %}