Eigene View-Klasse: Probleme mit der Haupt-Navigation

Hallo,

ich versuche gerade das erste mal eine view-Klasse zu schreiben. Diese Klasse soll einige select-boxen zeigen und abhängig davon werden dem Nutzer die Artikel nach den ausgewählten Kriterien angezeigt. Das funktioniert soweit auch.

Mein Problem ist, dass ich diese View-Klasse einer bestimmten Kategorie zuordnen will, sprich, es soll nur in einer Kategorie diese “Suche nach Artikeln” laufen. Das habe ich so gelöst, indem ich die id der Kategorie in der inc/category_tree.tpl abfange und statt der normalen Ausgabe des Links, die view-Klasse aufrufen:


[{* wenn betreffende Kategorie, eigenen Link zum Aufruf der eigenen view-Klasse *}]
[{if $ocat->oxcategories__oxid->value == "f64ff793f13c6820d384ddc4b35f1a6b"}]
	<li>
		<a id="test_BoxLeft_Cat_[{if $ocat->isTopCategory()}][{$ocat->oxcategories__oxid->value}]_[{$smarty.foreach.$test_catName.iteration}][{else}][{$testSubCat}]_sub[{$smarty.foreach.$test_catName.iteration}][{/if}]" href="[{ oxgetseourl ident=$oViewConf->getSelfLink()|cat:"cl=meineviewklasse"}]" class="[{if $ocat->isTopCategory()}]root [{/if}][{if $ocat->hasVisibleSubCats}][{if $ocat->expanded }]exp [{/if}]has [{else}]last [{/if}][{if isset($act) && $act->getId()==$ocat->getId() && !$oContentCat }]act [{/if}] [{$manufacturer}]">[{$ocat->oxcategories__oxtitle->value}] [{if $ocat->getNrOfArticles() > 0}] ([{$ocat->getNrOfArticles()}])[{/if}]</a>				
		[{if $ocat->getSubCats() && $ocat->expanded}]
			[{fun name="category_tree" tree=$ocat->getSubCats() act=$act class="" testSubCat=$ocat->oxcategories__oxid->value }]
		[{/if}]
	</li>
[{else}]	
	<li>
		<a id="test_BoxLeft_Cat_[{if $ocat->isTopCategory()}][{$ocat->oxcategories__oxid->value}]_[{$smarty.foreach.$test_catName.iteration}][{else}][{$testSubCat}]_sub[{$smarty.foreach.$test_catName.iteration}][{/if}]" href="[{$ocat->getLink()}]" class="[{if $ocat->isTopCategory()}]root [{/if}][{if $ocat->hasVisibleSubCats}][{if $ocat->expanded }]exp [{/if}]has [{else}]last [{/if}][{if isset($act) && $act->getId()==$ocat->getId() && !$oContentCat }]act [{/if}] [{$manufacturer}]">[{$ocat->oxcategories__oxtitle->value}] [{if $ocat->getNrOfArticles() > 0}] ([{$ocat->getNrOfArticles()}])[{/if}]</a>
		[{if $ocat->getSubCats() && $ocat->expanded}]
			[{fun name="category_tree" tree=$ocat->getSubCats() act=$act class="" testSubCat=$ocat->oxcategories__oxid->value }]
		[{/if}]
	</li>
[{/if}]

Habe also einzig den Inhalt bei “href” ausgetauscht. Nun wird aber nicht mehr erkannt, wann bzw ob diese Kategorie aktiv ist. Im smarty-debug habe ich gesehen, dass die Variable $actCategory nicht mehr zur Verfügung steht.

Hat jemand einen Tipp für mich, wie die Variable $actCategory wieder erscheint und damit auch meine aktive Kategorie erkannt wird?

Vielen Dank,
Kathrin

Hat keiner eine Idee, wie ich das Problem lösen kann? Oder mache ich etwas falsch?

Viele Grüße,
Kathrin

[QUOTE=kathrin-77;14527]Hat keiner eine Idee, wie ich das Problem lösen kann? Oder mache ich etwas falsch?

Viele Grüße,
Kathrin[/QUOTE]
Da ich grundsätzlich immer spezifische Abhhängigkeiten wie

[{if $ocat->oxcategories__oxid->value == "f64ff793f13c6820d384ddc4b35f1a6b"}]

vermeide, weil die Dynamik damit verloren geht, würde ich einen anderen Ansatz probieren:

OXID erlaubt ja die Zuordnung von Attributen zu Kategorien und Produkten in der Kategorie.

Wenn das in einer Kategorie zutrifft, wird eine Suche nach solchen Attributen ermöglicht.

z.B. wie hier http://www.digital-readers.de/EBook-Reader/ im oberen Contentbereich.

Über diesen Weg bekommt man also [B]dynamisch [/B]von OXID die Information geliefert, wann dieser Suchbereich anzuzeigen ist…

Man muss dann nur das Template, das diesen Suchbereich erstellt so modifizieren, wie man es benötige. (Das ist der Bereich “[{capture name=list_details}]” in “list.tpl”.)

Wobei, wenn ich darüber nachdenke, diese Suche nach Attributen genau das sind, was Du willst, oder???

Das kann OXID von Hause aus.

Das ist ja ein super Tipp. Daran hab ich noch gar nicht gedacht. Habs gleich mal ausprobiert und es funktioniert so. Dabei brauchte ich in der list.tpl doch gar nichts anpassen? Was hast Du denn da angepasst?

Das einzige was mich ein wenig stört, sind zwei Dinge.

  1. Alle Produkte sind ja sichtbar und reduzieren sich, wenn man etwas aus der select-Box auswählt. Ich hätte aber gern, dass nur die select-Box zu sehen ist und wenn man ein Attribut auswählt, dann erscheinen die entsprechenden Artikel erst. Wäre das mit dieser Methode auch möglich?

  2. Wenn ich ein Attribut aus der select-Box ausgewählt habe, dann verschwinden in dieser select-Box alle anderen Attribute. Ich muss dann erst wieder auf “Bitte auswählen” gehen, um die anderen Attribute wieder zu sehen. Das ist bei der Seite, die Du angegeben hast auch so. Das ist in Bezug auf Usability wohl nicht sehr gut. Ist das auch anpassbar?

Danke schon mal für die Antwort.

Kathrin