Offen Template-Einstellung "Alle Kategorien aufklappen"

x42

Aktives Mitglied
19. Oktober 2013
5
0
Hallo,

ich arbeite im Auftrag für die Website - nicht für die Wawi (mit der Wawi hab ich absolut nix am Hut).


Mein Auftraggeber hat seit bestehen des Shop die o.g. Einstellung auf "nein". Template basiert auf Tiny.
Die letzten Tage hat er neue Kategorieboxen auf dem Live-Shop angelegt und entsprechend verschiedenen Kategoriezweigen die Box-ID in der Wawi als Kategorie-Attribut hinzugefügt.
Das funktioniert so, wie es soll:
Code:
*alle cats aufklappen = "nein"*
<box4>     - lade hersteller1 ID ohne Kinder hier rein, weil du kategorie-attr box4 hast
<box5>     - lade hersteller2 ID ohne Kinder hier rein, weil du kategorie-attr box5 hast

Ich bau gerade ein HTML5 responsive Theme ebenfalls basierend auf Tiny. In der funktions.php hatte ich nur paar CSS-Klassen getauscht. Beim entwickeln fand ich die Page-Requests auf Smartphones nervig, die man eben hat, wenn man von Unterkategorie zu Unterkategorie hüpft.

Problem gelöst: Auf dem Test-Shop *alle cats aufklappen = "ja"*
Bei kleinen Display fang ich dort jeweils die Elternkategorie mit JS ab, damit der User tatsächlich durch ein Menü klicken kann, währen der Desktop-User hingegen bei Klick auf den selben Link die Seiten der Unterkategorien aufruft.

Mein Auftraggeber hat heut beschlossen den gesamten Live-Shop in den Test-Shop zu laden. Mit einem Unterschied: *alle cats aufklappen = "ja"*
Jede Box, die irgendwo als Kategoriebox geladen wird und der Kategoriezweige explizit zugewiesen sind, rendert mit der Einstellung "ja" den gesamten Baum beginnend ab root. Das sieht dann so aus:
Code:
*alle cats aufklappen = "ja"*
<box4>
- lade hersteller1 ID und seine Kinder hier rein
- lade hersteller2 ID und seine Kinder hier rein
<box5>
- lade hersteller1 ID und seine Kinder hier rein
- lade hersteller2 ID und seine Kinder hier rein

Debug (id und parentId als data-attr): filterkrieg.jpg

Standard-Tiny anmachen und guggen, was JTL als Standard definiert.

Beim Standard-Tiny passierte hier nur leider gar nichts: filterkriegTiny.jpg
DOM sieht in beiden Fällen so aus: *alle cats aufklappen = "ja"* und *alle cats aufklappen = "nein"*

Wenn ichs ganz abstrakt betrachte, arbeitet die Einstellung, vgl 1. Screenshot, richtig, weil es per Definition heißt: render alles, was Du nur finden kannst.

Ich hab jetzt eine Stunde lang geprüft wo der Fehler liegen könnte: JS, das Box-Template, das Live-Shop-Template... jeweil mit Einstellung "ja" und "nein".
Und komme zu folgendem Ergebnis: es fehlt ein zusätzliches if. Ein Filter, der dann greift, wenn minstestens einer Kategorie dieses Attribut vergeben wurde. Dort wird dann einfach abgefragt, ob die Kategorie eine abweichende Elternbox via Kategorie-Atrribut hat und wenn ja: klammer sie bei der StandardBox aus und zeige sie nur in der per Attribut zugewisenen KategorieBox-ID.

Expected:
Code:
*alle cats aufklappen = "ja"*
<box4>
- lade hersteller1 ID und seine Kinder hier rein, weil du kategorie-attr box4 hast
<box5>
- lade hersteller2 ID und seine Kinder hier rein, weil du kategorie-attr box5 hast


Ich hab gerade nen Session-Dump gemacht, um die Struktur zu verstehen und ich hab ein paar Fragen (wie o. g. mit der Wawi hab ich nix zu tun):
  • Ich kann in der Wawi eine im Kategorie-Attribut "kategoriebox" mehrere KategorieBox-IDs zuweisen, oder nur eine (ist es immer int oder auch mal ein Array)?
    Code:
        ["KategorieAttribute"]=>     array(2) {       ["kategoriebox"]=>       string(1) "2"
  • in der box_kategorien.tpl steht das hier (reduziert):
    PHP:
    {assign var="nID" value=$oBox->kCustomID}
    {if isset($cKategorielistenHTML_arr[$nID])}
             {if $Einstellungen.template.categories.sidebox_categories_full_category_tree == "Y"}
                {$full_category_tree} {* <- ursache *}
             {else}
                {$cKategorielistenHTML_arr[$nID]}
             {/if}
    {/if}
    Meine Frage zu diesem Schnippsel ist, wie/wo ich ansetze. Erstellt wird das ganze hier:
    PHP:
    $smarty->assign('full_category_tree', get_categories($VerzweigungsKategorie, $RestArray, $tiefe, $current_cat_key, $KategorieBox, true));

    Egal ob im Template oder an der PHP-Funktion rumschnitzen: beides setzt vorraus, dass man die Session kennt.
  • Wie ist das Standard-Verhalten, wenn mein Kunde einer Kind-Kategorie ein "kategoriebox"-Atrribut zuweißt?

    Annahme:
    Code:
    box4
      hersteller1
        produktserie1

    wird zu (A)?
    Code:
    box4
      hersteller1
    box5
      produktserie1

    Oder passiert dann das hier (B)?
    Code:
    box4
      hersteller1
    box5
      hersteller1
        produktserie1
Ich hab nun 2 Anliegen:

  1. Ich such einen Ansatz von jemandem der die Session kennt und mir sagen kann, wie ich mein if einbaue um Konflikte (auch etwaige zukünftige) auszuschließen. Der einzige Grund, warum ich mich, ohne vorher hier zu fragen, weigere, an den PHP-Files rumzufummeln, ist der Umstand, dass ich auf dieses PHP4-Gematsch nicht klarkomme und nix kaputt machen will. Der Shop-Code ist zerbrechlich wie eine Glasvase.
  2. Wie auch immer das Ergebnis auf diesen Thread ausfällt, möchte ich vorschlagen, diesen, eigentlich zusätzlichen, Filter direkt im Tiny-Template zu verankern. Denn wenn ich das auf dem Testshop richtig sehe, hat jeder Tiny-Benutzer das Problem?


Ich danke für eure Aufmerksamkeit und wünsche noch einen angenehmen Abend.
 

Anhänge

  • filterkrieg.jpg
    filterkrieg.jpg
    105,6 KB · Aufrufe: 16
  • filterkriegTiny.jpg
    filterkriegTiny.jpg
    49,2 KB · Aufrufe: 15

x42

Aktives Mitglied
19. Oktober 2013
5
0
AW: Template-Einstellung "Alle Kategorien aufklappen"

Moin.

Hat ne Nacht gedauert den Kram zu backtracen. Lokal auf dem Test-Server funktioniert es.

Folgende Änderungen sind erforderlich gewesen:
PHP:
function gibKategorienHTML(...
{
...
// diese Zeile ist grundsätzlich falsch, weil sie mit jedem Call von gibKategorienHTML()
// full_category_tree überschreibt und damit immer nur die letzte KategorieBox an Smarty gebunden wird.
 $smarty->assign('full_category_tree', get_categories($VerzweigungsKategorie, $RestArray, $tiefe, $current_cat_key, $KategorieBox, true));  
// wird geändert in... wer da Bock drauf hat, macht ein Array draus:
$smarty->assign('full_category_tree_'.$KategorieBox, get_categories($VerzweigungsKategorie, $RestArray, $tiefe, $current_cat_key, $KategorieBox, true));
...
}

PHP:
function get_categories(...
{
...
    // in dem kontext, der hier benötigt wird sind diese 3 Zeilen um $include_nonselected_subcategories zu reduzieren:
    if (!$include_nonselected_subcategories && $KategorieBox>0 && $tiefe==0) {
        if ($Kategorie->KategorieAttribute[KAT_ATTRIBUT_KATEGORIEBOX] != $KategorieBox)
            continue;
    // wird also ersetzt durch
    if($KategorieBox>0 && $tiefe==0 && $Kategorie->KategorieAttribute[KAT_ATTRIBUT_KATEGORIEBOX] != $KategorieBox)
        continue;
...
}

filterSolution.jpg




Für die String-Variante mals assign wäre noch ein Modifier zu adden, weil Smarty kein $$foo erlaubt:

PHP:
function smarty_modifier_varvar($s)
{
    global $smarty;
    $r =& $smarty->_tpl_vars[$s];
    return $r;
} 
$smarty->register_modifier('varvar', 'smarty_modifier_varvar');

Das Template wird dann ebenfalls geändert:
Code:
         {if $Einstellungen.template.categories.sidebox_categories_full_category_tree == "Y"}
             {assign var=tmp value="full_category_tree_`$nID`"}
             {assign var=finally value=$tmp|varvar}
             {$finally}
         {else}
            {$cKategorielistenHTML_arr[$nID]}
         {/if}


Sofern mir noch jemand bestätigen kann, dass ich hier jetzt nix vergessen hab, flag ich den Thread als erledigt.
 

Anhänge

  • filterSolution.jpg
    filterSolution.jpg
    75,1 KB · Aufrufe: 11
Ähnliche Themen
Titel Forum Antworten Datum
Neu GPSR Verordnung - Wie handhabt ihr das im Shop mit dem Nova Template? Betrieb / Pflege von JTL-Shop 14
Neu jtl.evo.js über Child Template anpassen. Geht das? Technische Fragen zu Plugins und Templates 6
Neu Eigene Alerts im Template ausgeben bzw. hinzufügen Templates für JTL-Shop 0
Neu Child Template erstellen Technische Fragen zu Plugins und Templates 22
Neu Hotjar Code in Child Template header.tpl einbetten Templates für JTL-Shop 6
Neu Einbindung PHP. Datei ins Template - Wert aus PHP Datei lesen Templates für JTL-Shop 5
Neu Per Plugin Felder für das Newsletter-Anmeldungs-Template hinzufügen Technische Fragen zu Plugins und Templates 2
Neu Nova Template (Praesentium veritatis sunt dicta cum....) entfernen? Gelöste Themen in diesem Bereich 4
Neu Kann ich das alte EVO-Template löschen? Templates für JTL-Shop 2
Neu Änderungen in Template werden nicht angezeigt Templates für JTL-Shop 1
Neu Attributnamen im Nova 5 Template ausblenden Templates für JTL-Shop 3
Neu JTL Template Dienstleistung, Jobs und Ähnliches 0
Neu Im Template auslesen, ob OPC aktiv Templates für JTL-Shop 5
Neu IT-Recht Kanzlei Plugin v 1.0.7 - Einstellung PDF anhängen deaktiviert sich immer wieder Plugins für JTL-Shop 16
Neu Einstellung Standardsortierung überschreibt individuelle Sortierung für "besondere Artikel" JTL-Shop - Fehler und Bugs 1
Neu Nach Update von 5.0.x auf 5.3.3 funktioniert "Mindestanzahl Verkäufe für Bestseller" Einstellung in Englischer Sprache nicht mehr Installation / Updates von JTL-Shop 0
Neu Einstellung zu Versandkostenfrei User helfen Usern - Fragen zu JTL-Wawi 1
Neu Einstellung: automatisch picken (scannen) ohne OK Bestätigung Gelöste Themen - JTL-WMS / JTL-Packtisch+ 5
Neu Einstellung 122 "Artikel / Kategorien erst nach Anmeldung sichtbar" JTL-Shop - Fehler und Bugs 4
Neu Bilder für alle Plattformen verwenden User helfen Usern - Fragen zu JTL-Wawi 3
Gelöst unter "Alle Bons" werden keine Bons angezeigt JTL-POS - Fehler und Bugs 2
Neu Vererben der Bildern einer Variation auf alle anderen Variationen, wie beim Vererben von Vater zu Kind-Artikeln, möglich wie? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Bei VarKombi-Artikeln, wie immer eine Farbe und Größe vorauswählen, damit alle Bilder angezeigt werden? Allgemeine Fragen zu JTL-Shop 4
Neu Seit gestern alle indexierten URLs / Permalinks geändert (Query-Parameter) JTL-Shop - Fehler und Bugs 6
[Bug] 🐞 Verkauf -> Rechnung -> Filter Dropdown [Alle Rechnungen, Rechnungen aus JTL Wawi, Importierte Rechnungen] Rotes X JTL-Wawi 1.9 0
Neu Ändern der Artikelseite / OPC ändert nur Seite für einen Artikel / Suche nach globale Lösung für alle Artikelseiten Templates für JTL-Shop 5
Neu Hersteller Dropdown / Footerbox / nicht alle Hersteller werden gezeigt Gelöste Themen in diesem Bereich 9
Wichtig 👉 Sicherheitslücke in JTL-Shop 5 bis 5.3.2 (betr. alle Versionen des Shopsystems) News, Events und Umfragen 17
Neu Welche Artikel werden zu Shopify übertragen? Alle? Shopify-Connector 5
Neu Suche Ameisen Export, der mir alle aktiven Amazon Angebote ausgibt. JTL-Ameise - Fehler und Bugs 3
Neu Alle Druckvorlagen auf einmal exportieren User helfen Usern - Fragen zu JTL-Wawi 3
Neu Antwort an alle Senden Servicedesk (Beta) 2
Neu Alle Pakete mit Status "unbekannt" JTL-Track&Trace - Fehler und Bugs 6

Ähnliche Themen