Ankündigung

Einklappen
Keine Ankündigung bisher.

Checken, ob Body 2(!) Klassen hat

Einklappen

Neue Werbung 2019

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

  • Checken, ob Body 2(!) Klassen hat

    Ich muss für das Stylen meiner Seite immer die Klassen im Body berücksichtigen. Ich ergänze dann den body um eine ID, abhängig von der Klasse die er hat.

    Das mache ich so:

    PHP-Code:
    $classes get_body_class();
    if (
    in_array('parent-pageid-17',$classes) || in_array('page-id-17',$classes))  {echo ('id="ausbildung"');} 
    Das funktioniert auch super.
    Jetzt muss ich aber checken, ober der body sowohl die eine als auch die andere Klasse hat.

    Für mich wäre die logische Konsequenz das gewsesn:
    PHP-Code:
    if (in_array('class1'&&'class2',$classes)) 
    oder das:
    PHP-Code:
    if (in_array('class1','class2',$classes)) 
    Hat aber nicht funktioniert.

    Was mache ich falsch? Danke für eure Hilfe.

  • #2
    Was mache ich falsch?
    Du benutzt in_array() nicht so, wie es vorgesehen ist.

    Loesung: nicht in_array() verwenden, sondern eine eigene Funktion schreiben (z.B. mit array_intersect() & count() )

    Kommentar


    • #3
      PHP-Code:
      if ( in_array('class1'$classes) || in_array('class2'$classes) ) 
      Allerdings frage ich mich, wozu genau Du das machst. Ich vermute eher einen Designfehler, wenn man solche Konstrukte benörigt.
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        Danke für die rasche Antwort.

        Wie würde so eine Funktion in meinem Fall aussehen?

        Die Website hat 4 große Übersektionen. Je nachdem, in welcher Sektion man sich befindet (also in der Startseite der Sektion,welche mit page-id gekennzeichnet ist oder in einer Unterseite der Sektion, welche parent-page-id gekennzeichent sind), sind die Farben anders und es lädt auch eine andere Navigation.
        Ich habe dieses Konstrukt genommen. um mir meine CSS-arbeit zu erleichtern bzw alles etwas sprechender zu machen.

        Wie hättest Du es gemacht?

        Kommentar


        • #5
          Du brauchst doch nur eine Unterscheidung im Body per id, den Rest kannst du mit CSS erledigen.

          Beispiel
          Sektion 1
          HTML-Code:
          <body id="plants">
          Sektion 2
          HTML-Code:
          <body id="insects">
          Sektion 3
          HTML-Code:
          <body id="animals">
          Sektion 4
          HTML-Code:
          <body id="fische">
          Wenn du nun in jeder Sektion eine Tabelle hast, deren Hintergrundfarbe immer anders aussehen soll, dann machst du es mit CSS wie folgt.

          CSS
          Code:
          .plants  table {backgronud-color:lightgreen;}
          .insects. table {backgronud-color:lightyellow:}
          .animals table {backgronud-color:lightslategrey;}
          .fische table {backgronud-color:lightsteelblue;}
          usw.
          Schau dir im Netz mal die Selektorenarten an, die es gibt und wie man sie geschickt einsetzt.

          Kommentar


          • #6
            Zitat von Arne Drews Beitrag anzeigen
            PHP-Code:
            if ( in_array('class1'$classes) || in_array('class2'$classes) ) 
            Allerdings frage ich mich, wozu genau Du das machst. Ich vermute eher einen Designfehler, wenn man solche Konstrukte benörigt.
            Die AND-Variante könnte dann so aussehen:
            PHP-Code:
            if(count(array_intersect(['class1''class2'], $bodyClasses)) === 2){
              echo 
            'both found';

            Aber ja, klingt nach einem miesen Ansatz
            [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

            Kommentar

            Lädt...
            X