GrazzyGrazzy MemberComments: 70 Received thanks: 10 Member since: September 2012 edited February 2013
Hallo zusammen

Ich möchte gerne einzelne Kategorien aus der linken Navigation entfernen so das sie nur in der Top Navigation angezeigt werden.

Bei SW 3.5 gab es hier eine sehr geschmeidige Lösung bei der man nur im Freitextfeld der Kategorie eine 1 eintragen musste.

Jetzt bin ich wirklich kein Programmierer und bekomm es nicht mehr hin. Mit der 3.5er Änderung bekomme ich nur noch eine Fehlermeldung vom Shop.

Könnt Ihr mir weiter helfen was an dem Code geändert werden muss?
{extends file="parent:frontend/categorie_left.tpl"}
{function name=categories level=0}
   <ul class="{if !$level}categories{else}submenu{/if} level{$level}">
   {block name="frontend_index_categories_left_ul"}{/block}
   {foreach from=$categories item=category}
   {if $category.ac_attr1 != 1}
       <li {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}active{if $category.subcategories} sub{/if}{/if}"{/if}>
         <a href="{if $category.external}{$category.external}{else}{$category.link|rewrite:$category.description}{/if}" {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}flag{if $category.subcategories} active{/if}{/if}"{/if}>
            {$category.description}
         </a>
          {if $category.subcategories}
              {call name=categories categories=$category.subcategories level=$level+1}
          {/if}
       </li>
   {/if}
   {/foreach}
   </ul>
{/function}
 
 
{if $sCategories}
   {call name=categories categories=$sCategories}
{elseif $sMainCategories}
   {call name=categories categories=$sMainCategories}
{/if}
Danke Grazzy

Comments

  • GrazzyGrazzy MemberComments: 70 Received thanks: 10 Member since: September 2012
    Die Originaldatei in SW 4 sieht so aus
    {* Maincategories left *}
    
    {function name=categories level=0}
    	<ul class="{if !$level}categories{else}submenu{/if} level{$level}">
    	{block name="frontend_index_categories_left_ul"}{/block}
    	{foreach from=$categories item=category}
    	    <li {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}active{if $category.subcategories} sub{/if}{/if}"{/if}>
    			<a href="{$category.link}" {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}flag{if $category.subcategories} active{/if}{/if}"{/if}>
    				{$category.description}
    			</a>
    	    	{if $category.subcategories}
    		     	{call name=categories categories=$category.subcategories level=$level+1}
    		    {/if}
    	    </li>
    	{/foreach}
    	</ul>
    {/function}
    
    
    {if $sCategories}
    	{call name=categories categories=$sCategories}
    {elseif $sMainCategories}
    	{call name=categories categories=$sMainCategories}
    {/if}
    
    Kann einer von Euch Profis mal drüber schaun?

    Gruß Grazzy
  • GrazzyGrazzy MemberComments: 70 Received thanks: 10 Member since: September 2012
    Was ich mit meinem bescheidenem Wissen feststellen konnte ist das sich was in der Datenbank geändert hat.

    Die Variable für das Freitextfeld1 heißt nicht mehr ac_attr1 sondern jetzt attribute1 und liegt nicht mehr in der Tabelle s_categories sondern ist jetzt unter s_categories_attributes zu finden.

    Kann jemand helfen wie dann der Code aussehen muss wenns an der if Bedingung in Zeile 6 liegen sollte?

    Danke und Gruß Grazzy
  • GrazzyGrazzy MemberComments: 70 Received thanks: 10 Member since: September 2012
    Sorry. Leider soll es erst ab SW 4.0.2 funktionieren.


    Gruß Grazzy
  • JennaJenna MemberComments: 39 Received thanks: 6 Member since: July 2012
    ich hänge mich hier mal an, bräuchte ebenfalls die Möglichkeit um einzelne Kategorien aus der linken Navigation auszublenden.

    Vielleicht kann jemand vom Shopware-Team die Zeile posten die in der categories_left.tpl geändert werden muß?

    Die Anleitung die für 3.5.6 funktionierte läuft bei 4.0.2 leider nicht mehr.

    Viele Grüße Jenna
  • Stefan HamannStefan Hamann AdministratorsComments: 2473 Received thanks: 443 Member since: June 2010
    So sollte das ab 4.0.2 funktionieren

    \templates\_emotion\frontend\index\categories_left.tpl
    {* Maincategories left *}
    {function name=categories level=0}
    	<ul class="{if !$level}categories{else}submenu{/if} level{$level}">
    	{block name="frontend_index_categories_left_ul"}{/block}
    	{foreach from=$categories item=category}
        {if $category.attribute1 != 1}
    	    <li {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}active{if $category.subcategories} sub{/if}{/if}"{/if}>
    			<a href="{$category.link}" {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}flag{if $category.subcategories} active{/if}{/if}"{/if}>
    				{$category.description}
    			</a>
    	    	{if $category.subcategories}
    		     	{call name=categories categories=$category.subcategories level=$level+1}
    		    {/if}
    	    </li>
        {/if}
    	{/foreach}
    	</ul>
    {/function}
    
    {if $sCategories}
    	{call name=categories categories=$sCategories}
    {elseif $sMainCategories}
    	{call name=categories categories=$sMainCategories}
    {/if}
    <div class="left_categories_shadow"></div>
    
    
  • GrazzyGrazzy MemberComments: 70 Received thanks: 10 Member since: September 2012
    Hallo

    Ich hab 4.0.2 installiert aber leider klappt das nicht bei mir.

    Ich hab es im _emotion Template, im default Verzeichnis und in meinem eigenen Template versucht.

    Hast Du noch eine Idee

    Gruß Grazzy

    ps. Die Funktion wäre doch als Standart bestimmt nicht verkehrt.
  • Stefan HamannStefan Hamann AdministratorsComments: 2473 Received thanks: 443 Member since: June 2010
    {* Maincategories left *}
    {function name=categories level=0}
       <ul class="{if !$level}categories{else}submenu{/if} level{$level}">
       {block name="frontend_index_categories_left_ul"}{/block}
       {foreach from=$categories item=category}
        {if $category.attribute.attribute1 != 1}
           <li {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}active{if $category.subcategories} sub{/if}{/if}"{/if}>
             <a href="{$category.link}" {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}flag{if $category.subcategories} active{/if}{/if}"{/if}>
                {$category.description}
             </a>
              {if $category.subcategories}
                  {call name=categories categories=$category.subcategories level=$level+1}
              {/if}
           </li>
        {/if}
       {/foreach}
       </ul>
    {/function}
     
    {if $sCategories}
       {call name=categories categories=$sCategories}
    {elseif $sMainCategories}
       {call name=categories categories=$sMainCategories}
    {/if}
    <div class="left_categories_shadow"></div>
    
    Sorry - so sollte es klappen. Es muss $category.attribute.attribute1 z.B. heißen.
    Thanked by 1Jenna
  • GrazzyGrazzy MemberComments: 70 Received thanks: 10 edited September 2012 Member since: September 2012
    Super danke.
    Im _emotion Verzeichnis klappt es schon mal

    Was kann ich tun damit es Updatesicher ist und in meinem eigenen Template steht?
    Mein template ist eine Kopie von Emotion green nur umbenannt.

    mit
    {extends file="parent:frontend/index/categories_left.tpl"}
    
    {* Maincategories left *}
    {function name=categories level=0}
       <ul class="{if !$level}categories{else}submenu{/if} level{$level}">
       {block name="frontend_index_categories_left_ul"}{/block}
       {foreach from=$categories item=category}
        {if $category.attribute.attribute1 != 1}
           <li {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}active{if $category.subcategories} sub{/if}{/if}"{/if}>
             <a href="{$category.link}" {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}flag{if $category.subcategories} active{/if}{/if}"{/if}>
                {$category.description}
             </a>
              {if $category.subcategories}
                  {call name=categories categories=$category.subcategories level=$level+1}
              {/if}
           </li>
        {/if}
       {/foreach}
       </ul>
    {/function}
      
    {if $sCategories}
       {call name=categories categories=$sCategories}
    {elseif $sMainCategories}
       {call name=categories categories=$sMainCategories}
    {/if}
    <div class="left_categories_shadow"></div>
    
    klappt es leider nicht und keine Kategorie wird links angezeigt egal was im freitextfeld steht

    Gruß Grazzy
  • Stefan HamannStefan Hamann AdministratorsComments: 2473 Received thanks: 443 Member since: June 2010
    Einfach in deinem eigenen Template das Verzeichnis index unterhalb von Frontend anlegen und dort die angepasste Datei categories_left.tpl ablegen.
    Thanked by 1Grazzy
  • GrazzyGrazzy MemberComments: 70 Received thanks: 10 Member since: September 2012
    Genau das hab ich ja getan. ;)

    Und der Inhalt ist genau der den ich gepostet hab.
    Nur erscheint dann keine Kategorie links, egal was in dem Freitextfeld steht.

    Hab ich nen Fehler in der ersten Zeile beim erben?

    Gruß Grazzy
  • GrazzyGrazzy MemberComments: 70 Received thanks: 10 Member since: September 2012
    Sorry

    Hatte mal wieder nen Tippfehler drin.
    Jetzt klappt es perfekt. :thumbup:
    Vielen vielen Dank Stefan

    Gruß Grazzy

    ps. so ist es richtig. :oops:
    {extends file="parent:frontend/index/categories_left.tpl"}
    
    {* Maincategories left *}
    {function name=categories level=0}
       <ul class="{if !$level}categories{else}submenu{/if} level{$level}">
       {block name="frontend_index_categories_left_ul"}{/block}
       {foreach from=$categories item=category}
        {if $category.attribute.attribute1 != 1}
           <li {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}active{if $category.subcategories} sub{/if}{/if}"{/if}>
             <a href="{$category.link}" {if $category.flag || $category.subcategories}class="{if $category.flag or $category.subcategories}flag{if $category.subcategories} active{/if}{/if}"{/if}>
                {$category.description}
             </a>
              {if $category.subcategories}
                  {call name=categories categories=$category.subcategories level=$level+1}
              {/if}
           </li>
        {/if}
       {/foreach}
       </ul>
    {/function}
      
    {if $sCategories}
       {call name=categories categories=$sCategories}
    {elseif $sMainCategories}
       {call name=categories categories=$sMainCategories}
    {/if}
    <div class="left_categories_shadow"></div>
    
    Thanked by 1Jenna
  • JennaJenna MemberComments: 39 Received thanks: 6 Member since: July 2012
    klappt perfekt, @Stefan, danke für den rasanten Support.

    Viele Grüße Jenna
    Thanked by 1Grazzy
  • GrazzyGrazzy MemberComments: 70 Received thanks: 10 Member since: September 2012
    Danke für die gute Zusammenarbeit.

    Gruss Grazzy
  • spielpiratspielpirat MemberComments: 36 Received thanks: 0 Member since: October 2012
    Hallo,

    ich habe genau diesen Quelltext in die categories_left.tpl eingefügt.

    Es passiert aber nicht, obwohl ich im Freitext eine 1 eingetragen habe und vernünftig gespeichert, Cache geleert und Browser aktualisiert habe.

    Die Änderung habe ich in der_emotions Template vorgenommen. Ich benutze das emotions orange Template und meine Shopwareversion lautet 4.0.3

    Beste Grüße

    Ergänzung:
    Ohne {extends file="parent:frontend/index/categories_left.tpl"} funktioniert alles. Ist diese Zeile nicht aber für die Updatesicherheit da? Oder ist es nicht notwendig, diese Zeile einzufügen.

    MFG
  • eblenafetseblenafets MemberComments: 1 Received thanks: 0 Member since: February 2013
    Ergänzung:
    Ohne {extends file="parent:frontend/index/categories_left.tpl"} funktioniert alles. Ist diese Zeile nicht aber für die Updatesicherheit da? Oder ist es nicht notwendig, diese Zeile einzufügen.
    Das würde mich auch interessieren ob die Zeile für die Updatesicherheit da ist.
    Bei mir funktioniert es auch nur wenn ich diese Zeile weglasse :-(
  • hthhth MemberComments: 1439 Received thanks: 321 Member since: October 2012
    {extends file="parent:frontend/index/categories_left.tpl"}

    ist nicht für die Updatesicherheit da, das hat damit überhaupt nichts zu tun, sondern mit dem Vererbungssystem und den "Blöcken" in Smarty.

    Updatesicher ist es, wenn Änderungen in ein eigenes Template geschrieben werden. Also einen neuen Pfad templates/emotion_MEINNAME/frontend/anlegen und dort dann die Verzeichnisse mit den Dateien des Templates, die geändert werden sollen. In diesem Fall:

    templates/emotion_MEINNAME/frontend/index/categories_left.tpl


    Die "extend-Zeile" ist eigentlich nur für "schreibfaule" gedacht. Wenn in einem Template ein Block definiert ist und ich möchte nur diesen Block ändern, aber alle übrigen Zeilen aus dem Standard-Template übernehmen, alsoe _default oder _emotion, dann sagt diese Anweisung genau das. Nimm alle Zeilen aus dem Standardtemplate, ergänze sie um den Block mit meinen Änderungen und ignoriere den gleichnamigen Block des Standardtemplates.

    So könnte man zum Beispiel den Block {block name="frontend_index_categories_left_ul"}{/block} ändern, ohne den ganzen Rest aus der categories_left.tpl mitzuschleppen.

    Findet man ein Template mit "extend-Zeile", muss man daher auch noch die gleichnamigen Dateien der Standrardtemplates ansehen, um zu wissen, wie die Datei aussieht, nachdem die Template-Engine von Shopware diese zusammengebastelt hat.

    Die zwei Standardtemplates machen das bei Shopware natürlich nicht unbedingt bei jeder Templatedatei übersichtlich .
Sign In or Register to comment.