Aktives Menüelement

AndiLeni
Ssr. Bludit
Posts: 12
Joined: Mon Oct 24, 2016 4:28 pm

Hallo,
gibt es eine Möglichkeit das aktive Menüelement mit der Klasse 'active' zu versehen?
Ich möchte also, dass die Seite auf der ich mich gerade befinde im Menü diese Klasse zugewiesen bekommt.
User avatar
Edi
Site Admin
Posts: 3120
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Has thanked: 54 times
Been thanked: 77 times
Contact:

Beispiele dafür enthält das Plugin "Menü aller Seiten".

Als Klasse für einen aktiven Hauptmenüpunkt beispielsweise wird definiert:

Code: Select all

$html .= '<a class="parent'.( ($parent->key()==$Url->slug())?' active':'').'" href="'.$parent->permalink().'">'.$parent->title().'</a>';
Als Klasse wird bei einem aktiven Hauptmenüpunkt also die Klasse "active" mit (($parent->key()==$Url->slug())?' active':'') hinzugefügt.
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
AndiLeni
Ssr. Bludit
Posts: 12
Joined: Mon Oct 24, 2016 4:28 pm

Wo genau muss ich diesen Code nun in meiner Navigation einsetzen?

Code: Select all

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">
            <?php
                $parents = $pagesParents[NO_PARENT_CHAR];
                foreach($parents as $Parent) {
                    echo '<li><a href="'.$Parent->permalink().'">'.$Parent->title().'</a></li>';
                }
            ?>
            </ul>
        </div>
User avatar
Edi
Site Admin
Posts: 3120
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Has thanked: 54 times
Been thanked: 77 times
Contact:

Versuche es einmal so:

Code: Select all

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">
            <?php
                $parents = $pagesParents[NO_PARENT_CHAR];
                foreach($parents as $Parent) {
                    echo '<li><a class="parent'.( ($parent->key()==$Url->slug())?' active':'').'" href="'.$parent->permalink().'">'.$parent->title().'</a></li>';
                }
            ?>
            </ul>
        </div>
Und nicht vergessen, im CSS die Klasse "active" zu definieren.
Clickwork - Websites mit Bludit | Planet Bludit - Tipps und Snippets
AndiLeni
Ssr. Bludit
Posts: 12
Joined: Mon Oct 24, 2016 4:28 pm

Ich habe den Code so eingesetzt. Merkwürdigerweise erhalte ich den Error, dass 'parent' nicht definiert ist. Eigentlich verwende ich diese doch bereits?

Notice: Undefined variable: parent in C:\MAMP\htdocs\bludit\bl-themes\cleanblog2\php\navbar.php on line 21

Fatal error: Uncaught Error: Call to a member function key() on null
kwwd
Sr. Bludit
Posts: 33
Joined: Thu Oct 20, 2016 5:56 pm

moin,

da steht doch auch $Parent im Schleifenkopf und nicht $parent ...
AndiLeni
Ssr. Bludit
Posts: 12
Joined: Mon Oct 24, 2016 4:28 pm

Puh. Da hast du Recht. Das habe ich übersehen. :roll:
Das beseitigt den Error.
Vielen Dank
kwwd
Sr. Bludit
Posts: 33
Joined: Thu Oct 20, 2016 5:56 pm

;)
User avatar
planlos
Jr. Bludit
Posts: 3
Joined: Thu Nov 21, 2019 9:31 am

Hallo liebe Community!
Verzeihung das ich diesen alten Topic wieder hochhole. In der Version 3.10.0 ist der beschriebene Codeschnippsel nicht mehr zu finden. Ich selbst, bin leider nicht befähigt, das in die neue Version zu übersetzen.
Mag mir da jemand helfen?

Viele Grüße
planlos
kohbarg
Sr. Bludit
Posts: 33
Joined: Tue Jun 11, 2019 11:36 am
Has thanked: 2 times
Been thanked: 2 times

Eine Möglichkeit: Such dir in deinem Theme im Ordner /php die navbar.php.
Dort findest du meist:

Code: Select all

<!-- Static pages -->
<?php foreach ($staticContent as $staticPage): ?>
	<li class="nav-item">
 		<a class="nav-link " href="<?php echo $staticPage->permalink(); ?>"><?php echo $staticPage->title(); ?></a>
	</li>
<?php endforeach ?>
Das ergänzt du dann zB. zu diesem Code:

Code: Select all

<!-- Static pages -->
<?php foreach ($staticContent as $staticPage): ?>
	<li class="nav-item">
           <?php $active = ($staticPage->key() == $url->slug())? 'active': ''; ?> 
            <a class="nav-link <?php echo $active; ?>" href="<?php echo $staticPage->permalink(); ?>"><?php echo $staticPage->title(); ?></a>
				</li>
				<?php endforeach ?>
Immer wenn der pageKey mit dem urlSlug übereinstimmt, wird der nav-link-Klasse eine active-Klasse hinzugefügt. So mach ich das bei mir. Die active-Klasse kannst du dann nach Wunsch mit css stylen.
Post Reply