per function Klassen ein-/ ausblenden lassen für verschiedene Ansichten

  • Hallo liebe Gemeinde,

    wieder einmal die Katharina.

    Folgendes: Ich nutze ein Umfragen PlugIn welches in der Sidebar angezeigt wird. Das Layout wurde per css an das theme angepasst und alles ist schön und funktioniert.

    Problem: Ich möchte ein Umfragenarchiv anlegen was alle Umfragen darstellt. Ich möchte nur nicht das alle Umfragen so formatiert sind wie in der Sidebar, sprich mit Bildchen, Linien etc. Das PlugIn ist in 3 Bereiche aufgebaut. Header/Body/Footer. Im Header ist ein Bildchen, im Body der Inhalt und im Footer die Buttons.

    Nun will ich aber nicht das in dem Archiv das gleiche "lang gezogene" Layout angezeigt und schon gar nicht die Bildchen im Header da es sonst das Archiv visuell "überlädt".

    Jetzt habe ich die drei Bereiche vom PlugIn jeweils mit einer zweiten identischen Klasse versehen die lediglich den Zusatz "-a" für Archiv am Ende hat

    HTML
    <ul class="poll poll-a">

    und diese neuen CSS-Regeln nach Bedarf formatiert wie ich die gerne hätte im Archiv. Sprich ohne Bild, etwas kleiner in der Schrift, nicht alle Buttons etc..

    [COLOR=#ff0000]Nun das eigentliche Problem.[/COLOR]

    Wie kann ich per function eine Zuweisung machen das die Klassen mit dem Zusatz "-a" z.Bsp. poll-a li für Poll-Listenansicht der Fragen, nur auf der Seite der Archivseiten-ID angezeigt werden und in der Sidebar ausgeblendet werden und andersrum een das in der Sidebar nur "poll" Klassen angezeigt werden?

    Beispiel:
    Das PlugIn wird per Shortcode [poll-ID1] angesprochen, jetzt soll es auf der Archivseite (ID35) nur Klassen mit den Zusatz "-a" verwenden und anzeigen und in der Sidebar (global ohne ID - sprcih "sidebar") nur die normalen klassen verwenden und anzeigen.

    Ich würde es gerne mit

    PHP
    if( is_sidebar('') ) {
    echo '<div class="poll">' . get_poll('nur klasse ohne -a') . '</div>';
    if( is_page('35') ) {
    echo '<div class="poll-a">' . get_poll('nur klasse mit -a') . '</div>';
    }

    lösen, aber ich weiß nicht wie. Wie kann ich per function das bewerkstelligen das "Klasse=Poll" in der Sidebar angezeigt werden und "Klasse=Poll-a" auf der seite mit der ID35?

    Lieben Dank schon einmal und wenn etwas nicht verstanden wurde, einfach nachfragen.

    Liebe Grüße
    Katharina

    Einmal editiert, zuletzt von katharinahermann (4. Dezember 2015 um 16:57)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Das machst Du besser über spezifischere Regeln anstatt mit zusätzlichen Klassen.

    Beispiel für die Sidebar:

    Code
    .sidebar .widget .poll {
    ...
    }

    Für eine normale Seite hingegen:

    Code
    .page main .poll {
    ...
    }

    Oder ein Archiv

    Code
    .archive main .poll {
    ...
    }

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Hallo mensmaximus :),

    ich versuche das mal so hinzukommen und gebe auf alle Fälle Bescheid. Ich verstehe das so das nach "{ ..." die Pünktchen meine css-regeln für .sidebar (ohne -a) und .main (mit -a) sein sollen. Ist das richtig?

    Vielen Dank erst einmal, ich versuche es so zu lösen.
    Liebe Grüße
    Katharina

  • Wenn man Deinen ursprünglichen Gedankengang zugrundelegt ist das richtig.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • mensmaximus,

    leider funktioniert das so nicht. Ich habe es anhand eines grellen Backgroundes versucht . . .

    HTML
    .sidebar .wp-polls {background: #f00;}
    .page main .wp-polls {background: #fff;}

    aber es wird in der Seite sowie in der Sidebar der rote Hintergrund angezeigt. :( Was nun?

  • Ohne Link zu Seite kann ich das nicht sagen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Sorry, aber meine Hilfe beschränkt sich auf das öffentliche Forum.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Irgendwo ist ein Fehler. Entweder vor „main“ noch ein Punkt, wenn .main eine Klasse innerhalb eines Elements mit der Klasse .page ist.
    Probiers mal damit.

    Kann auch sein, dass die Klasse .page überflüssig ist, wenn auch die Sidebar in einem Element mit der Klasse .page steckt.

    Also probiere:

    Code
    .sidebar .wp-polls {background: #f00;} 
    .page .main .wp-polls {background: #fff;}

    Oder:

    Code
    .sidebar .wp-polls {background: #f00;} 
    .main .wp-polls {background: #fff;}

    Gruß
    helix

  • Entweder vor „main“ noch ein Punkt,

    In den meisten modernen Themes ist main keine Klasse sondern ein HTML Element (wie div, span usw.)

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Hallo helix,

    ich habe es jetzt noch einmal durchprobiert und deine vermutung war richtig. Es gibt ein Problem mit Main und Sidebar.

    Bei

    Code
    .main .wp-polls {background: #036;}


    reagiert die Sidebar ebenfalls, sollte aber nicht so sein. Das muss wohl am Theme liegen, nur finde ich nicht wo ich das ändern kann zumal ich nicht einmal weiß wo ich suchen muss. :(

    Also wäre doch das beste das über eine custom-function zu erledigen oder den Fehler im Theme zu finden so das .sidebar nicht mit .main zusammen reagiert. :(

    Liebe Grüße
    Katharina

    Einmal editiert, zuletzt von katharinahermann (4. Dezember 2015 um 23:41)

  • In den meisten modernen Themes ist main keine Klasse sondern ein HTML Element (wie div, span usw.)

    Äh ja, stimmt. Das hatte ich da gerade nicht auf dem Schirm, dass „main“ auch zu den Buchstabenkombinationen gehört, die es auch als html-Element gibt …

    Code
    .main .wp-polls {background: #036;}


    reagiert die Sidebar ebenfalls, sollte aber nicht so sein. Das muss wohl am Theme liegen, nur finde ich nicht wo ich das ändern kann zumal ich nicht einmal weiß wo ich suchen muss. :(

    Also wäre doch das beste das über eine custom-function zu erledigen oder den Fehler im Theme zu finden so das .sidebar nicht mit .main zusammen reagiert. :(

    Als „Fehler“ im Theme kannst du das eigentlich nicht bezeichnen.

    Wir können halt nur raten, wie deine Elemente ineinander verschachtelt sein könnten und welches Element wie bezeichnet ist, evtl. welche ID oder welche Klasse hat. Du hast den Quelltext vorliegen und kannst einfach nachsehen.

    Evtl. kriegst du das konkrete Problem, dass .wp-polls auf die Definition in .main ebenfalls reagiert, schon durch einfaches Umdrehen in den Griff. .main müsstest du dann auch weglassen können.

    Code
    .wp-polls {background: #fff;}
    .sidebar .wp-polls {background: #f00;}


    => Nach dem Prinzip, dass a) die nachfolgende Anweisung die Anweisung zuvor überschreibt. Und dass b) die konkretere Anweisung die allgemeinere Anweisung überschreibt.
    CSS heißt Cascading Style Sheets, weil man auf diese Art Elemente unter verschiedenen Bedingungen verschieden auszeichnen kann.

    => Heißt: Mach dir ein Schema, in welchen Elementen mit welchen IDs oder Klassen liegen deine polls, wie kannst du sie der Reihe nach ansprechen und definieren.

    Gruß
    helix

  • Allen ein liebes Danke. ich habe das Problem gelöst indem ich alle Elemente in einem separaten DIV-Container gepackt habe und diesen separat benannte per Klasse. Somit konnte ich alles extra ansprechen.

    Achso, bei meinem theme heißt die Sidebar-klasse .mh-sidebar, das war auch noch ein Problem was ich nicht sofort gesehen hatte. Ich war wohl zu lange am Monitor und der Wald war kleiner wie die bäume...:)

    Vielen lieben Dank, Thema kann geschlossen werden.

    Liebe Grüße
    Katharina

    Einmal editiert, zuletzt von katharinahermann (5. Dezember 2015 um 20:16)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!