Strukturierte Datenelemente sind ungültig

Hallo,

bei einem Test stellte sich heraus, dass die strukturierten Datenelemente teilweise ungültig sind.

Weiß jemand, woran das liegen könnte und wie man das in Shopware beheben kann?

Die BreadcrumbList sollte normalerweise so aussehen:

itemListElement (url, name, position, item)

Leider fehlt hier das Feld: position

Vielen Dank euch!

image

Hallo,
welches Template verwendet ihr denn? Eventuell wird dort die Datei überschrieben.

Im Bare-Template unter theme/Frontend/Bare/frontend/Index/breadcrumb.tpl (bzw. dann in eurem angepassten Template) werden die strukturierten Daten dafür mit ausgegeben und dort wird auch das position-Feld gesetzt.

Und mit welchem Tool habt ihr die Korrektheit geprüft?

Hallo,
wir haben dies mit verschiedenen SEO Tools und auch mit dem Google Tool: Testtool für strukturierte Daten

Damit habe ich das gerade für einen Demoshop ohne irgendwelche Anpassungen auch nochmal geprüft und da wird die BreadcrumbList ohne Fehler angezeigt und Position hat auch einen korrekten Wert zugewiesen.

Müsste bei Dir also entweder an einem der verwendeten Plugins oder wie vermutet am Template liegen. Welche Shopware Version ist bei Dir im Einsatz?

Wir nutzen Shopware 5.6.9

Das Template stammt von einer Agentur.

Dann schau doch mal wenn möglich bitte, ob es in dem angepassten Template die folgende Datei gibt theme/Frontend/TEMPLATENAME/frontend/Index/breadcrumb.tpl und falls ja, wäre es gut einmal den Inhalt zu sehen.

<ul class="uk-breadcrumb" role="menu" itemscope itemtype="http://schema.org/BreadcrumbList">

{* Prefix for the breadcrumb e.g. the configured shop name *}
{block name="frontend_index_breadcrumb_prefix"}{/block}

{block name="frontend_index_breadcrumb_content"}
    <li class="breadcrumb--entry {if $Controller == 'index'} is--active{/if}"  itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
      <a class="breadcrumb--link" href="{url controller='index'}" title="Home" itemprop="item">
          <link itemprop="url" href="{url controller='index'}" />
          <span class="breadcrumb--title" itemprop="name">Home</span>
      </a>
      <meta itemprop="position" content="{$breadcrumb@index}" />
    </li>
    {foreach $sBreadcrumb as $breadcrumb}
        {block name="frontend_index_breadcrumb_entry"}
            <li class="breadcrumb--entry{if $breadcrumb@last} is--active{/if}" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
                {if $breadcrumb.name}
                    {block name="frontend_index_breadcrumb_entry_inner"}
                        {if $breadcrumb.link}
                            <a class="breadcrumb--link" href="{$breadcrumb.link}" title="{$breadcrumb.name|escape}" itemprop="item">
                                <link itemprop="url" href="{$breadcrumb.link}" />
                                <span class="breadcrumb--title" itemprop="name">{$breadcrumb.name|strip_tags}</span>
                            </a>
                        {else}
                            <span class="breadcrumb--link" itemprop="item">
                                <span class="breadcrumb--title" itemprop="name">{$breadcrumb.name|strip_tags}</span>
                            </span>
                        {/if}
                        <meta itemprop="position" content="{$breadcrumb@index}" />
                    {/block}
                {/if}
            </li>
        {/block}
    {/foreach}
{/block}

{block name="frontend_index_breadcrumb_suffix"}{/block}

Die breadcrumb.tpl unterscheidet sich von der aus dem Bare.

Wenn ich das richtig sehe, dann wird in dem ersten Teil, in dem ihr einen zusätzlichen „Home“-Breadcrumb-Eintrag setzen wollt, auch {$breadcrumb@index} referenziert, das aber außerhalb der foreach-Schleife, in der $breadcrumb gesetzt wird.

Würde es wie folgt ändern, dann wird position für den ersten Eintrag auf 0 gesetzt und für alle folgenden um eins erhöht:

<ul class="uk-breadcrumb" role="menu" itemscope itemtype="http://schema.org/BreadcrumbList">

{* Prefix for the breadcrumb e.g. the configured shop name *}
{block name="frontend_index_breadcrumb_prefix"}{/block}

{block name="frontend_index_breadcrumb_content"}
    <li class="breadcrumb--entry {if $Controller == 'index'} is--active{/if}"  itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a class="breadcrumb--link" href="{url controller='index'}" title="Home" itemprop="item">
            <link itemprop="url" href="{url controller='index'}" />
            <span class="breadcrumb--title" itemprop="name">Home</span>
        </a>
        <meta itemprop="position" content="0" />
    </li>
    {foreach $sBreadcrumb as $breadcrumb}
        {block name="frontend_index_breadcrumb_entry"}
            <li class="breadcrumb--entry{if $breadcrumb@last} is--active{/if}" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
                {if $breadcrumb.name}
                    {block name="frontend_index_breadcrumb_entry_inner"}
                        {if $breadcrumb.link}
                            <a class="breadcrumb--link" href="{$breadcrumb.link}" title="{$breadcrumb.name|escape}" itemprop="item">
                                <link itemprop="url" href="{$breadcrumb.link}" />
                                <span class="breadcrumb--title" itemprop="name">{$breadcrumb.name|strip_tags}</span>
                            </a>
                        {else}
                            <span class="breadcrumb--link" itemprop="item">
                            <span class="breadcrumb--title" itemprop="name">{$breadcrumb.name|strip_tags}</span>
                        </span>
                        {/if}
                        <meta itemprop="position" content="{$breadcrumb@index +1}" />
                    {/block}
                {/if}
            </li>
        {/block}
    {/foreach}
{/block}

{block name="frontend_index_breadcrumb_suffix"}{/block}
</ul>

Habe das lokal getestet und kriege damit keine Fehler für die strukturierten Daten mehr.

1 Like

Hallo,

ich glaube ich habe die falsche breadcrumb.tpl Datei geschickt.
Würdest du dir diese auch nochmal ansehen?

<ul class="breadcrumb--list" role="menu" itemscope itemtype="https://schema.org/BreadcrumbList">

{* Prefix for the breadcrumb e.g. the configured shop name *}
{block name="frontend_index_breadcrumb_prefix"}{/block}

{block name="frontend_index_breadcrumb_content"}
    {foreach $sBreadcrumb as $breadcrumb}
        {block name="frontend_index_breadcrumb_entry"}
            <li role="menuitem" class="breadcrumb--entry{if $breadcrumb@last} is--active{/if}" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
                {if $breadcrumb.name}
                    {block name="frontend_index_breadcrumb_entry_inner"}
                        {if $breadcrumb.link}
                            <a class="breadcrumb--link" href="{$breadcrumb.link}" title="{$breadcrumb.name|escape}" itemprop="item">
                                <link itemprop="url" href="{$breadcrumb.link}" />
                                <span class="breadcrumb--title" itemprop="name">{$breadcrumb.name}</span>
                            </a>
                        {else}
                            <span class="breadcrumb--link" itemprop="item">
                                <span class="breadcrumb--title" itemprop="name">{$breadcrumb.name}</span>
                            </span>
                        {/if}
                        <meta itemprop="position" content="{$breadcrumb@index}" />
                    {/block}
                {/if}
            </li>
            {if !$breadcrumb@last}
                <li role="none" class="breadcrumb--separator">
                    <i class="icon--arrow-right"></i>
                </li>
            {/if}
        {/block}
    {/foreach}
{/block}

{block name="frontend_index_breadcrumb_suffix"}{/block}

Wenn das die verwendete breadcrumb.tpl ist, muss es doch an etwas anderem liegen, mit der habe ich nämlich auch keine Probleme und die Position wird korrekt gesetzt und dargestellt.

Wenn du möchtest, kannst Du mir hier oder per PN gerne mal die URL zu deinem Shop schicken.

1 Like

Dankeschön, PN ist raus.