Nur bestimmte Kategorie in linker Spalte, PHP in Smarty?

Hallo,

ich würde gern in einem bestimmten Template mit einer individuellen _left-individell.tpl Datei dort (in der linken Spalte) nur eine bestimmte Kategorie (ud eren Unterkategorie) anzeigen. Was wäre dafür der beste Weg? Ich habe schon zwei versch. Navigationen (auf Basis versch. _left.tpl-Varianten), einmal Standard-Kategorien, einmal versteckte Kategorien (für Content-Seiten). Nun bräuchte ich ein drittes Unterscheidungskriterum.

Beim Lösen des Problems hatte ich im _left-individuell.tpl versucht, es vom Dateinamen der Oberkategorie ‘oberkategorie’ abhängig zu machen, ob sie bzw. darunter liegende angezeigt werden:

[{php}]
        $link=$ocat->getLink();
       if(strpos($link, 'oberkategorie') != FALSE):
        [{/php}]
.....dann category_tree
[{php}]
  endif;
[{/php}]

Aber evt. kann $ocat->getLink(); nicht als Wert an $link übergeben werden …?

Aber ich bin noch nicht genug drin im Oxid-Smarty. Wäre trotzdem nett, wenn mir jemand einen Tipp geben könnte.

Oder gibt es was einfacheres? Danke vorab.

Hallo,

möchtest du nur herausfinden, ob eine Kategorie einen bestimmen Namen trägt und abhängig davon den Kategoriebaum darstellen?


[{if $ocat->oxcategories__oxtitle->value == "kategoriename"}]
  [{if $ocat->getSubCats()}]
    [{strip}]
    .
    .
    [{/strip}]
  [{/if}]	
[{/if}]

Oder möchtest du nur den Kategoriebaum darstellen, wenn die Kategorie eine Oberkategorie ist?

Ersteres möchte ich erreichen.

Ich habe mehrere versteckte Kategorien, die der Kunde für (kategorisierte) redakionelle Inhalte nutzt, und in diesem speziellen Template soll nur eine davon und deren Unterkategorien angezeigt werden.
Ich habe das jetzt versucht, Einbau zum Test in die Standard _left.tpl:

[{if $ocat->oxcategories__oxtitle->value == “Wein”}]
<p> TEST </p>

[{/if}]

Wein ist der Titel der Kategorie, steht auch so in der Tabellenspalte bei oxcategories unter oxtitle, es wird aber beim Aufruf der Kategorie nichts ausgegben.

Aber so funktioniert die Ausgabe:
[{if $actCategory->oxcategories__oxtitle->value == “Wein”}]

<p> in Kategorie Wein </p>

[{/if}]

Simmt was mit dem $ocat-Objekt evt. nicht ??

Genau, $ocat müsste erst einmal ein Kategorieobjekt zugewiesen werden um dessen Titel überprüfen zu können. Wenn du die ID der Kategorie kennst, könntest du die Kategorie direkt laden und $ocat zuweisen. Ich glaube nicht, dass das über den Namen geht, da dieser ja nicht eindeutig ist. Prinzipiell könntest du alle Oberkategorien durchgehen und überprüfen ob de Name übereinstimmt. Ungefähr so:


[{foreach from=$oxcmp_categories item=ocat key=catkey name=root}]
  [{if $ocat->oxcategories__oxtitle->value == "kategoriename"}]
    //hier ist der Einstiegspunkt  
  [{/if}]
[{/foreach}] 

Vielleicht geht es aber auch direkt.

Hallo csemich,

danke - jetzt bin ich auf dem richtigen Weg - das funktioniert schon ziemlich gut (individuelle geänderte category_tree.tpl):


[{foreach from=$tree item=ocat key=catkey name=$test_catName}]
         [{if $ocat->oxcategories__oxparentid->value=="1234567890" || $ocat->oxcategories__oxid->value=="1234567890"}]
 
        <ul class="tree">
        <li class="[{*if $ocat->isTopCategory()*}]act[{*/if*}] topcms_cat">
            <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}]">[{$ocat->oxcategories__oxtitle->value}] </a>
        
        [{fun name="category_tree" tree=$ocat->getSubCats() act=$act class="" testSubCat=$ocat->oxcategories__oxid->value }]
       
        </li>
        </ul>
          [{/if}]
          [{/if}]
    [{foreachelse}]
        <ul>
        [{if $oContentCat }]            
            <li class="[{if $ocat->isTopCategory()}]act[{/if}]"><a id="test_BoxLeft_Cms_0" class="root act" href="[{$oContentCat->getLink()}]">[{ $oContentCat->oxcontents__oxtitle->value }]</a></li>
        [{/if}]
         </ul>
 [{/foreach}]

Vielleicht kann das jemand gebrauchen. Der value-Wert im if-Statement muss natürlich der anzuzeigenden Kategorie (bzw. Oberkategorie) entsprechen.

Danke, Du hast was bei mir gut :slight_smile:
H.G. Weber

Ich hänge mich mal hier dran. Oben kam ja schon die Frage auf, ob man eine bestimmte Kategorie direkt mit dessen ID ansprechen kann ohne den Umweg über eine Schleife. Jemand eine Idee?

müsste gehen, da ja oxcategories auch eine “get” funktion enthält.

Nimm doch einfach das:

http://www.oxid-esales.com/forum/showthread.php?t=10076

Hallo, ich versuche eine versteckte Kategorie “Stile” (mit 16 Unterkategorien) oben als Top Menü ausgeben zu lassen.

Versuche es mit dem Plugin von aggrosoft:

[{agload oxid=“72813dc183f419ee3d5bdea21297b8fd” type=“oxcategory” assign=“oCategory”}]

Wie muss dazu die passende foreach Schleife aussehen, um nur die Unterkategorien als Menü von meiner Hauptkategorie “Stile” auszuspucken?

(Zum Hintergrund: In den versteckten Kategorien sind alle Produkte im Shop nach Kampfsportart aufgeteilt)