Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 21. September 2020 10:40

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 6.957
Webseite

[CMS V1] Breadcrumbs & die Google Search Console

Moinsen,

hab seit sehr langem wieder mal eine Webseite aufgesetzt. Basis ist die 1.12.2 (was sonst cool ) und das Simplex Template.

Hab das breadcrumbs Template nach dem ersten Hinweis der Console auf schema.org umgestellt. Sieht aktuell so aus:

[== smarty ==]

{if isset($nodelist)}
  {$im = 1}
  {strip}
  <div class="breadcrumb" itemscope itemtype='http://schema.org/BreadcrumbList'>
  {$starttext}:&nbsp;
  {foreach $nodelist as $node}
    {assign var='spanclass' value='crumb'}
    {assign var='extraspanclass' value=''}
    {if $node->current == true}
      {assign var='extraspanclass' value=' current'}
    {/if}

    <span class="{$spanclass|cat:$extraspanclass}">
    {if $node->current == true}
      <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <span itemprop="item">
          <link itemprop="url" href="{$node->url}" />
          <span class="breadcrumb--title" itemprop="name">{$node->menutext}&nbsp;</span>
        </span>
        <meta itemprop="position" content="{$im}" />
      </span>
    {elseif ($node->url == '' or $node->url == '#') && $node->type != 'sectionheader'}
      &nbsp;&raquo;&nbsp;
    {else}
      <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a itemprop="item" href="{$node->url}" title="{$node->menutext}">
          <link itemprop="url" href="{$node->url}" />
          <span class="breadcrumb--title" itemprop="name">{$node->menutext}</span>
        </a>
        <meta itemprop="position" content="{$im}" />
        {$im = $im + 1}
      </span>
    {/if}
  {/foreach}
  </div>
  {/strip}
{/if} 

Jedoch bekomm ich jetzt den Fehler Ungültige URL in Feld "id". Hab da gerade überhaupt keine Idee, wie ich den Fehler beheben könnte...

Ihr vielleicht?

Offline

#2 21. September 2020 12:07

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.338

Re: [CMS V1] Breadcrumbs & die Google Search Console

Dein Code ist nicht valide.
Da fehlt ein schließendes </span> vor dem Ende der {/foreach} Schleife.

Offline

#3 22. September 2020 07:19

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 6.957
Webseite

Re: [CMS V1] Breadcrumbs & die Google Search Console

Uiuiuiui... bin mächtig eingerostet cry - war der Löschfinger wohl zu schnell.

Danke dir!

Offline

#4 22. September 2020 07:23

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 6.957
Webseite

Re: [CMS V1] Breadcrumbs & die Google Search Console

Console sagt "Nöö, immer noch ungültig"  yikes

Offline

#5 22. September 2020 14:33

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.338

Re: [CMS V1] Breadcrumbs & die Google Search Console

Computer sagt "Nein." roll

Bin mir nicht ganz sicher - da Dein Code ja jetzt eigentlich valide ist - aber ich glaube Google will auch für die aktuelle Seite einen Link haben.
Im Moment ist es ja so, dass die aktuelle Seite im Breadcrumb nur ein <span>-Element ist, ohne Verlinkung.
Für solche Fälle sollte meiner Meinung nach eigentlich das <link> Element sein, damit Maschinen dann dennoch etwas mit diesem <span>-Element anfangen können.
Aber Google hat damit scheinbar ein Problem.
Oder ich verstehe das Schema an dieser Stelle falsch.
Wie dem auch sei, wenn Du auch der aktuellen Seite anstelle eines <span itemprop="item"> einfach ein <a itemprop="item" href=..."> gibst, sollte der "Fehler" verschwinden. (Was das <link>-Element wiederum obsolet macht - es klappt nämlich auch ohne)
Außerdem fällt sogar eine {if}-Abfrage im Template weg, weil der Code für die beiden Bedingungen identisch wäre.

Aber aktuell habe ich noch das Problem, dass mir Google ein Feld "item" fehlt für den Home-Link meldet, obwohl da eindeutig ein item ist. Das Ding ist identisch mit denen, die Google nicht bemängelt.

EDIT: Hängt irgendwie mit dem <meta itemprop="position" content="{$im}" /> zusammen.
Sobald die items da unterschiedliche Werte drin haben, bekomme ich den Fehler.
haben alle z.B. den Wert 2 - was eigentlich totaler Schwachsinn ist! - dann sagt Computer "Ja" monkey .
Ehrlich? Ich scheiß auf Microdata!

Hab das Breadcrumbs Menü 1:1 als <ol> nachgebaut. Wie in diesem Beispiel. Das Beispiel erzeugt keine Fehler. Meine <ol> erzeugt einen Fehler.
Beispiel:

    <ol itemscope itemtype="https://schema.org/BreadcrumbList">
      <li itemprop="itemListElement" itemscope
          itemtype="https://schema.org/ListItem">
        <a itemprop="item" href="https://example.com/dresses">
        <span itemprop="name">Dresses</span></a>
        <meta itemprop="position" content="1" />
      </li>
      <li itemprop="itemListElement" itemscope
          itemtype="https://schema.org/ListItem">
        <a itemprop="item" href="https://example.com/dresses/real">
        <span itemprop="name">Real Dresses</span></a>
        <meta itemprop="position" content="2" />
      </li>
    </ol>

Mein Code:

<ol itemscope itemtype="https://schema.org/BreadcrumbList">
	<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
		<a itemprop="item" href="http://localhost/cmsms-1.12.2-php7/index.php/advanced-content-test-page">
			<span itemprop="name">Advanced Content Test Page</span>
		</a>
		<meta itemprop="position" content="1" />
	</li>
	<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
		<a itemprop="item" href="http://localhost/cmsms-1.12.2-php7/index.php/advanced-content-test-page">
			<span itemprop="name">Advanced Content Test Page</span>
		</a>
		<meta itemprop="position" content="2" />
	</li>
</ol>

Mag mir einer den Unterschied erklären?
Ansonsten ... FUCK GOOGLE!
Ich kann dieses dämliche Captcha nicht mehr sehen!
Wenn ich nachher rausgehe, krieg ich bestimmt Heulkrämpfe bei Fußgängerüberwegen, Fahrzeugen, Bussen, Ampeln und Hydranten...

Offline

#6 22. September 2020 21:16

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 6.957
Webseite

Re: [CMS V1] Breadcrumbs & die Google Search Console

NaN schrieb:

Im Moment ist es ja so, dass die aktuelle Seite im Breadcrumb nur ein <span>-Element ist, ohne Verlinkung.
Für solche Fälle sollte meiner Meinung nach eigentlich das <link> Element sein, damit Maschinen dann dennoch etwas mit diesem <span>-Element anfangen können.

Yepp, so war der Plan ...

NaN schrieb:

Wie dem auch sei, wenn Du auch der aktuellen Seite anstelle eines <span itemprop="item"> einfach ein <a itemprop="item" href=..."> gibst, sollte der "Fehler" verschwinden.

Genau das wollte ich eben nicht - war froh, den Hint mit dem Link Element gefunden zu haben.

NaN schrieb:

EDIT: Hängt irgendwie mit dem <meta itemprop="position" content="{$im}" /> zusammen.
Sobald die items da unterschiedliche Werte drin haben, bekomme ich den Fehler.
haben alle z.B. den Wert 2 - was eigentlich totaler Schwachsinn ist! - dann sagt Computer "Ja" monkey .

Eben - können ja nicht alle die gleiche Position in der Nav-Struktur haben.

NaN schrieb:

Ehrlich? Ich scheiß auf Microdata!

Keine Ahnung, ob das ein geheimes Ranking Kriterium ist...

NaN schrieb:

Wenn ich nachher rausgehe, krieg ich bestimmt Heulkrämpfe bei Fußgängerüberwegen, Fahrzeugen, Bussen, Ampeln und Hydranten...

Und ich dachte, nur mir geht es so  hmm ...

Offline

#7 23. September 2020 13:42

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.338

Re: [CMS V1] Breadcrumbs & die Google Search Console

Nachtrag: Also mein liebes Google ... mein Snippet funktioniert nicht, weil die erste URL nicht das "korrekte" Format hat. "localhost" erkennt Google nicht als gültige URL und somit stimmt die ganze Struktur für Google nicht. Zwar irgendwie "logisch", weil zumindest das Root-Element irgendwie gültig sein muss, aber irgendwie auch wieder ... roll
Gebe ich da an erster Stelle irgendwas nach dem Schema "blablubb.foo" an, dann funktioniert es jedenfalls. Und nochwas, zwar auch logisch, aber beim Snippet-Testen drüber gestolpert: wenn zumindest das Root-Element immer irgendwie gültig sein muss, dann darf es nie das aktuelle Element sein - sprich es muss immer einen Link haben, oder es muss das einzige Element sein.

Zu Deinem Problem: Schau Dir mal die Beispiele von Google an. Für das aktuelle Element (bei BreadCrumbs i.d.R. ja immer das letzte) wird kein "Item" verwendet.
Also einfach nur:

	<span class="crumb current">
		<span itemprop="itemListElement" itemscope="" itemtype="http://schema.org/ListItem">
			<link itemprop="url" href="...">
			<span class="breadcrumb--title" itemprop="name">...</span>
			<meta itemprop="position" content="12">
		</span>
	</span>

Am Ende irgendwie auch logisch: Kein Link <-> kein Item.
Der Link zur aktuellen Seite steht schließlich im Head.

D.h. fürs Template:

{if isset($nodelist)}
  {$im = 1}
  {strip}
  <div class="breadcrumb" itemscope itemtype='http://schema.org/BreadcrumbList'>
  {$starttext}:&nbsp;
  {foreach $nodelist as $node}
    {assign var='spanclass' value='crumb'}
    {assign var='extraspanclass' value=''}
    {if $node->current == true}
      {assign var='extraspanclass' value=' current'}
    {/if}

    <span class="{$spanclass|cat:$extraspanclass}">
    {if $node->current == true}
      <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
          <link itemprop="url" href="{$node->url}" />
          <span class="breadcrumb--title" itemprop="name">{$node->menutext}&nbsp;</span>
        <meta itemprop="position" content="{$im}" />
      </span>
    {elseif ($node->url == '' or $node->url == '#') && $node->type != 'sectionheader'}
      &nbsp;&raquo;&nbsp;
    {else}
      <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
        <a itemprop="item" href="{$node->url}" title="{$node->menutext}">
          <link itemprop="url" href="{$node->url}" />
          <span class="breadcrumb--title" itemprop="name">{$node->menutext}</span>
        </a>
        <meta itemprop="position" content="{$im}" />
        {$im = $im + 1}
      </span>
    {/if}
   </span>
  {/foreach}
  </div>
  {/strip}
{/if} 

Ob das <link itemprop="url" href="..."> für die aktuelle Seite dann immer noch sinnvoll ist, kann ich nicht sagen. Bemängelt wird es jedenfalls nicht. Egal ob da oder weg.

Und ich dachte, nur mir geht es so

Jeder, der kein Bot ist.

Offline

#8 24. September 2020 11:26

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 6.957
Webseite

Re: [CMS V1] Breadcrumbs & die Google Search Console

NaN schrieb:

"localhost" erkennt Google nicht als gültige URL und somit stimmt die ganze Struktur für Google nicht. Zwar irgendwie "logisch", weil zumindest das Root-Element irgendwie gültig sein muss

Gut zu wissen - die URL muss also 127.0.0.1 lauten  cool

NaN schrieb:

Ob das <link itemprop="url" href="..."> für die aktuelle Seite dann immer noch sinnvoll ist, kann ich nicht sagen. Bemängelt wird es jedenfalls nicht. Egal ob da oder weg.

Google sagt, Konsole prüft tongue - zumindest ist die Anzahl der Fehler seit meinen Änderungen schon mal runtergegangen.

Wenn es keinen Items gibt, macht auch ein Item Prop keinen Sinn. Eine Property wofür?

Ergo, als nicht sinnvoll eingestuft  big_smile .

Aber irgendwie werden meine Fragen gerade mehr anstatt weniger - werd halt alt  devil ...

Offline

#9 24. September 2020 11:37

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.338

Re: [CMS V1] Breadcrumbs & die Google Search Console

Wenn es keinen Items gibt, macht auch ein Item Prop keinen Sinn. Eine Property wofür?

Für das ... ähm ... nicht-Item namens "itemListElement".
Die Elemente sind teilweise voneinander abgeleitet. Wie bei OOP. Sie erben demnach die Eigenschaften ihrer Elternelemente. "itemprop" bezieht sich also nicht explizit nur auf "item" sondern auf "thing" und somit auf irgendein Element in dessen Kontext es sich gerade befindet, welches von "thing" abgeleitet wurde.
Steht es innerhalb von "item" gehört zum Item.
Steht es innerhalb von "itemListElement" gehört es eben dazu.
usw.
Also alles, was von "thing" abgeleitet wird, hat die Eigenschaft "itemprop".

Wenns hilft, einfach mal hier reinschauen.

Offline

#10 10. Oktober 2020 20:09

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 6.957
Webseite

Re: [CMS V1] Breadcrumbs & die Google Search Console

NaN schrieb:

Also alles, was von "thing" abgeleitet wird, hat die Eigenschaft "itemprop".

Hast recht behalten. Hat zwar ne Weile gedauert, aber Google hat prompt wieder gemeckert ...

Feld "itemListElement" fehlt

Offline

#11 11. Oktober 2020 11:52

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.338

Re: [CMS V1] Breadcrumbs & die Google Search Console

Das Template hier funktioniert bei mir. Also zumindest was die Breadcrumbs angeht, hatte es bei mir nichts zu meckern. Ich hab aber auch nur die Breadcrumbs als Code-Snippet getestet, nicht die komplette Seite.

Eines hab ich inzwischen herausgefunden: Die Fehlermeldungen sind ein wenig irreführend. Sobald auch nur irgendein Wert eines Attributes nicht das von Google gewünschte Format hat, gilt das gesamte Element als invalide. Und damit "fehlt" das Element. Bsp.: "localhost" im href-Attribut eines Items führt dazu, dass Google meint 'Unbenanntes Element: Feld "item" fehlt', obwohl alles da ist.

Ergo:

Feld "itemListElement" fehlt

Da fehlt mit Sicherheit nichts.
Da hat nur irgendeine Eigenschaft nicht den richtigen Wert oder es ist ein Folgefehler.

Offline