Ergebnis 1 bis 17 von 17

Thema: nav_defaualt.html5 Template Anpassung wird nicht übernommen

  1. #1
    Contao-Nutzer Avatar von Jonas-
    Registriert seit
    27.08.2015.
    Ort
    Hamburg
    Beiträge
    43

    Standard nav_defaualt.html5 Template Anpassung wird nicht übernommen

    Ich habe eine Navigation erstellt zu der ich jedem Link eine CSS_Klasse hinzufügen möchte. Deshalb habe ich folgende Zeile im nav_defaualt.html5 Template bearbeitet:

    PHP-Code:
          <li<?php if ($item['class']): ?> class="<?= $item['class'?>"<?php endif; ?>><a href="<?= $item['href'] ?: './' ?>" title="<?= $item['pageTitle'] ?: $item['title'?>"<?php if ($item['class']): ?> class="<?= $item['class'?> animsition-link"<?php endif; ?><?php if ($item['accesskey'] != ''): ?> accesskey="<?= $item['accesskey'?>"<?php endif; ?><?php if ($item['tabindex']): ?> tabindex="<?= $item['tabindex'?>"<?php endif; ?><?php if ($item['nofollow']): ?> rel="nofollow"<?php endif; ?><?= $item['target'?> role="menuitem"<?php if (!empty($item['subitems'])): ?> aria-haspopup="true"<?php endif; ?>><?= $item['link'?></a><?= $item['subitems'?></li>
    Das funktioniert soweit auch.
    Füge ich eine Subnavigation hinzu (Level2) und befinde mich auf dieser Ebene, setzt er die CSS-Klasse auf einmal nur noch beim ersten und letzten Hauptnavigationspunkt ein (.first und .last). Entferne ich die Unternavigation, dann passt es wieder.

    Kann man die CSS-Klasse auch noch an anderer Stelle einfügen? Es handelt sich um Page-Transitions die ich jedem Link speziell zuweisen muss.
    Geändert von Jonas- (20.11.2015 um 18:17 Uhr)

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

    Standard

    Hört sich so an wie wenn du
    PHP-Code:
    <?php if ($item['class']): ?> class="<?= $item['class'?>"<?php endif; ?>
    einfach drin gelassen hast. Du musst die Bedingung natürlich entfernen, weil du ja dann überall eine CSS Klasse hast bzw. haben möchtest.
    Zitat Zitat von Jonas- Beitrag anzeigen
    Es handelt sich um Page-Transitions die ich jedem Link speziell zuweisen muss.
    Müssen tust du das wahrscheinlich nicht, ich vermute es gibt auch andere Wege

  3. #3
    Contao-Nutzer Avatar von Jonas-
    Registriert seit
    27.08.2015.
    Ort
    Hamburg
    Beiträge
    43

    Standard

    Danke Spooky! funktioniert!

    Weißt du, wie ich speziell nur der level_2 Navigation eine CSS-Klasse hinzufügen kann?

  4. #4
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Musst du doch gar nicht. Du kannst doch die Klasse überall zuweisen, aber im CSS ausdrücklich in Kombination mit level_2 adressieren.
    Also z.B.
    PHP-Code:
    li .sonderklasse.level_2 {

    Also ohne Leerzeichen zwischen den Klassen desselben Elements.

  5. #5
    Contao-Nutzer Avatar von Jonas-
    Registriert seit
    27.08.2015.
    Ort
    Hamburg
    Beiträge
    43

    Standard

    Ja du hast recht. Das war in meinem speziellen Fall aber nicht möglich. Danke trotzdem für den Denkanstoß!

    Schönes Wochenende!

  6. #6
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Danke gleichfalls :-)

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

    Standard

    Zitat Zitat von Jonas- Beitrag anzeigen
    Danke Spooky! funktioniert!

    Weißt du, wie ich speziell nur der level_2 Navigation eine CSS-Klasse hinzufügen kann?
    PHP-Code:
    <?php if ($this->level == 'level_2' ): ?> class="myClass<?php echo $item['class'] ? : ' '.$item['class'] : '' ?>"<?php else: ?><?php if ($item['class']): ?> class="<?= $item['class'?>"<?php endif; ?>

  8. #8
    Contao-Nutzer Avatar von Jonas-
    Registriert seit
    27.08.2015.
    Ort
    Hamburg
    Beiträge
    43

    Standard

    Cool dank!

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

    Standard

    Oder noch besser: nav_default in den Originalzustand zurücksetzen und dann nach dem foreach folgendes einfügen:
    PHP-Code:
    <?php if($this->level=='level_2'$item['class'].= ($item['class']?' ':'').'myClass'?>

  10. #10
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Müsste der Code nicht am Anfang (innerhalb) der foreach-Schleife stehen? Bei mir hat es nur so funktioniert!
    Ist es irgenwie möglich, dass "myClass" vor den restlichen Klassen ausgegeben wird?

    Gruss, Luminanz

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

    Standard

    Zitat Zitat von Luminanz Beitrag anzeigen
    Müsste der Code nicht am Anfang (innerhalb) der foreach-Schleife stehen? Bei mir hat es nur so funktioniert!
    Ja, ich meinte mit nach foreach "nach der foreach(…): Anweisung", nicht nach dem endforeach.


    Zitat Zitat von Luminanz Beitrag anzeigen
    Ist es irgenwie möglich, dass "myClass" vor den restlichen Klassen ausgegeben wird?
    Warum willst du das? Die Reihenfolge der CSS Klassen spielt ja keine Rolle. Und natürlich geht das .
    PHP-Code:
    <?php if($this->level=='level_2'$item['class'] = 'myClass'.($item['class']?' '.$item['class']:''); ?>

  12. #12
    Contao-Fan Avatar von Contao-Academy
    Registriert seit
    09.04.2011.
    Ort
    Kempten
    Beiträge
    292
    Partner-ID
    10079
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Eine Alternative ohne Template-Anpassung wäre sonst noch die CSS-Klasse direkt den betreffenden Seiten zuzuweisen.

    Die Klasse wird sowohl in der Navigation als auch im <body>-Tag verwendet.

  13. #13
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Hallo spooky

    Danke für die rasche Rückmeldung.

    Ja, ich meinte mit nach foreach "nach der foreach(…): Anweisung", nicht nach dem endforeach.
    Tut mir leid, mein Fehler

    Warum willst du das? Die Reihenfolge der CSS Klassen spielt ja keine Rolle.
    Da bei der Animation noch Fehler auftraten, habe ich vermutet, dass es an der Reihenfolge der Klassen liegt. Wie du aber schon weisst spielt dies keine Rolle. Der Fehler liegt vermutlich darin, dass die Klasse nicht nur dem Link-Element, sondern auch dem Listen-Element vergeben wird.

    Ich werde noch etwas weiter testen...

    Gruss, Luminanz

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

    Standard

    Zitat Zitat von Luminanz Beitrag anzeigen
    Da bei der Animation noch Fehler auftraten, habe ich vermutet, dass es an der Reihenfolge der Klassen liegt. Wie du aber schon weisst spielt dies keine Rolle. Der Fehler liegt vermutlich darin, dass die Klasse nicht nur dem Link-Element, sondern auch dem Listen-Element vergeben wird.

    Ich werde noch etwas weiter testen...

    Gruss, Luminanz
    Ok ja, dann musst du es doch so machen wie ganz am Anfang beschrieben (also nicht einfach nur die class generell setzen). Aber wäre es nicht viel einfacher das JavaScript zu ändern? Was genau benutzt du?

  15. #15
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Hallo Fenepedia

    Danke für deinen Beitrag

    Die Klasse wird sowohl in der Navigation als auch im <body>-Tag verwendet.
    Die bei der Seite definierte Klasse wird in der Navigation dem Listen-Element zugeordnet. Für die betreffende Anwendung (animsition) muss die Klasse aber dem Link-Element zugewiesen werden.

    Gruss, Luminanz

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

    Standard

    Mach es doch einfach mit
    PHP-Code:
    $("body").animsition({
      

      linkElement
    '#mainNav ul.level_2 > li > a',
    }); 
    anstatt CSS Klassen hinzuzufügen.

  17. #17
    Contao-Nutzer Avatar von Luminanz
    Registriert seit
    02.02.2011.
    Beiträge
    198

    Standard

    Ich ging davon aus, dass das script eine spezifische Klasse benötigt

    Danke für diese elegante Lösung

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
  •