Breadcrumb Spielereien

Heute möchte ich Euch zeigen, wie man die Breadcrumb-Navigation animiert um bei langen Navigationspfaden Platz einzusparen. Für den einen mag es eine Spielerei sein, für den anderen eine Sinnvolle Erweiterung.
Demo: shop.mxperts.de
Beim Durchsehen der Most Popular jQuery Plugin bin ich zufällig auf das Plugins jBreadCrumb gestoßen. Zuerst dachte ich mir – eine nette Spielerei. Hat man nun sehr verschachtelte Artikelgruppen mit langen Bezeichnungen, ist dieses Plugin die richtige Lösung.
Die Integration beschränkt sich auf das Anpassen des Templates breadcrumbs.phtml und das Kopieren sowie Einbinden von CSS und Javascript des Plugins. Am Ende des Tutorials befinden sich alle Dateien als Download.
Umsetzung:
1. Ich habe das Template app/design/frontend/default/[Ihr Theme]/template/page/html/breadcrumbs.phtml wie folgt angepasst.
<?php if($crumbs && is_array($crumbs)): ?>
<script type="text/javascript">
jQuery(document).ready(function()
{
jQuery("#breadCrumb0").jBreadCrumb({
maxFinalElementLength: 400,
minFinalElementLength: 200,
minimumCompressionElements: 4,
endElementsToLeaveOpen: 1,
beginingElementsToLeaveOpen: 1,
minElementsToCollapse: 4,
timeExpansionAnimation: 800,
timeCompressionAnimation: 500,
timeInitialCollapse: 600,
easing: 'easeOutQuad',
overlayClass: '.chevronOverlay',
previewWidth: 8
});
jQuery("#breadCrumb0 ul").css('visibility','visible');
})
</script>
<h4 class="no-display"><?php echo $this->__("You're currently on:") ?></h4>
<div class="breadCrumbHolder module">
<div id="breadCrumb0" class="breadCrumb module">
<ul>
<?php foreach($crumbs as $_crumbName=>$_crumbInfo): ?>
<li>
<?php if($_crumbInfo['link']): ?>
<a href="<?php echo $_crumbInfo['link'] ?>" title="<?php echo $_crumbInfo['title'] ?>"><?php echo $_crumbInfo['label'] ?></a>
<?php else: ?>
<?php echo $_crumbInfo['label'] ?>
<?php endif; ?>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
<div class="chevronOverlay main">
</div>
<?php endif; ?>
Beim Aufruf von jBreadCrumb habe ich alle Parameter eingefügt. So können Sie die einzelnen Werte verändern und experimentieren.
Da ich nicht gerne direkt in das Skin (boxes.css) eingreife, gibt es eine eigene CSS-Datei (jquery.jBreadCrumb.css).
/* Breadcrumb Styles
---------------------------------------------------------------------*/
.breadCrumb
{
margin: 0 0 20px 0;
padding: 0;
float: left;
display: block;
height: 21px;
overflow: hidden;
width: 890px;
padding:5px;
border:solid 1px #dedede;
background:#fff;
}
.breadCrumb ul
{
margin: 0;
padding: 0;
height: 21px;
display: block;
visibility: hidden;
}
.breadCrumb ul li
{
display: block;
float: left;
position: relative;
height: 21px;
overflow: hidden;
line-height: 21px;
margin: 0px 6px 0px 0;
padding: 0px 10px 0px 0;
font-size: .9167em;
background: url(../images/breadcrumb/Chevron.gif) no-repeat 100% 0;
}
.breadCrumb ul li div.chevronOverlay
{
position: absolute;
right: 0;
top: 0;
z-index: 2;
}
.breadCrumb ul li span
{
display: block;
overflow: hidden;
}
.breadCrumb ul li a
{
display: block;
position: relative;
height: 21px;
line-height: 21px;
overflow: hidden;
float: left;
text-decoration: none;
}
.breadCrumb ul li.first a
{
height: 16px !important;
text-indent:-1000em;
width:16px;
padding: 0;
margin-top: 2px;
overflow: hidden;
background:url(../images/breadcrumb/IconHome.gif) no-repeat 0 0;
}
.breadCrumb ul li.first a:hover
{
background-position: 0 -16px;
}
.breadCrumb ul li.last
{
background: none;
margin-right: 0;
padding-right: 0;
}
.chevronOverlay
{
display: none;
background: url(../images/breadcrumb/ChevronOverlay.png) no-repeat 100% 0;
width: 13px;
height: 20px;
}
Für unsere neue Breadcrumb-Navigation benötigen wir noch drei Bilder.
![]()
Kopieren Sie nun alle Javascript-Datein in skin/frontend/default/[Ihre Theme]/js.
Die sind die Dateien:
- jquery.jBreadCrumb.js
falls noch nicht vorhanden auch:
- jquery.easing.1.3.js
- jquery.easing.compatibility.js
Um das Tutorial abzuschließen müssen die Javascript- und CSS-Dateien noch eingebunden werden. Öffnen Sie dazu die Datei app/design/frontend/default/default/layout/page.xml.
Innerhalb des head Blocks (nach
<action method="addItem"><type>skin_js</type><name>js/jquery.easing.1.3.js</name></action> <action method="addItem"><type>skin_js</type><name>js/jquery.easing.compatibility.js</name></action> <action method="addItem"><type>skin_js</type><name>js/jquery.jBreadCrumb.js</name></action> <action method="addItem"><type>skin_css</type><name>css/jquery.jBreadCrumb.css</name></action>
Info: Die zwei Zeilen für Easing natürlich nur, falls Sie diese noch nicht integriert wurden.
Nachdem Sie alle Files auf Ihren Webserver kopiert und den Cache im Backend von Magento aktualisiert haben, sollte die Ausgabe wie in unserem Beispielshop sein.
http://shop.mxperts.de/test/test-2-0/test-3-0/test-4-0/stempel2.html


Ich finde überhaupt nicht das es Spielerei ist!
Seit einiger Zeit suche ich für unsere Shops nach einer Alternative bzw. einem Workaround, da wir sehr lange Kategorie-Namen verwenden.
Ich kann dazu nur sagen: Die Suche hat ein Ende !!!
Vielen Dank für den Beitrag
War diese Antwort hilfreich?
LikeDislikeja, Spielerei, aber Klasse Spielerei.
War diese Antwort hilfreich?
LikeDislikeKleiner Tipp für Magento-Neulinge: Beim vorgegebenen Code für page.xml in <jBreadCrumb.css</name fehlt ein “>”.
Grüsse
Ad
Super Portal, schaue seit einigen Wochen laufend hier vorbei – Daumen hoch!
War diese Antwort hilfreich?
LikeDislikeHi Ad,
danke für den Tipp – im ZIP-Archiv ist es OK und beim Tippen hat sich wohl der Fehler eingeschlichen (ist nun korrigiert).
Danke für die Rückmeldung
Johannes Teitge
War diese Antwort hilfreich?
LikeDislikeWie immer absolut genial und ausführlichst beschrieben!
Und ich geh davon aus, dass die kleine extra css Datei Performance- und vorallem SEO-technisch nicht nachteilig ist?
War diese Antwort hilfreich?
LikeDislikeHallo nikl,
SEO-technisch sehe ich da kein Problem, denn die HTML-Elemente stehen nicht auf hidden und sind also für die Suchmaschine mit den Links sichtbar.
Gruß
Johannes Teitge
War diese Antwort hilfreich?
LikeDislikeDas ist mir jetzt erst aufgefallen. Da das Overlay Div dynamisch eingebunden wird, darf es scheinbar nicht mehr über “overlayClass:” definiert werden. Wer sich also wundert, wo dieses Div hinverschwunden ist, einfach die Zeile overlayClass: ‘.chevronOverlay’, entfernen.
War diese Antwort hilfreich?
LikeDislikeMuss den Beitrag nochmal wiederbeleben: kann hier jemand reproduzieren, dass die Breadcrumbs im IE8 sowie in Opera 10 in der Produktansicht nur das Home Icon und das Produkt selbst (also ohne Pfad dazwischen) anzeigen? In Firefox funktioniert es jedoch.
War diese Antwort hilfreich?
LikeDislike