[gelöst] zweiten Menublock left mit Kategorie anlegen

Hallo, ich möchte unter dem linken Menu einen weiteren Menublock aus Kategorien anlegen. Menu 1 (jetzt vorhanden) - Rotwein - Weisswein - Sekt Menu 2 (alle Hersteller gelistet mit zugehörigen Produkten) - Hersteller A - Hersteller B Problem ist das ich den Hersteller Block nicht ins erste Menu legen möchte, da dieser sich optisch unterscheiden soll und einen margin-top zum oberen linken Menu haben soll. Im Grunde fehlt mir die Möglichkeit eine CSS ID zu vergeben um den Punkt Hersteller anders darstellen zu können. Läßt sich das über categorie_left.tpl irgendwie lösen, das man dort 2 Menus left ausgibt, aber im 2. Menu eben nur den Hauptpunkt Hersteller über die System-ID samt der dazugehörigen Unterpunkte anspricht? Viele Grüße Jenna

Hallo Jenna, du könntest es evtl über die Kategorie-Attribute lösen, dann benötigst du nicht die ID und bist etwas flexibler. Also so (ungetestet): [code] {* Maincategories left *} {function name=categories level=0}

{block name=„frontend_index_categories_left_ul“}{/block} {foreach from=$categories item=category} {if $category.attribute.attribute1 == 1} - {$category.description} {if $category.subcategories} {call name=categories categories=$category.subcategories level=$level+1} {/if}
{/if} {/foreach} {/function} {if $sCategories} {call name=categories categories=$sCategories} {elseif $sMainCategories} {call name=categories categories=$sMainCategories} {/if}

[/code] Anschließend musst du in der gewünschten Kategorie im Attribut-Feld 1 eine „1“ eintragen, dann wird diese Kategorie angezeigt. Gruß Manuel

1 „Gefällt mir“

Hallo Manuel, grandios…kann ich nur sagen, klappt perfekt. Ich habe den Bereich zwischen foreach 2 x eingefügt und jeweils [code]{if $category.attribute.attribute1 == 1} {if $category.attribute.attribute2 == 2}

[/code] eingetragen. Jetzt habe ich 2 sauber getrennte Menublöcke und den Abstand über left_trenner per CSS gesetzt, klasse… 1000 Dank. Grüße Jenna

Hallo Jenna, weiß zwar nicht genau, warum du den Bereich 2x eingefügt hast, denn es sollte auch so funktionieren. Jetzt hast du noch das 2. Attribut mit einbezogen, wenn du da eine 2 einträgst. Im Prinzip brauchst du nur dein Trenner-Div einfügen. Oder hast du jetzt 3 Menüs? Gruß Manuel

Hallo Manuel, nee, ich habe weiterhin 2 Menus;) Lasse ich attribute2 plus dem 2. foreach-Bereich weg, dann bezieht sich mein left_trenner auf jeden Menupunkt. Heißt, ich habe die 20px margin-top bei allen Kategoriepunkten. Setze ich den left_trenner aber nur unter attribute2, dann hebt sich genau der Bereich ab, der den Abstand haben soll. Beziehungsweise jeder Menupunkt mit atrribute2 hat die 20px margin-top und mit attribute1 die Standardansicht. Grüße Jenna

Ah OK, ich denke ich weiß jetzt, wo du hin willst. Dann würde ich dem li eine andere class mitgeben, das macht es etwas einfacher. [code] {foreach from=$categories item=category} {if $category.attribute.attribute1 == 1}

  • {$category.description} {if $category.subcategories} {call name=categories categories=$category.subcategories level=$level+1} {/if}
    {/if} {/foreach} [/code] Also in dem Fall, wenn in Attribut 2 eine 2 eingetragen ist, bekommt diese Kategorie die class „trenner“ mit. Dann kannst du das per CSS anpassen. Gruß Manuel

Hallo Manuel, ich bekomme bei der Version eine Error Meldung: Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template "/mukaskjg/demo403/templates/emotion\_demowein/frontend/index/categories\_left.tpl" on line 7 "\<li {if $category.flag || $category.subcategories}class="{if $category.attribute.attribute2 == 2}trenner{if} {if $category.flag or $category.subcategories}active{if $category.subcategories} sub{/if}{/if}"{/if}\>" missing if condition' in /mukaskjg/demo403/engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php:657 Stack trace: #0 /mukaskjg/demo403/engine/Library/Smarty/sysplugins/smarty\_internal\_compile\_if.php(37): Smarty\_Internal\_TemplateCompilerBase-\>trigger\_template\_error('missing if cond...', 7) #1 /mukaskjg/demo403/engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php(465): Smarty\_Internal\_Compile\_If-\>compile(Array, Object(Smarty\_Internal\_SmartyTemplateCompiler), Array, NULL, NULL) #2 /mukaskjg/demo403/engine/Lib in /mukaskjg/demo403/engine/Library/Smarty/sysplugins/smarty\_internal\_templatecompilerbase.php on line 657 Meine umständlichere Variante funktioniert bestens, will dir nicht zusätzlich Mühe machen, falls du aber einen Tipp zu deiner gekürzten foreach hast, probiere ich das gern. Herzlichen Dank, grüße Jenna

Hallo Jenna, glaube, ich habe den Fehler gefunden. Da fehlt ein / damit das if beendet wird. [code] {foreach from=$categories item=category} {if $category.attribute.attribute1 == 1}

  • {$category.description} {if $category.subcategories} {call name=categories categories=$category.subcategories level=$level+1} {/if}
    {/if} {/foreach} [/code] So dürfte es keine Probleme mehr geben. Gruß Manuel

Hallo zusammen, habt ihr auch ein Beispiel für eine normale 2. Kategoriebox (also ohne Attribut = normales Menu / mit Attribut 1 = 2. Menu)? Komme da noch nicht ganz hinter und das würde sehr helfen! Vielen Dank & mit freundlichen Grüßen Patrick

Hallo Manuel, vielen Dank, jetzt ist die Fehlermeldung weg. @Patrick: Mit dem Beispiel kannst du ja beliebig neue Kategorieblöcke anlegen, je nachdem wie du deine Freitextfelder steuerst und die CSS Anweisung schreibst, hast du dann den Abstand zum überliegenden Menupunkt. Viele Grüße Jenna

Hi Jenna, werde es probieren. Spätestens beim css steige ich aber momentan leider noch aus. Trotzdem danke für deine Antwort! Gruß Patrick

Hallo Patrick, guck mal wie weit du kommst und beschreib dann genau (am besten mit Codeschnipsel) was du in der .tpl angestellt hast, bzw. was funktioniert und was nicht. CSS sieht bei mir wie folgt aus: div.left_trenner { border-top: 1px solid #CCCCCC; margin-bottom: 30px; } setzt aber voraus das du auch die div.left-trenner benutzt, wenn du das „mein-abstand“ nennst dann muß das auch in der .tpl so benannt sein. border-top setzt hier den fehlenden sauberen Rand unter das letzte Menu, bevor der nächste Block anfängt und margin-bottom ist der Abstand eines neuen Menu-Blocks zum darüber liegenden Menu. Viele Grüße Jenna

1 „Gefällt mir“

Hi Jenna, vielen Dank für die Hilfe. Hat auch grundsätzlich funktioniert, allerdings habe ich nun 2 Probleme. Hier die tpl (zwischen foreach): [code] {if $category.attribute.attribute1 == 1}

  • {$category.description} {if $category.subcategories} {call name=categories categories=$category.subcategories level=$level+1} {/if}
    {/if} {if $category.attribute.attribute1 == 2}

  • {$category.description} {if $category.subcategories} {call name=categories categories=$category.subcategories level=$level+1} {/if}
    {/if}[/code] 1. Problem: Die letzte Kategorie mit Attribut 2 hat keinen unteren Rand 2. Problem: Dadurch das die letzte Kategorie mit Att.2 keinen Rand hat, werden die Filter direkt unter dieser letzten Kategorie zusammenhängend angezeigt. Hängt wahrscheinlich beides miteinander zusammen. Könntest Du mir da noch einen Tipp geben? Danke & Gruß Patrick

Hallo Patrick, ich habe das wie folgt gelöst: Weinerzeuger = Hauptkategorie = In Freitextfeld 2 = 2 - Hersteller A Unterkategorie von Weinerzeuger = In Freitexfeld 1 = 1 - Hersteller B Unterkategorie von Weinerzeuger = In Freitexfeld 1 = 1 usw… Mein CSS: div.left_trenner { border-top: 1px solid #CCCCCC; margin-bottom: 30px; } ist zuständig für: {if $category.attribute.attribute2 == 2}

bei Dir steht: {if $category.attribute.attribute1 == 2} Also die Hauptkategorie die sich abheben soll vom Menublock darüber hat attribute2 das

steht bei mir bei attribute2 == 2 Damit erzeugst du den fehlenden Rand. Alle meine anderen Kategorien haben in Freitextfeld 1 = 1 Nur die sich abheben sollen haben in Freitextfeld 2 = 2 Das geht mit Sicherheit einfacher, aber es funktioniert so momentan wunderbar und für Tuning fehlt mir grad der Nerv, da ich schon wieder am nächsten Problem sitze. Viele Grüße Jenna

Hi Jenna, so ist es ja auch bei mir. Nur die Kategorien die sich abheben sollen bekommen die 2. Leider ist es aber so, dass die letzte Kategorie keinen unteren Rand hat. Hab nochmal ein Bild gemacht zur besseren Übersicht: “Unser Blog” und “Downloads” sollen sich abheben, haben die 2. Leider wird die letzte Kategorie nicht abgeschlossen, sie hat keinen unteren Rand. Das führt dazu, dass sobald Filter eingeblendet werden diese direkt unter die letzte Kategorie gehangen werden, quasi ohne Rand. Hast du da ne Idee? Danke & Gruß Patrick

Hi zusammen, noch kurz zur Auflösung: Ich habe einen weiteren Container erstellt, welcher nun zum Abschluss der letzten Kategorie (Attribut=3) gesetzt wird. Seitdem wird auch die letzte Kategorie sauber abgeschlossen. Vielen Dank für die Hilfe! Gruß Patrick