Jump to content
xt:Commerce Community Forum

if Abfrage für Kategorie


Recommended Posts

Hallo,

bin seit Tagen am tüfteln aber bekomme es einfach nicht hin und zwar habe ich ein Megamenü ins Template eingepasst was auch gut funktioniert.

Somit habe ich jetzt die Kategorien oberhalb des Content-Bereiches und unterhalb des Breadcrumb-Bereiches.

In der index.html des Templates habe ich die Boxen der Kategorien entfernt damit diese nun links nicht mehr auftauchen.

Jetzt möchte ich wenn man die Kategorie im Megamenü anklickt, das die dazu gehörige Kategoriebox links eingeblendet wird.

Ich weiß damit man dies über eine if Abfrage regelt nun aber die Frage wo und wie kann man das steuern ?

ich habe mit diesen Code in der index.html schon einiges probiert:

{if $page=='index'}
{box name=categories}{/if}[/HTML]

nun ist ja der Befehl nur auf die index bezogen.

Es muss doch eine Variable für Kategorien geben oder?

Wie kann man nun sage ich mal eine Url bzw. Kategorie einbeziehen.

Sprich wenn Kategorie mit ID5 aufgerufen wird dann blende Box mit name ... ein.

Link to comment
Share on other sites

vielen dank oldbear

ich hatte vorhin diesen gefunden:

{if $smarty.server.REQUEST_URI == '/de/categorie.html/'}

deiner ist kürzer ;)

trotzdem habe ich noch das Problem wenn ich eine Unterkategorie öffne das die Box dann wieder verschwindet :mad:

gibt es da auch noch nen trick?

kann man das so lösen wenn /de/kategorie1/

dann die Box

so das ihm alles egal ist was dahinter kommt

Link to comment
Share on other sites

  • 1 month later...

Ich glaube wir haben an einander vorbei geredet.

Die variablen {if $smarty.get.page == 'categorie' OR $smarty.get.page == 'product'} funktionieren ja.

Aber ich wollte es ja anders haben.

Ich habe das Megamenü mit Kategorie-1, Kategorie-2, Kategorie-3.

Wenn ich Kategorie-1 anklicke oder mich bei einen Artikel in dieser Kategorie befinde möchte ich dann z.B. nur die Box mit diesen Kategorien haben und nicht alle für Kategorie 1-3.

Im Moment habe ich es mit {if $smarty.get.cat == '1'} gelöst, dadurch wird die index aber sehr aufbläht da ich ja für jede ID eine neue if-Abfrage geschrieben habe.

Außerdem funktioniert dies nicht Wenn man einen Artikel öffnet :mad:

Link to comment
Share on other sites

  • 3 weeks later...

Gibt es hierzu mittlerweile eine Lösung? Ich habe genau das selbe Problem.

Theoretisch würde man eine Variable brauchen in der die Root Kategorie ID der aktiven Kategorie bzw des aktiven Arikels steht.

Ist diese schon vorhanden oder muss diese erst generiert werden?

Link to comment
Share on other sites

Habe gestern eine Lösung gepostet, die ist aber leider nicht freigeschaltet worden?! Was ist da los??

Lag es an dem Link darin?

Googled mal if else if smarty dann kommt ihr auf die Seite von smarty die zeigt wie man den else Fall benutzen kann, damit kann man dann schon mal alle anderen IDs abfangen. Leider geht das PHP Oder nicht.. dazu habe ich nichts gefunden, darf also gerne noch wer posten wenn er es weiß^^

Link to comment
Share on other sites

Das Problem ist das ich mit einer normalen IF Abfrage wie oben schon beschrieben nur manuell jeden Fall prüfen könnte, was bei vielen Hauptkategorien einen riesen Umstand gibt. Und vor allem nicht mehr funktioniert wenn die IDs sich ändern. Zumindest wenn ich dich richtig verstehe.

Wenn ich in der categories.php unter

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

insert_rootid_here eine Variable mit der ID der ersten Kategorie im aktuellen Tree einbauen könnte wäre das Ganze sauber und einfach gelöst.

Da ich jedoch bisher keine existierenden Variablen finde werde ich wohl selbst basteln müssen.

Link to comment
Share on other sites

Hi Floha,

ja ich denke das es dann nicht anders geht.. man kann aber wohl anstatt der ID auch den Namen der Kategorie angeben aber das ändert sich vermutlich schneller mal als die ID^^ Also alles noch keine richtig gute Lösung. Wenn du was gefunden hast gib doch bitte Bescheid, würde mich sehr interessieren. Zwar reichte in meinem Fall ein else aus, aber so richtig schöön fand ich das jetzt auch nicht.. ;-)

LG

Link to comment
Share on other sites

Unser erster Ansatz:

Wir haben eine Root ID gebastelt und diese genutzt um das Menü links zu begrenzen:

In der xtCore/boxes/categories.php folgenden Code einbauen:


$category_id = 0;  // Neue Variable mit der Root ID

$category_levels = $category->level;


if($category_levels[1] != null)

{

  $category_id = $category_levels[1];

}

Scheint bisher zu funktionieren. Man kann die $category_id dann nutzen um die Box links zu begrenzen.

Das ganze kann natürlich auch als extra Box angelegt werden um den original Code nicht zu ändern. Siehe XTC Anleitung.

Mfg

Link to comment
Share on other sites

templates\xt_grid\xtCore\boxes\box_categories.html:


<div id="box-categories" class="sidebar-box">
<p class="headline">{txt key=TEXT_BOX_TITLE_CATEGORIES}</p>
<ul>
{foreach name=aussen item=module_data from=$_categories}
{if $module_data.level > 1}
<li id="box-categories-categorie-{$module_data.categories_id}" class="level{$module_data.level}{if $module_data.active} active{/if}"><a href="{$module_data.categories_link}">{$module_data.categories_name}</a></li>
{/if}
{/foreach}
</ul>
</div><!-- #box-categories -->
[/PHP]

Bin mir nicht sicher ob ich es richtig verstanden habe, aber das müsste die Lösung sein:

Wenn man z.b. mein Dropdown-Menü-plugin benutzt ist das eine sehr beleibte Modifikation.

beim xt_grid macht es z.B. auch Sinn oben ("Top-Kategoie") nur level eins zu zeigen und links in der categories-Box ab level 2

Link to comment
Share on other sites

templates\xt_grid\xtCore\boxes\box_categories.html:


<div id="box-categories" class="sidebar-box">
<p class="headline">{txt key=TEXT_BOX_TITLE_CATEGORIES}</p>
<ul>
{foreach name=aussen item=module_data from=$_categories}
{if $module_data.level > 1}
<li id="box-categories-categorie-{$module_data.categories_id}" class="level{$module_data.level}{if $module_data.active} active{/if}"><a href="{$module_data.categories_link}">{$module_data.categories_name}</a></li>
{/if}
{/foreach}
</ul>
</div><!-- #box-categories -->
[/PHP]

Bin mir nicht sicher ob ich es richtig verstanden habe, aber das müsste die Lösung sein:

Wenn man z.b. mein Dropdown-Menü-plugin benutzt ist das eine sehr beleibte Modifikation.

beim xt_grid macht es z.B. auch Sinn oben ("Top-Kategoie") nur level eins zu zeigen und links in der categories-Box ab level 2

Hallo,

wie vergebe ich den Level??

Danke ZHS

Link to comment
Share on other sites

Hallo :)

Das Level ist schon "vergeben". Level 1 ist die Oberkategorie, die Unterkategorie ist Level 2 usw....

In dem angeführten Beispiel steht in Zeile 5: {if $module_data.level > 1}

Das bedeutet, dass Level 1 nicht angezeigt wird, sondern nur alles ab Level 2.

Hab mit der Einstellung beim Template xt_grid anpassen die letzten Tagen auch schon gespielt.

Link to comment
Share on other sites

ok ja das geht ja auch soweit !

Ich wollte es leider etwas anders haben.

sobald ich der Kategorie Top Artikel vergebe (dann Topkategorie)

wenn ich der Kategorie kein Top vergebe (dann Kategoriebaum) eventuell könnte man das mit einer IF Abfrage erledigen

weiß nur nicht wie.

Verlinkungen in die Topkategorie sollte immer möglich sein

Gruß ZHS

Link to comment
Share on other sites

Archived

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

×
  • Create New...