Contao-Camp 2024
Ergebnis 1 bis 13 von 13

Thema: SchemaOrg - Feld "eventAttendanceMode" fehlt

  1. #1
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard SchemaOrg - Feld "eventAttendanceMode" fehlt

    Hallo,

    Google Console meckert in Terminkalendern: Feld "eventAttendanceMode" fehlt.

    Zur Auswahl stehen hier für diesen Eintrag:
    "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
    OfflineEventAttendanceMode
    OnlineEventAttendanceMode
    MixedEventAttendanceMode

    Jetzt ist meine Frage, wie müsste ich mein template event_full_meintemplate.html5 anpassen, damit ich diesen Eintrag mit reinbekomme?

    Mein Plan wäre folgender:
    - Backend Event DCA um eine Auswahl für 'online', 'offline', 'mixed' erweitern (field hasAttendance)
    - template erweitern mit z.b.


    PHP-Code:
    $schemaOrg $this->getSchemaOrgData();

    if (
    $this->hasDetails()) {
        
    $schemaOrg['description'] = $this->rawHtmlToPlainText($this->details);
    }
    if (
    $this->hasAttendance()) {
      
    $schemaOrg['eventAttendanceMode' 'https://schema.org/' $this->hasAttendance;
    }

    $this->addSchemaOrg($schemaOrg); 
    Wäre das der korrekte Weg?
    Oder gibt es in diese Richtung einfache oder bereits andere Lösungen?
    Grüsse
    Bernhard


  2. #2
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    nein, klappt so nicht - da fehlt wohl Properties dazu im Core 'eventAttendanceMode'

    syntax error, unexpected identifier " "
    Grüsse
    Bernhard


  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Du hast einen PHP Syntax Fehler. Statt
    PHP-Code:
    $schemaOrg['eventAttendanceMode' 'https://schema.org/' $this->hasAttendance
    müsstest du
    PHP-Code:
    $schemaOrg['eventAttendanceMode'] = 'https://schema.org/' $this->hasAttendance
    schreiben. Ob das jetzt im Sinne deiner Problematik aber generell die richtige Lösung ist, weiß ich nicht (vermutlich nicht, weil du musst ja für dieses neue Objekt auch noch die Daten liefern).
    » sponsor me via GitHub or PayPal or Revolut

  4. #4
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Den Syntaxfehler hatte ich bereits bemerkt und angepasst - die Fehlermeldung bleibt

    Ich vermute, dass hier im Core im Model 'eventAttendanceMode' nicht bekannt ist, oder?
    Kann dies im Core ergänzt werden? Oder wie wäre hierzu das weitere Vorgehen? FeatureRequest auf github?

    Ich vermute mal, dass ich nicht der Einzige bin, dem das Google höflich mitteilt
    Grüsse
    Bernhard


  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Verstehe nicht was du meinst, was genau muss hier im Core unterstützt werden? Grundsätzlich kannst du beliebige Schema Daten ausgeben lassen.
    » sponsor me via GitHub or PayPal or Revolut

  6. #6
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    OK
    und wie müsste ich das dann korrekt in mein Template einfügen?
    Grüsse
    Bernhard


  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Poste mal einen Link zur Seite wie es jetzt aussieht.
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao
    Grüsse
    Bernhard


  9. #9
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Hm, da wird eventAttendanceMode aber jetzt gar nicht ausgegeben?
    » sponsor me via GitHub or PayPal or Revolut

  10. #10
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    ja, weil das erstellte Template eben den Fehler auswirft und deshalb ist's hier noch nicht verbaut
    Grüsse
    Bernhard


  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.883
    Partner-ID
    10107

    Standard

    Achso, ich dachte den Fehler hast du behoben. Welcher Fehler tritt denn nun auf? Poste ggf. auch den Stack Trace.
    » sponsor me via GitHub or PayPal or Revolut

  12. #12
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zur Zeit lokal via Laragon
    Und es wirft heute einen anderen Fehler aus, als gestern

    Feld in der tl_calendar_events.php
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['schemaOrgAttendanceMode'] = [
        
    'label'                      => &$GLOBALS['TL_LANG']['tl_calendar_events']['schemaOrgAttendanceMode'],
        
    'exclude'                 => true,
        
    'search'                  => true,
        
    'inputType'               => 'select',
        
    'options'                  => ['OfflineEventAttendanceMode''OnlineEventAttendanceMode''MixedEventAttendanceMode'],
        
    'reference'               => &$GLOBALS['TL_LANG']['tl_calendar_events']['schemaOrgAttendanceModeOptions'],
        
    'default'                  => 'OfflineEventAttendanceMode',
        
    'eval'                    => ['tl_class'=>'w50'],
        
    'sql'                     => "varchar(64) NOT NULL default 'OfflineEventAttendanceMode'"
    ]; 
    Das Feld wird nur im Backend ausgewählt und wird im Frontend nicht ausgegeben.

    Frontend-Template event_organisation.html5
    PHP-Code:
    <div>...</div>
    <?php

    //dump($this->schemaOrgAttendanceMode);

    $schemaOrg $this->getSchemaOrgData();

    if (
    $this->hasDetails()) {
        
    $schemaOrg['description'] = $this->rawHtmlToPlainText($this->details);
    }
    if (
    $this->schemaOrgAttendanceMode()) {
      
    $schemaOrg['eventAttendanceMode'] = 'https://schema.org' $this->schemaOrgAttendanceMode;
    }

    $this->addSchemaOrg($schemaOrg);
    Stack Trace
    PHP-Code:
    InvalidArgumentException:
    schemaOrgAttendanceMode is not set or not a callable

      
    at C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\library\Contao\Template.php:174
      at Contao
    \Template->__call('schemaOrgAttendanceMode', array())
         (
    C:\laragon\www\hornistvorn\templates\layout\event_organisation.html5:109)
      
    at include('C:\\laragon\\www\\hornistvorn\\templates\\layout\\event_organisation.html5')
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\library\Contao\TemplateInheritance.php:108)
      
    at Contao\Template->inherit()
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\library\Contao\Template.php:295)
      
    at Contao\Template->parse()
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\classes\FrontendTemplate.php:43)
      
    at Contao\FrontendTemplate->parse()
         (
    C:\laragon\www\hornistvorn\vendor\contao\calendar-bundle\src\Resources\contao\modules\ModuleEventReader.php:436)
      
    at Contao\ModuleEventReader->compile()
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\modules\Module.php:214)
      
    at Contao\Module->generate()
         (
    C:\laragon\www\hornistvorn\vendor\contao\calendar-bundle\src\Resources\contao\modules\ModuleEventReader.php:76)
      
    at Contao\ModuleEventReader->generate()
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\elements\ContentModule.php:98)
      
    at Contao\ContentModule->generate()
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\library\Contao\Controller.php:616)
      
    at Contao\Controller::getContentElement(object(ContentModel), 'main')
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\modules\ModuleArticle.php:197)
      
    at Contao\ModuleArticle->compile()
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\modules\Module.php:214)
      
    at Contao\Module->generate()
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\modules\ModuleArticle.php:70)
      
    at Contao\ModuleArticle->generate(false)
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\library\Contao\Controller.php:544)
      
    at Contao\Controller::getArticle(object(ArticleModel), falsefalse'main')
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\library\Contao\Controller.php:386)
      
    at Contao\Controller::getFrontendModule('0''main')
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\pages\PageRegular.php:190)
      
    at Contao\PageRegular->prepare(object(PageModel))
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\pages\PageRegular.php:60)
      
    at Contao\PageRegular->getResponse(object(PageModel), true)
         (
    C:\laragon\www\hornistvorn\vendor\contao\core-bundle\src\Resources\contao\controllers\FrontendIndex.php:320)
      
    at Contao\FrontendIndex->renderPage(object(PageModel))
         (
    C:\laragon\www\hornistvorn\vendor\symfony\http-kernel\HttpKernel.php:163)
      
    at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
         (
    C:\laragon\www\hornistvorn\vendor\symfony\http-kernel\HttpKernel.php:75)
      
    at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1true)
         (
    C:\laragon\www\hornistvorn\vendor\symfony\http-kernel\Kernel.php:202)
      
    at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
         (
    C:\laragon\www\hornistvorn\public\index.php:44
    Grüsse
    Bernhard


  13. #13
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.849
    Contao-Projekt unterstützen

    Support Contao

    Standard

    ich denke, ich habe den Fehler gefunden: die 'Doppelklammer' bei $this->schemaOrgAttendanceMode musste raus.

    PHP-Code:
    <?php

    $schemaOrg 
    $this->getSchemaOrgData();

    if (
    $this->hasDetails()) {
        
    $schemaOrg['description'] = $this->rawHtmlToPlainText($this->details);
    }
    if (
    $this->schemaOrgAttendanceMode) {
      
    $schemaOrg['eventAttendanceMode'] = 'https://schema.org/' $this->schemaOrgAttendanceMode;
    }

    $this->addSchemaOrg($schemaOrg);
    Als Ergebnis bekomme ich nun im Frontend:
    PHP-Code:
    [
        {
            
    "@context""https:\/\/schema.org",
            
    "@graph": [
                {
                    
    "@type""WebPage"
                
    },
                {
                    
    "@id""#\/schema\/events\/1610",
                    
    "@type""Event",
                    
    "description""<p>Blutspendetermin für den Bezirk Horn<br><strong>Blutspenden in Eggenburg<\/strong><br>Bitte um Verständnis, dass die Annahme zur Blutspende spätestens bis 30 Minuten vor Ende der Blutspendeaktion erfolgen kann.<br>Änderungen vorbehalten! Aktuelle Termine und Änderungen finden Sie unter: www.blut.at oder 0800 190 190<br><br><strong>Sonntag, 27.11.2022<br><\/strong>09:00 bis 12:00<br>13:00 bis 15:00<\/p>",
                    
    "eventAttendanceMode""https:\/\/schema.org\/OfflineEventAttendanceMode",
                    
    "image": {
                        
    "@id""#\/schema\/image\/e3eaa367-323e-11ec-9415-76968b185605",
                        
    "@type""ImageObject",
                        
    "contentUrl""assets\/images\/9\/blutspenden-gib-dein-bestes-c77105f3.jpg",
                        
    "name""Blutspendeaktion Eggenburg"
                    
    },
                    
    "location": {
                        
    "@type""Place",
                        
    "address": {
                            
    "@type""PostalAddress",
                            
    "description""Mozartstrasse 10, 3730 Eggenburg"
                        
    },
                        
    "name""Musikmittelschule Eggenburg"
                    
    },
                    
    "name""Blutspendeaktion Eggenburg",
                    
    "startDate""2022-11-27",
                    
    "url""event-detail\/blutspendeaktion-eggenburg-27-11-2022.html"
                
    }
            ]
        },
        {
            
    "@context""https:\/\/schema.contao.org",
            
    "@graph": [
                {
                    
    "@type""Page",
                    
    "fePreview"false,
                    
    "groups": [],
                    
    "noSearch"false,
                    
    "pageId"21,
                    
    "protected"false,
                    
    "title""Blutspendeaktion Eggenburg"
                
    }
            ]
        }

    next step: im Echtbetrieb testen und hoffen, dass Freund Google nicht mehr meckert
    Grüsse
    Bernhard


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
  •