Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: nav_default.html5 Abfrage der class und neue class hinzufügen

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

    Support Contao

    Standard nav_default.html5 Abfrage der class und neue class hinzufügen

    Hallo,

    ich benötige eine zusätzliche class, wenn die <li> die class 'submenu' enthält.

    die Core-Zeile
    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="navbar-item <?= $item['class'?>"<?php endif; ?><?php if ('' !== $item['accesskey']): ?> accesskey="<?= $item['accesskey'?>"<?php endif; ?><?php if ($item['tabindex']): ?> tabindex="<?= $item['tabindex'?>"<?php endif; ?><?= $item['target'?><?= $item['rel'?><?php if (!empty($item['subitems'])): ?> aria-haspopup="true"<?php endif; ?> itemprop="url"><span itemprop="name"><?= $item['link'?></span></a><?= $item['subitems'?></li>
    nun hätte ich $item['class'] abgefragt, ob sich darin 'submenu' befindet und falls JA, dann kommt eine Klasse dazu.
    PHP-Code:
    <li<?php if ($item['class']): ?> class="<?= $item['class'?> <?php if(strpos($item['class'],'submenu') == true): ?>meine_zusatzclass<?php endif ?> "...
    Das klappt aber so nicht - es befinden sich immer zwei Klassen drinnen » 'submenu trial' oder 'submenu sibling'

    Kann mir jemand weiterhelfen, wie die Abfrage korrekt aussehen müsste, damit aus der Zeichenkette nur 'submenu' ausgelesen wird?
    Grüsse
    Bernhard


  2. #2
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Ich mach das immer mit PHP strstr(). Ist aber nicht ganz sooooo elegant. Funzt aber

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

    Support Contao

    Standard

    PHP-Code:
    <li<?php if ($item['class']): ?> class="<?= $item['class'?> <?php if(strstr($item['class'],'submenu') == true): ?>meine_zusatzclass<?php endif ?> "...
    hat geklappt
    Grüsse
    Bernhard


  4. #4
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Zitat Zitat von derRenner Beitrag anzeigen
    PHP-Code:
    <li<?php if ($item['class']): ?> class="<?= $item['class'?> <?php if(strpos($item['class'],'submenu') == true): ?>meine_zusatzclass<?php endif ?> "...
    strpos() "Gibt die numerische Position des ersten Vorkommens von needle innerhalb der Zeichenkette haystack zurück." und Du prüfst die Gleichheit mit true. Wenn 'submenu' am Anfang von $item['class'] steht, ist das Ergebnis von strpos() der Wert (Index) 0 und das entspricht beim Vergleich false. Du brachst also !== false, was zurückgegeben wird, wenn der Suchstring nicht vorkommt.

    Unabhängig davon: wieso schreibst Du Dein CSS nicht so, daß es .submenu verwendet und nicht .meine_zusatzclass benötigt?
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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

    Support Contao

    Standard

    Danke für die Erklärung!

    klappt somit auch mit strpos()
    PHP-Code:
    <li<?php if ($item['class']): ?> class="<?= $item['class'?> <?php if(strpos($item['class'],'submenu') !== false): ?>meine_zusatzclass<?php endif ?> "
    Unabhängig davon: wieso schreibst Du Dein CSS nicht so, daß es .submenu verwendet und nicht .meine_zusatzclass benötigt?
    Ich binde hier in einem Versuchsprojekt das framework Bulma ein und versuche so wenig wie möglich das Bulma-CSS anzupassen oder via custom.css zu überschreiben. Gleiches versuche ich bei den Core-templates.
    Die class 'submenu' wird im nav_default.html5 erzeugt und ist nicht blank vorhanden - darum muss ich "abfragen".
    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
  •