Hallo Community, nachdem ich ein Template für den Eigenbedarf erstellt habe und auch alles wunderbar funktioniert, habe ich nun noch den Wunsch nach den Tabs auf der Produktdetail-Seite. Wenn ich den Code ändere, sodass die Tabs angezeigt werden sollten, funktioniert dies nicht (CSS-Anpassungen wurden noch nicht getätigt), allerdings werden auch keine Klassen automatisch hinzugefügt wie beispielsweise beim Emotion-Template, sodass die Tabs mit jQuery verknüpft und jeweils ein- bzw. ausgeblendet werden können. Meine Frage ist nun, was ich vergessen habe? Ich finde den Fehler nicht und hoffe jemand kann mir behilflich sein.
Dieser wiki Beitrag behandelt das Thema „Neuer Reiter auf der Detailseite“ und sollte alle deine Fragen beantworten: http://wiki.shopware.com/Neuer-Reiter-a … l_956.html Viele Grüße
Habe ich mir gedacht, wurde falsch verstanden. Ich möchte keinen neuen Tab anlegen, ich möchte generell dass die Tabs überhaupt richtig dargestellt werden. Hier mal ein Screenshot wie es bei mir aussieht: Und hier der HTML-Tree (Ausschnitt): Ich hoffe nun ist es verständlicher. Auch ist ersichtlich, dass beide ID’s (href und div) gleich sind. Gruß
Ok - das ist ja interessant… Kann man sich das Verhalten live irgendwo anschauen? Viele Grüße
Hallo, [quote=“BeFit”]Habe ich mir gedacht, wurde falsch verstanden. Ich möchte keinen neuen Tab anlegen, ich möchte generell dass die Tabs überhaupt richtig dargestellt werden.[/quote] die Tabs werden durch das jQuery-Tab-Plugin erzeugt. Der entsprechende Javascript-Abschnitt ist inline im
auf der Detailseite angegeben (s. u). Hier wird das jQuery-Plugin nicht ausgeführt. Die Darstellung entspricht dann dem “normalen” HTML-Code und ergibt das Layout des Screenshots. In den Developer Tools sollte eine Fehlermeldung in der Konsole stehen und man kann auch sehen, wo die Skriptausführung stoppt. Check zuerst, ob das Javascript vorhanden ist, wenn das Template geändert wurde. Klappt es mit dem emotion-Standard-Template? Es gibt auch noch einige ältere Threads mit diesem Problem. try { jQuery(document).ready(function($) { $.tabNavi = $('#tabs').tabs(); /\*\* \* Find the comment tab \* @ticket #5712 (intern) \* @ticket #100484 (extern) \* @author s.pohl \* @date 2011-07-27 \*/ var tabLinks = $('#tabs a'), commentTabIndex; tabLinks.each(function(i, el) { var $el = $(el); if($el.attr('href') == '#comments') { commentTabIndex = i; } }); commentTabIndex = commentTabIndex - 1; if(window.location.hash == '#bewertung') { $.tabNavi.tabs('select', commentTabIndex); } $('.write\_comment').click(function(e) { e.preventDefault(); $.tabNavi.tabs('select', commentTabIndex); }); }); } catch(err) { if(debug) console.log(err) };
Erstmal vielen Dank für die Antworten, da hätte ich auch selbst drauf kommen können… Habe soeben mal etwas rumprobiert, allerdings den Fehler nicht auf die Schnelle beheben können. Ich habe die “Boxen” Zuletzt angesehene Artikel, Ähnliche Artikel und Kunden kauften auch komplett aus dem Code entfernt, daraus folgt denke ich die Fehlermeldung: [quote]TypeError: (...).lastSeenArticlesCollector is not a function (’#detail’).lastSeenArticlesCollector({[/quote] (in der FireBug-Konsole) Jetzt habe ich diese Elemente wieder dem Code hinzugefügt, doch es hat sich nichts getan, der Fehler bleibt beständig. Kann mir da jemand behilflich sein? Ich dachte die Funktion kann nicht funktionieren weil das Element nicht im HTML-Code vorhanden ist, scheinbar ist es aber etwas anderes…
[quote=“BeFit”] [quote]TypeError: (...).lastSeenArticlesCollector is not a function (’#detail’).lastSeenArticlesCollector({[/quote] (in der FireBug-Konsole) Jetzt habe ich diese Elemente wieder dem Code hinzugefügt, doch es hat sich nichts getan, der Fehler bleibt beständig. [/quote] Der Aufruf $(’#detail’).lastSeenArticlesCollector kommt eigentlich auch aus einem inline-Skript im Head der Detailseite und hat nichts mit dem HTML-Code am Ende der Seite zu tun. Wahrscheinlich war nur dieser gelöscht, oder? Wenn die function unbekannt ist, liegt das Problem auch schon in der Ausführung von jquery.Shopware.js aus dem _default-Template. Dort wird die initialisiert. Schau doch mal in den DeveloperTools von GoogleChrome, wo nach dem Aufrufen der Detailseite die Javascript-Ausführung stoppt. Geht auch mit Firebug. Irgendwo ist ein Fehler eingebaut, der die Abarbeitung der restlichen Javascript-Anweisungen stoppt. Vielleicht auch in einem inline-Skript, dass sieht man dann in dem HTML-Source in den Developer Tools.
Okay, das scheint mir nicht so ganz ersichtlich. Laut FireBug (habe auch mit Chrome nachgeschaut) liegt der Fehler im Aufruf der Funktion im Inline-Script. Habe die entsprechenden Zeilen in meiner jquery.shopware.js gesucht, diese sind auch vorhanden, es geht trotzdem nicht. Dann habe ich einen weiteren Test gemacht und zwar das Inline-Script aus default/frontend/detail/head.tpl entfernt… der nächste jQuery Aufruf wäre dann die Sache mit den Tabs, nun kommt die gleiche Fehlermeldung im Debugger nur bezogen auf den Aufruf der Funktion für die #tabs. Dann habe ich mir gedacht, das kann ja nur an meiner jquery.shopware.js Datei liegen, habe also diese durch das Original ersetzt, aber as ändert nichts, der Fehler bleibt bestehen? Nun habe ich keinen weiteren Einfall mehr um den Fehler zu lokalisieren… Die URL zum Shop würde ich per PN versenden falls Interesse besteht. Mit freundlichen Grüßen
Hallo, ich habe mir die Seite (Link kam per PM) angesehen. Sie verwendet kein "normales „Derivat“ des emotion-Templates, sondern eine Mischung aus _default und eigenem Template. Letzteres kombiniert dann wieder emotion-Template-Code, default-Code und zusätzlichen Javascript-Programmen sowie jQuery 1.11 und weiteren Javascript-Programmen. Offensichtlich kommt es zu Konfilkten zwischen den beiden jQuery Versionen und jQuery.shopware.js (evtl. sind auch noch andere Javascripte beteiligt). Die Funktionen an denen der Browser stoppt werden dort definiert, sind aber „undefined“ zur Laufzeit der Inline-Skripte. Das zieht sich dann über lastviewcollector bis zum Tab-Plugin. Natürlich stoppt das spätestens bei den inline-Skripten, weil dort die Funktion aufgerufen wird. Eventuell hilft es, die jQuery.shopware.js direkt hinter jQuery-1.7.2 aufzurufen. Alternativ ganz auf Version 1.11 setzen und jQuery Migrate benutzen. Erfordert einigen Testaufwand. Am einfachsten wäre es aber wohl, auf jQuery 1.11 zu verzichten. Wenn die beiden Funktionsaufrufe funktionieren, könnten noch an anderer Stelle Probleme ähnlicher Art auftreten. Es ist eigentlich generell keine wirklich gute Idee, zwei verschiedene jQuery Versionen parallel zu verwenden.
Oh man darauf habe ich ja gar nicht geachtet!! Vielen Dank für die Mühe, habe jQuery 1.1 entfernt und es funktioniert nun einwandfrei.
Herzlichen Dank! Hatte genau den selben Fehler und wusste nicht wo ich mit Debuggen beginnen soll. Lag schlussendlich daran, dass ich aus versehen mein JS File falsch eingebunden habe im header.tpl. 1. Checken ob man nur 1x das jQuery Framework ladet 2. Checken ob die Reihenfolge logisch ist (z.b. zuerst Framework laden, dann die Funktionen 3. Checken ob eigene Scripts richtig funktionieren und diese wenn möglich weiter unten einbinden (Performance und Stabilität)