Jump to content
xt:Commerce Community Forum

Flyout Menü für Kategorien in Veyton


ringltangbob

Recommended Posts

Hallo zusammen,

ich habe mich kürzlich entschieden vom afterbuy-Shop auf Veyton umzusteigen. Ich hatte im alten Shop zusätzlich zur normalen Kategorienanzeige ein Flyout-Menü eingebaut.

Ich habe es jetz in Veton integriert nur habe ich noch das Problem, dass die Untermenüs beim Hovern nicht erscheinen. Beim Hovern erscheint nur jenes Untermenü, das gerade ausgeklappt ist.

Ich bräuchte praktisch eine Menüstruktur, bei der alle Untermenüs bereits ausgeklappt sind.

Zur Veranschaulichung hier der alte Shop (so wies werden soll):

carfeature

Und hier so wies momentan im Veyton-Shop aussieht:

xt:Commerce VEYTON 4.0

Kann mir da irgendwer weiterhelfen?

Gruß,

Benjamin

Link to comment
Share on other sites

Das Menü ist ja schon fertig.

Mein Problem ist nur, dass das Flyout-Menü ja sämtliche Kategorien und Unterkategorien von Anfang an benötigt. Veyton gibt die Unterkategorien allerdings erst dann aus, wenn die übergeordnete Kategorie aufgerufen wird.

Es müssten praktisch alle Kategorien standardmäßig ausgeklappt sein, dann würde es funktionieren.

Link to comment
Share on other sites

leider bin ich auch ein absoluter php-Anfänger.

Welche Datei muss da eigentlich verändert werden? In der categories.php stehen ja nur 2 Zeilen.

Diesen Thread hab ich schon durchgelesen. Das mit den getrennten Kategorien bringt mir nichts, da dann im Prinzip ja nur die erste Unterkategorie aufgeklappt ist. Bie mir sinds aber teilweise 3 Unterkategorien.

Ich hab mal an mardl eine PN geschrieben, der das Problem damals offenbar gelöst hat.

Link to comment
Share on other sites

  • 9 months later...

Also wenn ich das richtig sehe muss der Aufruf in der categories.php box nur folgendermaßen geändert werden:

$tpl_data = array('_categories'=> $category->getCategoryBox(0, true, 0),'_deepest_level_display'=>$category->deepest_level_display);

Wobei sich nur der Aufruf der getCategoryBox ändert. Die Standard Parameter sind 0, false, 0. Durch das ändern des zweiten Parameters welcher den namen "Nested" trägt sollten die Unterkategorien im feld "sub" übergebene werden.

Ich kann aber leider nicht testen ob es tiefer als die zweite eben geht weil der shop an dem ich gerade arbeite nur 2 ebenen hat ;)

Link to comment
Share on other sites

betrifft4.0.13: Es kommt wohl auf die Anzahl der Kategorienebenen und die Anzahl der Produkte an, ob diese Navigationsstruktur sinnvoll ist.

Wenn man 2 bis 3 Category-Ebenen und viele Produkte hat dann ist die nested-Version des linken Navigationmenüs sehr langsam im Seitenaufbau.

Meiner Meinung nach zu langsam für eine Startseite. Das schreckt eher ab den Shop zu besuchen.

Zumindest auf der Startseite versuche ich derzeit nur mit einer abgespeckten Navigationsstruktur klarzukommen.

Vielleicht ergibt sich in zukünftigen Versionen noch eine innovative Lösung um sehr anspruchsvolle Navigationsstrukturen sehr schnell (schnellerer Webseitenaufbau) darstellen zu können.

Link to comment
Share on other sites

betrifft4.0.13: Es kommt wohl auf die Anzahl der Kategorienebenen und die Anzahl der Produkte an, ob diese Navigationsstruktur sinnvoll ist.

Wenn man 2 bis 3 Category-Ebenen und viele Produkte hat dann ist die nested-Version des linken Navigationmenüs sehr langsam im Seitenaufbau.

Meiner Meinung nach zu langsam für eine Startseite. Das schreckt eher ab den Shop zu besuchen.

Zumindest auf der Startseite versuche ich derzeit nur mit einer abgespeckten Navigationsstruktur klarzukommen.

Vielleicht ergibt sich in zukünftigen Versionen noch eine innovative Lösung um sehr anspruchsvolle Navigationsstrukturen sehr schnell (schnellerer Webseitenaufbau) darstellen zu können.

Einen Menübuilder für "nested sets" mit frei einstellbaren html tags gibt es doch als Plugin.

Listen nach W3C , ordered, unordered div oder definition list sind möglich.. Menüs pro Shop so viele wie du lustig bist, eigene Verwaltung mit frei zuteilbaren Hookpoints. Ebenentiefe und Startebene pro Menü frei wählbar.

Link to comment
Share on other sites

Die Geschwindigkeit der nested set- Baumgenerierung aus der Datenbank bei sehr komplexen Datenstrukturen ist der Engpass und nicht die Erstelltung von Menüs.

( Es ist mir bekannt, daß mit array-Kenntnissen der nested set-Baum in Veyton an beliebiger Stelle - je nach Kategorie-Level - abgriffen und in CSS/HTML-Menüs umgesetzen werden kann. )

Anregung: Eine Beschleunigung der Geschwindigkeit könnte durch etliche Hilfskonstruktionen erfolgen, z.B. indem der gesamte nested set-Arraybaum bei Veyton für eine gewisse Zeit im Caching liegt und aus dem Cache gelesen wird.

Link to comment
Share on other sites

Die Geschwindigkeit der nested set- Baumgenerierung aus der Datenbank bei sehr komplexen Datenstrukturen ist der Engpass und nicht die Erstelltung von Menüs.

( Es ist mir bekannt, daß mit array-Kenntnissen der nested set-Baum in Veyton an beliebiger Stelle - je nach Kategorie-Level - abgriffen und in CSS/HTML-Menüs umgesetzen werden kann. )

Anregung: Eine Beschleunigung der Geschwindigkeit könnte durch etliche Hilfskonstruktionen erfolgen, z.B. indem der gesamte nested set-Arraybaum bei Veyton für eine gewisse Zeit im Caching liegt und aus dem Cache gelesen wird.

Das Plugin hat keine Probleme mit der Performance, auch nicht bei extrem grossen Kategorienbäumen da dieses Plugin absolut performant geschrieben wurde.

Testversion, PM an mich !

Link to comment
Share on other sites

Also wenn ich das richtig sehe muss der Aufruf in der categories.php box nur folgendermaßen geändert werden:

$tpl_data = array('_categories'=> $category->getCategoryBox(0, true, 0),'_deepest_level_display'=>$category->deepest_level_display);

Wobei sich nur der Aufruf der getCategoryBox ändert. Die Standard Parameter sind 0, false, 0. Durch das ändern des zweiten Parameters welcher den namen "Nested" trägt sollten die Unterkategorien im feld "sub" übergebene werden.

Ich kann aber leider nicht testen ob es tiefer als die zweite eben geht weil der shop an dem ich gerade arbeite nur 2 ebenen hat ;)

Also ich habe nun den ganzen Tag versucht die Unterkategorien immer anzuzeigen und verzweifle :/

Auch dein Lösungsvorschlag milganti, hat bei mir nur die Unterkategorien komplett entfernt.

Hat noch jemand eine andere Lösung?

Link to comment
Share on other sites

  • 1 month later...

Also ich habe nun den ganzen Tag versucht die Unterkategorien immer anzuzeigen und verzweifle :/

Auch dein Lösungsvorschlag milganti, hat bei mir nur die Unterkategorien komplett entfernt.

Hat noch jemand eine andere Lösung?

Dito, stehe genau an der selben Stelle. Gibt es was neues?

Link to comment
Share on other sites

Also ich habe es am Ende hart reingeschrieben in die index.html.

Ein Templatehersteller bietet ein Template mit dieser Menüart an, aber das kostet 150Euro und nachdem ich den Herrn anschrieb ob er gegen minderen Preis mir nur diese Technik zur Verfügung stellt, verneinte er.

150 Euro ist mir ein Menü nicht wert, hart gehts auch, so oft ändert man das Menü (zumindest ich) sowieso nicht ;)

Link to comment
Share on other sites

  • 2 months later...

Hi!

Ich habe mir selber eine Box geschrieben, die den gesamten Baum ausgibt.

xtCore/boxes/gategoryTree.php


<?php

defined('_VALID_CALL') or die('Direct Access is not allowed.');

$id = $params["id"];

if( !$params["recursive"] )
$tpl_data["recursive"] = 0;


$tpl_data = array(
'_categories' => $category->getCategoryBox($id, true, 0),
'_deepest_level_display' => $category->deepest_level_display
);

if( $params["class"] )
$tpl_data["class"] = $params["class"];

if( $params["recursive"] )
$tpl_data["recursive"] = $params["recursive"];

?>
[/PHP]

/templates/[templateName]/xtCore/boxes/categoryTree.php

[PHP]
{if $_categories|count > 0 }
<ul {if $class != null }class="{$class}{$recursive}"{/if}>
{section name=i loop=$_categories}
<li >
{$_categories[i].categories_name}({$_categories[i].categories_id})
{box name=categoryTree id=$_categories[i].categories_id class=$class recursive=$recursive+1 }
</li>
{/section}
</ul>
{/if}
[/PHP]

Vielleicht hilt's jemanden.

lg,

:michael

Link to comment
Share on other sites

  • 1 year later...

Hi mlueft,

bei deiner Lösung bekomme ich irgendwie gar keine Ausgabe.

Habe wie du geschrieben hast die beiden Dateien erstellt und in die entsprechenden Ordner geschoben

Aufgerufen wird dann die Box im Template mit {box name=categoryTREE}.

Ich bin noch nicht so versiert mit XTcommerce bzw. Smarties sorry schon einmal dafür. Ich benötige jedoch dringend die Baumdarstellung mit verschachtelten ul's.

Habe ich etwas übersehen?

Danke im Voraus.

Grüße

Link to comment
Share on other sites

  • 2 months later...

Hi!

Habe es etwas erweitert, weil das Skript nur Subkategorien anzeigt, ist man in einer Subkategorie drin, wurden nur noch deren Subkategorien angezeigt, die Übergeordneten nicht mehr.

xtCore/boxes/categories_tree.php

<?php

defined('_VALID_CALL') or die('Direct Access is not allowed.');

if (isset($params["treeid"]) ) {
$treeid = $params["treeid"];
} else {
$treeid = 0;
}

if( !$params["recursive"] )
$tpl_data["recursive"] = 0;


$tpl_data = array(
'_categories' => $category->getCategoryBox($treeid, true, 0),
'_deepest_level_display' => $category->deepest_level_display
);

if( $params["class"] )
$tpl_data["class"] = $params["class"];

if( $params["recursive"] )
$tpl_data["recursive"] = $params["recursive"];

?>
[/PHP]

templates/xt_fl/xtCore/boxes/box_categories_tree.html

[HTML]{if $_categories|count > 0 }
<ul id="top-main-menu" {if $class != null }class="{$class}{$recursive}"{/if}>
<li><a href="index.php"><img src="{$tpl_url_path}img/btn-home.png" width="19" height="19" alt="btn-home" /></a></li>
{section name=i loop=$_categories}
<li><a class="{if $_categories[i].active} active{/if}" href="{$_categories[i].categories_link}">{$_categories[i].categories_name}</a>
{box name=categories_tree treeid=$_categories[i].categories_id class=$class recursive=$recursive+1}
</li>
{/section}
</ul>
{/if}
[/HTML]

Das wird dann eingebunden per

{box name=categories_tree class=categorytree}

Link to comment
Share on other sites

  • 1 month later...

Hallo mgoeben,

danke für dein Beitrag. Allerdings würde mich mal interessieren welche Version du hast.

Bei mir in der 4.1 wird das Template zerschossen! Obs an der Version liegt, oder sich hier ein Fehler eingeschlichen hat ist noch zu klären?

Grüße Greg

Link to comment
Share on other sites

Die Geschwindigkeit der nested set- Baumgenerierung aus der Datenbank bei sehr komplexen Datenstrukturen ist der Engpass und nicht die Erstelltung von Menüs.

( Es ist mir bekannt, daß mit array-Kenntnissen der nested set-Baum in Veyton an beliebiger Stelle - je nach Kategorie-Level - abgriffen und in CSS/HTML-Menüs umgesetzen werden kann. )

Anregung: Eine Beschleunigung der Geschwindigkeit könnte durch etliche Hilfskonstruktionen erfolgen, z.B. indem der gesamte nested set-Arraybaum bei Veyton für eine gewisse Zeit im Caching liegt und aus dem Cache gelesen wird.

Also ehrlich gesagt sollte es bei einem normalen "business webspace" und einem normal strukturierten Shop (< 200 Kategorien ( 3-4 Level tiefe) ) keinerlei Probleme geben.

Link to comment
Share on other sites

@flavor;455023

Bei mir wird das Template nicht zerschossen.

Ich verwende noch die 4.0.xx aber an der Version sollte es nicht liegen.

@Alex@4tfm

Funktioniert schnell und ohne Probleme, sogar wenn es in einem Template mehrfach eingebunden ist.

Link to comment
Share on other sites

Es lag tatsächlich nur an einem fehlenden "}" in deinem Lösungsvorschlag,

am Ende von

  {box name=categories_tree treeid=$_categories[i].categories_id class=$class recursive=$recursive+1}[/PHP]

aber, da du gerade da bist. Bei mir werden alle Kategorien + Unterkategorien ausgeklappt angezeigt, ohne einen flyout Effekt. Irgendeine Idee woran es liegen könnte?

Danke mgoeben

Link to comment
Share on other sites

Hi!

Also um das flyout musst du dich schon selbst kümmern, nur ohne dieses Template hättest du nichtmal die Subkategorien.

Das Template gibt die Kategorien nur in verschachtelten (UL) Listen aus, die man normalerweise dann per CSS zu einem Flyout Menü erweitern kann.

Gruß

Marco

Link to comment
Share on other sites

Hallo Marco,

ja, der Zusammenhang ist mir nun aufgegangen. Allerdings klappen die submenus nicht auf.

mit einer html typischen Verschachtlung alla

<div id='flyout-vertical'>
<ul>
<li><a href='index.html'><span>Kategorien</span></a></li>
<li class='has-sub'><a href='#'><span>Products</span></a>
<ul>
<li class='has-sub'><a href='#'><span>Product 1</span></a>
<ul>
<li><a href='#'><span>Sub Item</span></a></li>
<li class='last'><a href='#'><span>Sub Item</span></a></li>
</ul>
</li>
<li class='has-sub'><a href='#'><span>Product 2</span></a>
<ul>
<li class='last'><a href='#'><span>Sub Item</span></a></li>
</ul>
</li>[/PHP]

funktioniert das ohne Probleme, aber offenbar weiß ich nicht genau wie ich das css Gefüge mit deiner Version im Einklang bringe.

Aktuell

[PHP]<div id="flyout-vertical" class="">
{if $_categories|count > 0 }
<ul id="" {if $class != null }class="{$class}{$recursive}"{/if}>
<li class='active'><a href="index.php"><img src="{$tpl_url_path}img/btn-home.png" width="19" height="19" alt="btn-home" /></a></li>
{section name=i loop=$_categories}
<li><a class="{if $_categories[i].active} active{/if}" href="{$_categories[i].categories_link}">{$_categories[i].categories_name}</a>
{box name=categories_tree treeid=$_categories[i].categories_id class=$class recursive=$recursive+1}
</li>
{/section}
</ul>
{/if}
</div><!-- #flyout-vertical -->[/PHP]

Gerade ist was aufgeblitzt - Ich vermute mal den Fehler in meiner css. müsste wohl diese class abrufen können <a class="{if $_categories[i].active} active{/if}"... wenn ich das richtig verstehe !?

Vielleicht ist das ja schnell erklärt. Oder du postest mal freundlicherweise deine Version, falls das keine Umstände bereitet!?

Ich bedanke mich für die hilfreiche Unterstützung!

Grüße Greg

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...