Ankündigung

Einklappen
Keine Ankündigung bisher.

Zahl Hochzählen und Listen-Elementen zuweisen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zahl Hochzählen und Listen-Elementen zuweisen

    Hallo liebe Gemeinde,

    ich bin noch recht am Anfang mit meinen PHP Kenntnissen und stehe gerade vor einer unlösbaren Aufgabe.

    Ich habe eine fertig gerenderte Liste:

    HTML-Code:
    <ul>
    <li> ... <meta content="" /></li>
    <li> ... <meta content="" /></li>
    <li> ... <meta content="" /></li>
    </ul>
    und möchte das in der Ausgabe erreichen:

    HTML-Code:
    <ul>
    <li> ... <meta content="1" /></li>
    <li> ... <meta content="2" /></li>
    <li> ... <meta content="3" /></li>
    </ul>
    Ich kann das aber weder mit einer Schleife oder über ein Array lösen, da der Inhalt im PHP nicht so ausgegeben wird. Also nehme ich an, dass man dies nur noch über das auslesen von HTML machen könnte.
    Leider waren aber alle Versuche ohne Erfolg.

    Hat jemand von euch eine Idee?

  • #2
    <meta> tags always go inside the <head> element.
    Mal abgesehen davon, dass Du meta tags in Listenelementen unterbringen willst, fehlt Deiner Beschreibung irgend etwas.

    Per PHP kannst Du doch HTML dynamisch gestalten. Das ist ja die eigentliche Aufgabe von PHP.

    Wenn es denn schon fertig gerendert ist, kann man die Elemente per Javascript manipulieren.

    Also, was hast Du denn schon versucht, was erwartest Du und was kommt stattdessen dabei raus.
    [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

    Kommentar


    • #3
      Also ein Meta Tag in einem LI ist nichts ungewöhnliches und von Google für strukturierte Daten sogar so vorgegeben.
      Siehe hier https://developers.google.com/search...es/breadcrumbs unter den Microdata Beispielen:

      Mit Javascript ist das wirklich einfacher und es funktioniert auch wunderbar:

      HTML-Code:
          if ( $('.breadcrumb li:nth-child(1)') ) {
              $('.breadcrumb li:nth-child(1) meta').attr('content', '1');
          } 
          if ( $('.breadcrumb li:nth-child(2) meta') ) {
              $('.breadcrumb li:nth-child(2) meta').attr('content', '2');
          }
          if ( $('.breadcrumb li:nth-child(3) meta') ) {
              $('.breadcrumb li:nth-child(3) meta').attr('content', '3');
          }
          if ( $('.breadcrumb li:nth-child(4) meta') ) {
              $('.breadcrumb li:nth-child(4) meta').attr('content', '4');
          }
      Aber rein aus Neugier, kann ich sowas auch mit PHP erreichen? Das ganze zusammengesetzte Breadcrumb sieht in PHP so aus.

      HTML-Code:
      function breadcrumb(  ) {
      
              $currentBefore = '<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="current">';
              $currentAfter = '<meta itemprop="position" content="1" /></li>';
      
              if ( !is_home() && !is_front_page() || is_paged() ) {
                  echo '<ol>';
      
                  echo '<li> ... <meta itemprop="position" content="1" /></li>';
      
                  if ( is_category() ) {
                      ...
      
                      if (...) {
                          ...
                      } elseif ( is_day() ) {
                          echo '<li> ... <meta itemprop="position" content="1" /></li>';
                          echo '<li> ... <meta itemprop="position" content="1" /></li>';
                      } elseif ( is_month() ) {
                          echo '<li> ... <meta itemprop="position" content="1" /></li>';
                      } elseif ( is_year() ) {
                          ...
                      } 
                 elseif ( is_single() && !is_attachment() ) {
                      echo $currentBefore ... $currentAfter';
                 }
                 elseif ( is_page() ) {
                       echo '<li> ... <meta itemprop="position" content="1" /></li>';
                 }
      
                ... u.s.w.

      Kommentar


      • #4
        Du darfst wohl jedem Element ein itemprop ergänzen ( https://developer.mozilla.org/de/doc...butes/itemprop ), aber ein meta-Element innerhalb eines <li> ist aber nicht erlaubt. http://w3c.github.io/html/single-pag...e-meta-element
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Ja merkwürdig.

          Direkt von Google vorgegeben ist das Markup folgendermaßen:

          HTML-Code:
          <ol itemscope itemtype="http://schema.org/BreadcrumbList">
            <li itemprop="itemListElement" itemscope
                itemtype="http://schema.org/ListItem">
              <a itemscope itemtype="http://schema.org/Thing"
                 itemprop="item" href="https://example.com/books">
                  <span itemprop="name">Books</span>
                  <img itemprop="image" src="http://example.com/images/icon-bookicon.png" alt="Books"/></a>
              <meta itemprop="position" content="1" />
            </li><li itemprop="itemListElement" itemscope
                itemtype="http://schema.org/ListItem">
              <a itemscope itemtype="http://schema.org/Thing"
                 itemprop="item" href="https://example.com/books/sciencefiction">
                <span itemprop="name">Science Fiction</span>
                <img itemprop="image" src="http://example.com/images/icon-science-fiction.png" alt="Genre: Science Fiction"/></a>
              <meta itemprop="position" content="2" />
            </li><li itemprop="itemListElement" itemscope
                itemtype="http://schema.org/ListItem">
              <a itemscope itemtype="http://schema.org/Thing"
                 itemprop="item" href="https://example.com/books/sciencefiction/ancillaryjustice">
                <span itemprop="name">Ancillary Justice</span>
                <img itemprop="image" src="http://example.com/images/cover-ancillary-justice.png" alt="Ancillary Justice"/></a>
              <meta itemprop="position" content="3" />
            </li>
          </ol>

          Kommentar


          • #6
            Und eigentlich komplett unnötig. Die Position ergibt sich ja aus der Reihenfolge.

            Wozu soll das gut sein, was du da machst?

            Kommentar


            • #7
              Ich mache das damit Google die strukturierten Daten des Breadcrumbs verwenden kann.

              Auch hier ist es leider so vorgegeben http://schema.org/BreadcrumbList (siehe Reiter Microdata).

              Das W3C Konformität nicht immer einhergeht mit anderen Markups, ist glaube ich nicht ungewöhnlich.

              Kommentar


              • #8
                Zitat von Wootimes Beitrag anzeigen
                Ich mache das damit Google die strukturierten Daten des Breadcrumbs verwenden kann.
                Google kann das immer verwenden, auch wenn das nur Markup ist.

                Zitat von Wootimes Beitrag anzeigen
                Auch hier ist es leider so vorgegeben http://schema.org/BreadcrumbList (siehe Reiter Microdata).
                Kenne ich alles noch aus den Anfängen als es damit anfing. Hintergrund ist Strukturierte Daten den Bots zu geben, damit sie nicht lange rumraten müssen wo denn nun die Adresse und Telefonnummer zu finden ist.

                Ich halte nichts davon. Nach dem Motto sollen sie doch suchen, die Bots der Suchmaschinen.
                Und weiters, es bläht den Code so weit auf, das es schon fasst im Widerspruch zu Googles Speedtest-Spielregeln steht.

                Zitat von Wootimes Beitrag anzeigen
                Das W3C Konformität nicht immer einhergeht mit anderen Markups, ist glaube ich nicht ungewöhnlich.
                Das wohl nicht, aber überlege mal. Was ist dir wichtiger?
                Eine schnelle Auswertung deiner Seite durch die Bots oder Konformität zum W3C das ja die Vorgaben für die Browserhersteller darstellt.



                Kommentar


                • #9
                  Ja ich weiß, leider stehen hier einige Dinge im Widerspruch. Aber man hört immer wieder davon das aus SEO-Sicht, die strukturierten Daten sehr zu empfehlen sind. Schon allein, wenn man bspw. eine Rezeptseite betreibt, können so Bilder direkt in die Suchergebnisse transportiert werden. Es macht den Eintrag deutlich auffälliger als alle anderen. Ich finde den Ansatz und das Resultat gut.

                  Dennoch gebe ich Dir mit dem aufblähen des Codes absolut recht. Es ist nicht schön und recht nervig mit diesen ganzen Microdaten.

                  Kommentar


                  • #10
                    Zitat von Wootimes Beitrag anzeigen
                    Schon allein, wenn man bspw. eine Rezeptseite betreibt, können so Bilder direkt in die Suchergebnisse transportiert werden. Es macht den Eintrag deutlich auffälliger als alle anderen. Ich finde den Ansatz und das Resultat gut.
                    Hast du ein Beispiel zur Hand(aus den Googleergebnissen) wo man das sehen kann, was du meinst.

                    EDIT: Habe es gefunden was du meinst, es steht als Beispiel hier https://developers.google.com/search...-types/recipes

                    Kommentar


                    • #11
                      Sieht so aus, als sei nur noch diese Frage unbeantwortet:
                      Aber rein aus Neugier, kann ich sowas auch mit PHP erreichen? Das ganze zusammengesetzte Breadcrumb sieht in PHP so aus.
                      Allerdings ist mir nicht ganz klar, wo da jetzt die Herausforderung liegt. Geht es hier nicht schlicht um Codewiederholung mit einem anderen Zähler, was man ja typischerweise mit einer Schleife und einem Zähler++ macht?
                      [B]Es ist schon alles gesagt. Nur noch nicht von allen.[/B]

                      Kommentar


                      • #12
                        Zitat von protestix Beitrag anzeigen
                        EDIT: Habe es gefunden was du meinst, es steht als Beispiel hier https://developers.google.com/search...-types/recipes
                        Von einem meta-Tag ist da aber (auch) nichts zu sehen?
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          PHP-Code:
                          $liste = ['ene','mene','muh'];
                          $template '<meta content="{hier_rein}" />';
                          $ausgabe ='';

                          for ( 
                          $i count$liste ) > $i $i++ )
                          {
                              
                          $ausgabe .= str_replace'{hier_rein}'$liste[$i] , $template )    ;
                          }

                          echo 
                          $ausgabe
                          bitcoin.de <- Meine Freelancerwährung

                          Kommentar


                          • #14
                            Zitat von Wootimes Beitrag anzeigen
                            Ich mache das damit Google die strukturierten Daten des Breadcrumbs verwenden kann.
                            Lesematerial:

                            https://css-tricks.com/markup-for-breadcrumbs/
                            https://coderwall.com/p/p0nvjw/creat...tml5-microdata

                            Kommentar


                            • #15
                              hellbringer : ... actual search results is just a silly mess (the markup of Google-anything is a silly mess) ...
                              Danke, ich versuche es mit dem anderen Markup.

                              Alpha : Danke für Deine Hilfe. Wie gesagt, bin ich mit PHP noch am Anfang. Aber Deine Lösung sieht gut aus. Ich werde das ebenfalls mal testen. Sowas kann man ja immer mal gut benötigen.

                              Kommentar

                              Lädt...
                              X