Contao-Camp 2024
Ergebnis 1 bis 12 von 12

Thema: RichSnippet - Für google Datum im ISO 8601 format ausgeben

  1. #1
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard RichSnippet - Für google Datum im ISO 8601 format ausgeben

    Hallo zusammen,

    ich habe das Template event_upcoming.html5 wie folgt angepasst um google strukturierte Daten (Event Name und Datum) anzugeben.

    PHP-Code:
    <div class="event layout_upcoming<?php echo $this->classUpcoming?>">
    <div itemscope itemtype="http://schema.org/Event">
    <a itemprop="url" href="<?php echo $this->href?>"><div itemprop="name"><?php echo $this->title?></div>
    </a>
    <div><meta itemprop="startDate" content="<?php echo $this->date?>"><?php echo $this->date?></div>
    </div></div>
    Im Google Test Tool für strukturierte Daten bekomme ich nun die Fehlermeldung
    Fehler: We did not accept "14.02.2015" as the start date
    Fehler: Date should be in ISO 8601 format - http://www.w3.org/TR/NOTE-datetime
    Ist es möglich das Template so anzupassen, dass für google das Datum im ISO 8601 format d.h. 2015-02-14 ausgegeben wird aber im Frontend nur das Format 14.02.2015?

    Danke für eure Hilfe.

    Grüße Marco

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.612
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Der InsertTag {{date::c}} ist Dein Freund
    siehe http://de.php.net/manual/de/function.date.php

    Edit:
    Für die Daten im upcoming-Template musst Du wahrscheinlich PHP bemühen, da aber auch die Date-Funktion mit date('c', timestamp); verwenden.
    Geändert von do_while (06.02.2015 um 22:19 Uhr)

  3. #3
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    So stimmt das Datumsformat, allerdings wird immer das aktuelle Datum ausgegeben.

    PHP-Code:
    <div class="event layout_upcoming<?php echo $this->classUpcoming?>">
    <div itemscope itemtype="http://schema.org/Event">
    <a itemprop="url" href="<?php echo $this->href?>"><div itemprop="name"><?php echo $this->title?></div>
    </a>
    <div><meta itemprop="startDate" content="<?php echo date('Y-m-d');?>"><?php echo $this->date?></div>
    </div></div>
    Wie schaffe ich es das mir hiermit:
    PHP-Code:
    <?php echo date('Y-m-d');?>
    oder
    PHP-Code:
    <?php echo date('c');?>
    das Startdatum des Events im ISO Format ausgegeben wird.

    Danke dir.

  4. #4
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    In $this->date steht wohl bereits das formatierte Datum drin, wobei die Formatierung vom Modul gemacht wurde. Für Deine selbst formatierte Ausgabe benötigst Du aber einen Timestamp. Wenn Du keinen übergibst, wird das aktuelle Datum verwendet. Deshalb bekommst Du bei Deine Versuchen immer das aktuelle Datum formatiert. An den benötigten Timestamp kommst Du, indem Du das formatierte Datum in $this->date mit zerlegst und daraus den Timestamp erzeugst.

    Es könnte auch etwas wie (hier im Bsp. mit direkt angegebenem Datum, bei Dir $this->date)

    PHP-Code:
    $a = new DateTime('08.05.2012');
    echo 
    $a->getTimestamp(); 
    aber da bin ich mir nicht sicher, woher PHP wissen soll, ob es der 8. Mai (unsere Sichtweise) oder der 5. August (USA) wäre.
    Schau Die aber sicherheitshalber mit $this->showTemplateVars(); im Template mal an, was Du alles zur Verfügung hast.

  5. #5
    Contao-Urgestein
    Registriert seit
    03.06.2010.
    Ort
    Wuppertal
    Beiträge
    2.149
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    aber da bin ich mir nicht sicher, woher PHP wissen soll, ob es der 8. Mai (unsere Sichtweise) oder der 5. August (USA) wäre.
    Schau Die aber sicherheitshalber mit $this->showTemplateVars(); im Template mal an, was Du alles zur Verfügung hast.
    Das sollte PHP bei jedem sauber konfigurierten Server wissen, denn dort wird die Zeitzone definiert und somit auch ein Datumsformat bekannt.
    Ansonsten kann man es notfalls noch erzwingen:

    PHP-Code:
    <?php
    $objDateTimeZone 
    = new DateTimeZone('Europe/Berlin');
    $objDateTime = new DateTime('08.05.2015'$objDateTimeZone);

  6. #6
    Alter Contao-Hase
    Registriert seit
    20.03.2010.
    Ort
    Hannover
    Beiträge
    1.041

    Standard

    Die Templatevariablen geben Dir eine gute Übersicht.

    Ich hab zB ein Temlate wo ich nur das Startdatum brauche, dass sich jährlich wiederholt und bediene mich

    PHP-Code:
    <?php echo date("Y-d-m"$this->begin);  ?>

  7. #7
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Zitat Zitat von Samuell Beitrag anzeigen

    PHP-Code:
    <?php echo date("Y-d-m"$this->begin);  ?>
    Genau das hab ich gesucht. Nun hat google und meine User das korrekt formatierte Datum

    Danke an alle!

    Bildschirmfoto 2015-02-07 um 10.59.25.png

  8. #8
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Der Vollständigkeit halber das kpl. event_upcoming.html5

    PHP-Code:
    <div class="event layout_upcoming<?php echo $this->classUpcoming?>">
    <div itemscope itemtype="http://schema.org/Event">
    <a itemprop="url" href="<?php echo $this->href?>"title="<?php echo $this->title?> (<?php if ($this->day): echo $this->day?><?php endif; echo $this->date; if ($this->time): ?><?php echo $this->time; endif;?>)"><div itemprop="name"><?php echo $this->title?></div>
    </a>
    <div><meta itemprop="startDate" content="<?php echo date("Y-m-d"$this->begin);  ?>"><?php echo $this->date?> <?php if ($this->time): ?>
        <span class="time">(<?php echo $this->time?> Uhr)</span></span>
      <?php endif; ?></div><div itemprop="location" itemscope itemtype="http://schema.org/EventVenue"><span itemprop="name"><?php echo $this->location?></div></span>
    </div>
    </div>

  9. #9
    Alter Contao-Hase Avatar von kischd
    Registriert seit
    25.06.2009.
    Ort
    Karlsruhe
    Beiträge
    1.106

    Standard

    Die Google Search Console hat mir heute die Info geschickt, dass die Events nicht richtig ausgegeben wird:
    Hauptfehler (maximal 5)

    Fehler können verhindern, dass Ihre Seite oder Funktion in den Suchergebnissen erscheint. Auf Ihrer Website wurden folgende Fehler gefunden:

    Kein ISO 8601-Format für Datum/Zeit in Feld "startDate"
    Feld "name" fehlt
    Feld "location" fehlt
    Ungültiger Werttyp in Feld "startDate"

    Hauptwarnungen (maximal 5)

    Warnungen sind Verbesserungsvorschläge. Einige Warnungen können Ihre Darstellung in der Google-Suche verbessern. Manche Warnungen können in Zukunft zu Fehlern werden. Auf Ihrer Website wurden folgende Warnungen gefunden:

    Feld "description" fehlt
    Feld "endDate" fehlt
    Feld "performer" fehlt
    Feld "offers" fehlt
    Feld "image" fehlt
    Passt das in dieses Thema? Muss ich das Event-Template in dieser Form anpassen?
    Der letzte Post ist auch schon über 4 Jahre her. oder gibts da schon eine STandardtemplate das ich übersehen habe?
    Gruß Mark

  10. #10
    Contao-Fan Avatar von Fachinger
    Registriert seit
    24.04.2016.
    Ort
    Limburg
    Beiträge
    308

    Standard

    Ist das ein echtes Event im Sinne von Google oder ist es "nur" ein Veranstaltungshinweis? Im letzteren Fall lohnt sich der Aufwand m. E. nicht.
    Falls es ein echtes Event ist, müssen auch alle anderen Informationen für Google definiert werden, was einen ziemlichen Aufwand bedeutet.
    Bei mir hat es sich nur um eine "interne" Veranstaltung gehandelt, weswegen ich dann den Event-Aufruf aus dem Template entfernt habe. So hatten Google und ich meine Ruhe...

    Gesendet von meinem CLT-L29 mit Tapatalk

  11. #11
    Alter Contao-Hase Avatar von kischd
    Registriert seit
    25.06.2009.
    Ort
    Karlsruhe
    Beiträge
    1.106

    Standard

    Hallo Fachinger,

    was genau muss ich dann entfernen?
    Die Termine sind für Google komplett unwichtig. Deshalb raus damit
    Gruß Mark

  12. #12
    Contao-Fan Avatar von Fachinger
    Registriert seit
    24.04.2016.
    Ort
    Limburg
    Beiträge
    308

    Standard

    Ich habe in allen event-tempaltes die ich auf der Seite ntze, also event_full.html5 und event_list.html5, alles was sich auf die schema.org bezieht rausgeschmissen.
    Also alles, was die Einträge itemtype, itemprop und itemscope betrifft.
    Wie gesagt, handelt es sich bei unseren Terminen um interne Veranstaltungen, die für Google uninteressant sind.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •