Jump to content
xt:Commerce Community Forum

Kategorie Menü


Timrasche

Recommended Posts

Da dieses Thema hier zwar schon oft angesprochen wurde aber irgendwie in keinem Thread eine Lösung zustande gekommen ist, hier nochmal die Frage:

Wie kann man in der box categories ALLE Kategorien anzeigen lassen OHNE erst auf die Kategorie zu klicken, daher also eine rekursive Ausgabe aller Kategorien.

Das ganze soll später als :hover Menü "ausgeklappt" werden.

Es gibt wenig bis gar keine nutzbaren Informationen dazu. Weil wenn ich eine neue Box mit Kategorieauflistung erstellen will und dann jedesmal eine ID zu übergeben damit dies auch aufgeklappt wird, da das als Template Funktion ja dann jedesmal für x Kategorien angelegt werden müsste und so kann kein Kunde individuelle Menüs gestalten.

Daher BITTE eine Lösung dazu.

Link to comment
Share on other sites

Verstehe ich auch grade nicht, was dann so ein Forum für Sinn macht wenn man nichts austauscht....

Naja jedenfalls arbeite ich derzeit auch daran das direkt umzusetzen, da es bereits eine Funktion gibt, die ALLE Kategorien ausgibt, allerdings werden in dieser wichtige array variablen nicht gesetzt die aber essentiell für das styling der ul listen sind. Zumindest um es vernünftig zu machen.

Habe bislang nur eine Lösung mit begrenzter Funktionsfähigkeit.

Wäre gespannt auf eine Lösung ;)

Link to comment
Share on other sites

die Ausgabe der Links fehlt ja in diesem Beispiel, kannst Du aber mit

[COLOR=#000000][COLOR=#007700] {[/COLOR][COLOR=#0000BB]$_categories[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]i[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#0000BB]categories_link[/COLOR][COLOR=#007700]}[/COLOR][/COLOR][/CODE]

passend erweitern :) [color=#000000][color=#007700][/color][/color]

Link to comment
Share on other sites

wenn man doch einfach mal die Suche benutzen würde * bwhahaha:)

http://www.xt-commerce.com/forum/fragen-zur-software/77789-flyout-men-f-r-kategorien-veyton-2.html#post381898

übrigens funzt das einwandfrei !

naja einwandfrei funktionieren ist bei mir etwas anderes... wenn man sich diesen code anschaut basiert alles auf der variable $params['id'] daher mal eine frage unter programmierern, wie wird bzw wo diese variable definiert? sehe da wenig "funktionierendes"

ich verstehe aber das Beispiel so wie es in dem Thema Flyout-mneü behandelt wird. Allerdings ist diese Ausgabe schon gut, aber immernoch davon entfernt einen "kompletten Baum" auszugeben!

Link to comment
Share on other sites

naja einwandfrei funktionieren ist bei mir etwas anderes... wenn man sich diesen code anschaut basiert alles auf der variable $params['id'] daher mal eine frage unter programmierern, wie wird bzw wo diese variable definiert? sehe da wenig "funktionierendes"

ich verstehe aber das Beispiel so wie es in dem Thema Flyout-mneü behandelt wird. Allerdings ist diese Ausgabe schon gut, aber immernoch davon entfernt einen "kompletten Baum" auszugeben!

Wie definierst Du einen kompletten Baum ? Wenn ich das lokal bei mir teste zeigt er mir alle Kategorien als nested List an. Wie das Ding nachher dargestellt wird kann doch jeder via CSS machen wie er möchte, Flyout, kompletter Baum oder wie auch immer.

Link to comment
Share on other sites

Das kannst du leicht über ein eigenes Plugin realisieren.

Du kannst dir die Kategorien als ein verschachteltes Array zurückgeben lassen. Die Funktion, die die Daten für die Kategorien-Darstellung als Box zurückgibt, heißt getCategoryBox(). Diese nimmt bis zu drei Argumente. Das zweite Argument steuert, ob das Array verschachtelt sein soll oder nicht. Default ist false. Wenn du ein true übergibst, kriegst du ein verschachteltes Array, dass die Kategorienstruktur wiederspiegelt.

Wenn du es dir genauer anschauen willst: Die Funktion wird in xtFramework/class.category.php definiert.

Mit Smarty kannst du anschließend dir das als verschachtelte Liste ausgeben lassen. Von da an sollte es mit CSS und JavaScript kein Problem mehr sein.

Da xtcommerce keine Sichtbarkeit von Klassen-Methoden verwendet, ist unklar, ob diese Funktion als Schnittstelle gedacht ist oder sich nach einem Update auch mal anders Verhalten kann. Da aber auch die Standard-Kategorie-Ausgabe auf dieser Funktion aufbaut, ist eine Änderung zumindest bei einem Minor Release - hoffentlicht - nicht zu erwarten.

Link to comment
Share on other sites

Das ist trotzdem kein kompletter Baum...

Leute, schaut euch dochmal die Ausgabe von getCategoryBox() und im Vergleich die Ausgabe von getAllCategoriesList() an.

Dann seht ihr was ein KOMPLETTER baum ist, leider wie beschrieben fehlen hier diverse Variablen wie zb level und active. Das habe ich jetzt einfach umgangen und arbeite den vergleich von leveln mit mehreren schleifen und parent ids ab.

So funktioniert das ganze ganz gut.

Link to comment
Share on other sites

<ul id="nav" class="level-0">

    <li class="level-1"><a class="level-1" href="#" title="#"><span>#</span></a></li>

    <li class="level-1 parent"><a class="level-1" href="#" title="#"><span>#</span></a>

        <ul class="level-1">

            <li class="level-2"><a class="level-2" href="#" title="#"><span>#</span></a></li>

            <li class="level-2"><a class="level-2" href="#" title="#"><span>#</span></a></li>

            <li class="level-2"><a class="level-2" href="#" title="#"><span>#</span></a></li>

            <li class="level-2 parent"><a class="level-2" href="#" title="#"><span>#</span></a>

               <ul class="level-2">

                   <li class="level-3"><a class="level-3" href="#" title="#"><span>#</span></a></li>

                   <li class="level-3"><a class="level-3" href="#" title="#"><span>#s</span></a></li>

                   <li class="level-3"><a class="level-3" href="#" title="#"><span>#</span></a></li>

                   <li class="level-3"><a class="level-3" href="#" title="#"><span>#</span></a></li>

               </ul>

           </li>

          <li class="level-2"><a class="level-2" href="#" title="#"><span>#</span></a></li>

       </ul>

     </li>

    <li class="level-1"><a class="level-1" href="#" title=""><span>#</span></a></li>

    <li class="level-1"><a class="level-1" href="#" title="#"><span>#</span></a></li>

</ul>

wenn das kein kompletter Baum ist was ist das dann ???

Link to comment
Share on other sites

Ich kann es natürlich auch gerne hier posten kein Ding.

in der Datei /xtCore/boxes/categories.php muss folgende Änderung gemacht werden:

$tpl_data = array('_categories'=> $category->getCategoryBox(),'_deepest_level_display'=>$category->deepest_level_display);[/PHP]

ändern in :

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

Für das Template ist entsprechend die Änderung in der categories.html zu machen:

[HTML]

<ul id="main" class="bgIframe">
{foreach name=aussen item=first_level from=$_categories}
<li class="{if $first_level.sub!=''}w160{/if} level{$module_data.level}{if $module_data.active} current{/if}">
{if $first_level.sub!=''}
{php} $count=0; {/php}
{foreach name=innen item=firstSec_level from=$first_level.sub}
{php} if($count < 1){ {/php}
<a class="btnEnd" href="{$firstSec_level.categories_link}" title="{$first_level.categories_heading_title}">{$first_level.categories_name}</a>
{php} } {/php}
{php} $count++; {/php}
{/foreach}
{else}
<a class="btnEnd" href="{$first_level.categories_link}" title="{$first_level.categories_heading_title}">{$first_level.categories_name}</a>
{/if}
{if $first_level.sub!=''}
<ul id="submain" class="submain">
{foreach name=innen item=second_level from=$first_level.sub}
<li class="level{$second_level.level}{if $second_level.active} current{/if}">
<a href="{$second_level.categories_link}" title="{$second_level.categories_heading_title}">{$second_level.categories_name}</a>
</li>
{/foreach}
</ul>
{/if}
</li>
{/foreach}
</ul>
[/HTML]

Das ganze ist jetzt nur auf 2 Kategorie-Ebenen ausgelegt, sollte nach diesem Muster aber ein leichtes sein, es zu erweitern!

ICh habe es ebenfalls mehrfach in Benutzung mit einem Flyout Menu, das Script dazu ist folgendes:

[HTML]{literal}
<script>
$(document).ready(function(){
$("ul#main").superfish({
delay: 1000,
speed: 'slow',
autoArrows: false,
animation: {
opacity:'show',
height:'show'
},
dropShadows: false
});
});

</script>
{/literal}[/HTML]

Um das so hinzubekommen, habe ich auch einiges Suchen und vor allem ausprobieren müssen! Also viel spass damit!

Greetz

Link to comment
Share on other sites

in der Datei /xtCore/boxes/categories.php muss folgende Änderung gemacht werden:

Ich würde dringend empfehlen das als eigenes Plugin zu realisieren. Also einfach die Dateien als

/plugins/categories_nested/boxes/categories_nested.php

/plugins/categories_nested/templates/boxes/categories_nested.php

neu anzulegen.

Core-Hacks haben immer die Gefahr, dass sie dir bei einem Update überschrieben werden.

Link to comment
Share on other sites

  • 4 months later...

Hallo Reverent001,

deine Lösung funktioniert wunderbar. Nur leider benötige ich 3 Kategoriebenen.

Ich habe jetzt Probleme die 2te Unterkategorie einzubauen. Ich bin so weit, dass ein weiteres Submenü angezeigt wird, allerdings nicht das 2te, sondern wieder der Inhalt (Links, Überschriften) des ersten Submenüs. Irgendetwas entscheidendes übersehe ich. Folgendes habe ich probiert:


<ul id="categorymenu">
{foreach name=aussen item=first_level from=$_categories}
<li class="level{$first_level.level}{$first_level.categories_id}{if $first_level.active} active{/if}">
{if $first_level.sub!=''}
{php} $count=0; {/php}
{foreach name=innen item=firstSec_level from=$first_level.sub}
{php} if($count < 1){ {/php}
<a class="btnEnd" href="{$firstSec_level.categories_link}" title="{$first_level.categories_heading_title}">{$first_level.categories_name}</a>
{php} } {/php}
{php} $count++; {/php}
{/foreach}
{else}
<a class="btnEnd" href="{$first_level.categories_link}" title="{$first_level.categories_heading_title}">{$first_level.categories_name}</a>
{/if}
{if $first_level.sub!=''}
<ul id="submain" class="submain">
{foreach name=innen item=second_level from=$first_level.sub}
<li class="level{$second_level.level}{if $second_level.active} current{/if}">
<a href="{$second_level.categories_link}" title="{$second_level.categories_heading_title}">{$second_level.categories_name}</a>
{if $first_level.sub!=''}
<ul id="submain2" class="submain2">
{foreach name=innen item=second_level from=$first_level.sub}
<li class="level{$second_level.level}{if $second_level.active} current{/if}">
<a href="{$second_level.categories_link}" title="{$second_level.categories_heading_title}">{$second_level.categories_name}</a>
</li>
{/foreach}
</ul>
{/if}
</li>
{/foreach}
</ul>
{/if}

</li>
{/foreach}
</ul>
[/HTML]

Könnte mir dabei jemand helfen?

Vielen Dank im Voraus.

Grüße

Link to comment
Share on other sites

  • 4 months later...
  • 2 months later...

Archived

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

×
  • Create New...