Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Der Wert für item.id muss eine gültige URL sein

    hpzeller

    • Experte
    • Beiträge: 3.746
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #15 am: 02. November 2018, 10:07:41
    Hallo Andreas Kroll,

    freut mich, dass es funktioniert, aber beim Besuch deines Shops ist mir bei diesem Link -> https://www.angelcenter-soest.de/DUO-Realis-V-Tail-Shad-3-7-5cm-F005--19352.html ein Fehler aufgefallen.

    Der obige Link führt zu diesem Produkt DUO Realis V-Tail Shad 3" -7.5cm #F005 welches ein doppeltes Anführungszeichen (")  im Namen hat und das erzeugt im Testtool für strukturierte Daten einen Fehler.

    Hier der überarbeitete Code aus meiner Antwort #13 bei dem der oben beschriebene Fehler nicht mehr auftreten sollte.

    Code: PHP  [Auswählen]
    <?php
    /* -----------------------------------------------------------------------------------------
       $Id: breadcrumb.php 899 2005-04-29 02:40:57Z hhgag $  

       modified eCommerce Shopsoftware
       http://www.modified-shop.org

       Copyright (c) 2009 - 2013 [www.modified-shop.org]
       -----------------------------------------------------------------------------------------
       based on:
       (c) 2000-2001 The Exchange Project  (earlier name of osCommerce)
       (c) 2002-2003 osCommerce(breadcrumb.php,v 1.3 2003/02/11); www.oscommerce.com
       (c) 2003      nextcommerce (breadcrumb.php,v 1.5 2003/08/13); www.nextcommerce.org
       (c) 2003 XT-Commerce

       Released under the GNU General Public License
       ---------------------------------------------------------------------------------------*/


      class breadcrumb {
        var $_trail;


        function __construct() {
          $this->reset();
        }


        function reset() {
          $this->_trail = array();
        }


        function remove_last() {
          array_pop($this->_trail);
        }


        function remove($title) {
          for ($i=0, $n=sizeof($this->_trail); $i<$n; $i++) {
            if ($this->_trail[$i]['title'] == $title) {
              unset($this->_trail[$i]);
            }
          }
          $this->_trail = array_values($this->_trail);
        }


        function add($title, $link = '') {
         
          $this->_trail[] = array('title' => $title, 'link' => $link);
        }


        function trail($separator = ' - ') {
          $json_ld_str = PHP_EOL . '<script type="application/ld+json">' . PHP_EOL .
                                   ' {' . PHP_EOL .
                                   '   "@context": "http://schema.org/",' . PHP_EOL .
                                   '   "@type": "BreadcrumbList",' . PHP_EOL .
                                   '   "itemListElement": [' . PHP_EOL;
         
          for ($i=0, $n=sizeof($this->_trail); $i<$n; $i++) {

            if (($i+1)<$n) {
              $trail_string .= '<a href="' . $this->_trail[$i]['link'] . '" class="headerNavigation">' . $this->_trail[$i]['title'] . '</a>';
            } else {
              $trail_string .= '<span class="current">'. $this->_trail[$i]['title'] .'</span>';
            }

            if (($i+1) < $n) $trail_string .= $separator;
           
            $json_ld_str .= '     {' . PHP_EOL .
                            '        "@type": "ListItem",' . PHP_EOL .
                            '        "position": "' . ($i+1) . '",' . PHP_EOL .
                            '        "item": {' . PHP_EOL .
                            '          "@id": "' . $this->_trail[$i]['link'] . '",' . PHP_EOL .
                            '          "name": "' . addcslashes($this->_trail[$i]['title'], '"') . '"' . PHP_EOL .
                            '       }' . PHP_EOL .
                            '     }' . (($i+1)<$n ? ',' : '') . PHP_EOL;                            
          }
         
          $json_ld_str .= '   ]' . PHP_EOL .
                          ' }' . PHP_EOL .
                          '</script>' . PHP_EOL;      
         
          return $trail_string . $json_ld_str;
        }
       

        function econda() {
          $econda_string = '';

          for ($i=1, $n=sizeof($this->_trail); $i<$n; $i++) {
            $econda_string .= $this->_trail[$i]['title'];

            if (($i+1) < $n) $econda_string .= '/';
          }

          return $econda_string;
        }
       
      }
     

    Gruss
    Hanspeter

    Andreas Kroll

    • Fördermitglied
    • Beiträge: 215
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #16 am: 02. November 2018, 10:19:20
    Unglaublich.
    Nochmals vielen lieben Dank.

    mfg
    Andreas

    pcsdg

    • Neu im Forum
    • Beiträge: 31
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #17 am: 02. November 2018, 13:46:44
    :thx:

    it works...

    FräuleinGarn

    • Fördermitglied
    • Beiträge: 4.629
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #18 am: 02. November 2018, 21:50:48
    @hpzeller

     :king:

    Was soll man dazu sagen? Einfach nur Klasse! Danke vielmals Hanspeter.

    Funktioniert. Was ich mich aber frage ist ob da nicht der schließende php tag unten fehlt? Komischerweise funktioniert es mit und ohne, aber im Original war da auch einer.

    Und was ich nicht verstehe - warum musste das auf json-ld umgeschrieben werden? Wäre das mit dem vorher genutzten Microdata markup nicht gegangen? Und hat json-ld irgendwelche Vor- bzw. Nachteile, die man nun beachten muss?

    Mir ist das zu hoch, dass es unterschiedliche markup Möglichkeiten gibt. Soll man sich doch auf eins verständigen.

    Und macht es einen Unterschied, dass das name nun weiter unten und eingerückt steht?

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Gruß Timm

    hpzeller

    • Experte
    • Beiträge: 3.746
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #19 am: 02. November 2018, 21:59:40
    [...]
    Was ich mich aber frage ist ob da nicht der schließende php tag unten fehlt? Komischerweise funktioniert es mit und ohne, aber im Original war da auch einer.
    [...]

    Folgendes Zitat stammt von hier -> http://php.net/manual/de/language.basic-syntax.phptags.php

    Zitat
    Ist eine Datei reiner PHP-Code, ist es besser, den schließenden PHP-Tag am Ende der Datei wegzulassen. Das verhindert, dass versehentlich Whitespace oder Zeilenumbrüche nach dem schließenden PHP-Tag hinzugefügt werden, die unerwünschte Auswirkungen haben können, da PHP das Puffern der Ausgabe beginnt, auch wenn der Programmierer keinerlei Absicht hatte, irgendwelche Ausgaben an dieser Stelle des Scripts zu senden.

    Gruss
    Hanspeter

    FräuleinGarn

    • Fördermitglied
    • Beiträge: 4.629
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #20 am: 02. November 2018, 22:10:33
    :thx:

    hpzeller

    • Experte
    • Beiträge: 3.746
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #21 am: 03. November 2018, 11:19:13
    Hallo Timm

    [...]
    Und was ich nicht verstehe - warum musste das auf json-ld umgeschrieben werden? Wäre das mit dem vorher genutzten Microdata markup nicht gegangen?
    [...]

    Mit ein bisschen tricksen wäre das schon gegangen, man hätte z.B. den Vorschlag aus meiner Antwort #4

    Code: PHP  [Auswählen]
    $trail_string .= '<a itemprop="item" href="#"><span class="current" itemprop="name">'.$this->_trail[$i]['title'].'</span></a>';

    mit diesm Code ersetzen können,

    Code: PHP  [Auswählen]
    $trail_string .= '<a itemprop="item" href="#" onclick="return false;"><span class="current" itemprop="name">'.$this->_trail[$i]['title'].'</span></a>';

    dadurch würde zwar immer noch ein Link erzeugt, aber dieser hätte keine Wirkung.

    [...]
    Und hat json-ld irgendwelche Vor- bzw. Nachteile, die man nun beachten muss?
    [...]

    Also ich sehe bei der Übertragung von strukturierte Daten im JSON-LD Format den Vorteil  gegenüber dem Microdata Format darin, das man beim Einsatz von JSON-LD beim HTML-Code völlig frei ist und auch die Gefahr gebannt wird bei etwaigen Abänderungen des HTML-Codes Microdaten zu vergessen oder die korrekte Microdata Syntax zu zerstören, was dann z.B. zu einem Fehler im Testtool für strukturierte Daten führt. Bei der Breadcrumb ist die Gefahr vielleicht nicht so gross, bei den  Microdaten für das Produkt scheint mir aber die Gefahr bei Abänderungen des HTML-Codes Microdaten zu vergessen oder die korrekte Microdata Syntax zu zerstören durchaus zu bestehen.

    [...]
    Und macht es einen Unterschied, dass das name nun weiter unten und eingerückt steht?
    [...]

    Wenn man die verschiedenen Darstellungsarten des Exempels von hier -> https://schema.org/BreadcrumbList beim Testtool für strukturierte Daten hier -> https://search.google.com/structured-data/testing-tool?hl=de als Code-Snippet eingibt werden alle als korrekt ausgewiesen, obwohl die Darstellungen der Ergebnisse unterschiedlich sind. Mein Fazit daraus, es macht keinen Unterschied.

    Gruss
    Hanspeter

    FräuleinGarn

    • Fördermitglied
    • Beiträge: 4.629
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #22 am: 03. November 2018, 17:53:52
    Danke dir für die Erläuterungen. Ich hab es in meinem produktiven Shop eingebaut, falls es sich jemand angucken möchte.

    Ich hoffe mal, dass das zur Standardlösung wird, damit es dann updatesicher ist.

    Also nochmals vielen Dank!

    Gruß Timm

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 5.652
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #23 am: 05. November 2018, 17:06:38
    Wir haben das mit einem eigenen Template für die Breadcrumb gelöst. Damit kann jeder selber entscheiden, ob JSON-LD oder Microtags verwendet werden soll.

    Gruss Gerhard

    derheiko

    • Fördermitglied
    • Beiträge: 362
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #24 am: 06. November 2018, 08:27:20
    Lieben Dank hpzeller,

    ich habe deinen Code aus Antwort #13 ersetzt und auch bei mir ist nun die Meldung weg.

    Gaaannzz vvviieeelleeennn lieben Dank!

    mrheat

    • Frisch an Board
    • Beiträge: 68
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #25 am: 06. November 2018, 10:54:25
    funktioniert ganz hervorragend !

    Danke Hanspeter

    hpzeller

    • Experte
    • Beiträge: 3.746
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #26 am: 06. November 2018, 11:40:07
    Wir haben das mit einem eigenen Template für die Breadcrumb gelöst. Damit kann jeder selber entscheiden, ob JSON-LD oder Microtags verwendet werden soll.

    Gruss Gerhard

    Also irgendwie verstehe ich nicht warum das jetzt nötig ist, der modified Nutzer möchte doch einfach das es fehlerfrei funktioniert und vor dem Hintergrund folgender Zitate ist es doch klar das man JSON-LD zum Einfügen strukturierter Daten in ein HTML-Dokument verwenden sollte.

    Zitat
    Abstract
    This [html-extensions] specification defines new HTML attributes to embed simple machine-readable data in HTML documents. It is similar to, but generally less expressive than RDFa, and does not support the same level of internationalization. It is simple to learn and process, but authors who need good internationalization support, or want to include structured content in their data should consider using RDFa. (or another format such as JSON-LD) instead.
    Quelle: https://www.w3.org/TR/microdata/

    Zitat
    Google recommends using JSON-LD for structured data whenever possible.
    Quelle: https://developers.google.com/search/docs/guides/intro-structured-data

    Gruss
    Hanspeter

    derheiko

    • Fördermitglied
    • Beiträge: 362
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #27 am: 14. Dezember 2018, 08:09:34
    Neue Runde:

    Heute meckert Google über folgende Einträge:

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Zitat
    warningpriceValidUntil   
    Das Feld priceValidUntil ist ein empfohlenes Feld. Bitte geben Sie einen Wert ein, falls verfügbar.
    warningurl   
    Das Feld url ist ein empfohlenes Feld. Bitte geben Sie einen Wert ein, falls verfügbar.
    warningaggregateRating   
    Das Feld aggregateRating ist ein empfohlenes Feld. Bitte geben Sie einen Wert ein, falls verfügbar.
    warninggtin8, gtin12, gtin13, gtin14, mpn, isbn   
    Das Feld gtin8, gtin12, gtin13, gtin14, mpn, isbn ist ein empfohlenes Feld. Bitte geben Sie einen Wert ein, falls verfügbar.
    warningreview   
    Das Feld review ist ein empfohlenes Feld. Bitte geben Sie einen Wert ein, falls verfügbar.
    warningsku   
    Das Feld sku ist ein empfohlenes Feld. Bitte geben Sie einen Wert ein, falls verfügbar.

    hpzeller

    • Experte
    • Beiträge: 3.746
    • Geschlecht:
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #28 am: 14. Dezember 2018, 19:35:36
    Hallo Heiko,

    in dem von dir geposteten Bild steht ja zu jeder Warnung "Bitte geben Sie einen Wert ein, falls verfügbar". Hättest du denn Werte die man übergeben könnte.

    Hier kannst du nachsehen was das für Werte sein sollten.
    http://schema.org/Product
    https://schema.org/Offer

    Gruss
    Hanspeter

    FräuleinGarn

    • Fördermitglied
    • Beiträge: 4.629
    Re: Der Wert für item.id muss eine gültige URL sein
    Antwort #29 am: 19. Dezember 2018, 23:04:10
    Zusätzlich kommt auch noch eine 7te Empfehlung mit der Angabe brand. Wenn man einen Hersteller angegeben hat, dann kommt es nicht. Ist also schon richtig implementiert.

    Wenn man eine Seite mit einem Artikel wählt, der eine Rezension erhalten hat, dann werden aus den 6 Empfehlungen nur noch 4. Review und aggregateRating entfallen dann. Das ist somit auch schon richtig integriert.

    gtin8, gtin12, gtin13, gtin14, mpn, isbn
    Dies wird nicht vom Shop per itemprop übergeben, egal ob man bei GTIN/EAN oder bei Hersteller Art.-Nr. (HAN/MPN): etwas eingibt. Das sollte also korrigiert/hinzugefügt werden.

    Das Feld sku könnte man durch das Shopfeld Artikel-Nr.: füllen. Die Warnung würde aber wahrscheinlich nicht erscheinen, sobald eine gtin8, gtin12, gtin13, gtin14, mpn, oder isbn übergeben wird.

    Bleiben noch 2 Meldungen. Und das sind wahrscheinlich sogar die wichtigsten:

    Für url und priceValidUntil würde es Werte geben. Url ist klar. Bei priceValidUntil ist die Frage, was sinnvoll ist. Möglichst weit in der Zukunft? Was wenn dann der Preis geändert wird vor Ablaufdatum? Wäre das wieder schlecht fürs ranking? Das sind auf jeden Fall die beiden ersten richsnippets, die für Woocommerce zb geändert wurden. siehe https://rich-snippets.io/offers-pricevaliduntil-recommended/

    Gruß Timm

    EDIT: Ich habe dafür Ticket #1565 angelegt.
    22 Antworten
    8865 Aufrufe
    13. Juli 2018, 19:43:47 von umbi
    13 Antworten
    5454 Aufrufe
    30. Januar 2015, 21:50:50 von pl1
               
    anything