Aktives Menüelement

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

Mon Oct 24, 2016 8:29 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: 1660
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Contact:

Mon Oct 24, 2016 10:06 pm

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.
Planet Bludit, Tipps, Snippets und nützliche Links. - Newsletter, Informationen zu Bludit (auf Deutsch).
AndiLeni
Ssr. Bludit
Posts: 12
Joined: Mon Oct 24, 2016 4:28 pm

Tue Oct 25, 2016 1:58 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: 1660
Joined: Sun Aug 09, 2015 5:01 pm
Location: Zurich
Contact:

Tue Oct 25, 2016 11:33 pm

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.
Planet Bludit, Tipps, Snippets und nützliche Links. - Newsletter, Informationen zu Bludit (auf Deutsch).
AndiLeni
Ssr. Bludit
Posts: 12
Joined: Mon Oct 24, 2016 4:28 pm

Wed Oct 26, 2016 1:52 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

Wed Oct 26, 2016 2:32 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

Wed Oct 26, 2016 7:33 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

Wed Oct 26, 2016 7:43 pm

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

Thu Nov 21, 2019 9:38 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
Ssr. Bludit
Posts: 15
Joined: Tue Jun 11, 2019 11:36 am

Thu Nov 21, 2019 6:39 pm

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