Warenkorb Button im Header erst einblenden, wenn etwas hineingelegt wird..

Thema wurde von daniel_walker, 28. Februar 2019 erstellt.

  1. daniel_walker

    daniel_walker Mitglied

    Registriert seit:
    20. Juli 2018
    Beiträge:
    9
    Danke erhalten:
    0
    Hallo zusammen!

    Ich möchte den Cart Button im Header erst einblenden, wenn er ein Produkt enthält.
    Im Backend habe ich keine Funktion gefunden.
    In der index.html gibt es ein {if !$hideCart}, die das einblenden regelt.
    Aber wie wird die Variable gesetzt?

    Schöne Grüße
    Lars
     
  2. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Da musst du dann etwas Javascript anwenden. Ob etwas im Warenkorb ist oder nicht, wird sich normal oft ändern während du auf einer Seite verweilst und die nicht neugeladen wird, das heisst du musst dynamisch am DOM manipulieren.
     
  3. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Geht das nicht auch mit einer einfachen "if..." abfrage?
    müsste doch so gehen wie bei mir, ohne Inhalt ein leerer Wagen, ist etwas im WK ein voller.
     
  4. ReneT

    ReneT Erfahrener Benutzer

    Registriert seit:
    1. Dezember 2016
    Beiträge:
    708
    Danke erhalten:
    232
    Danke vergeben:
    67
    kannst du mal bitte den Code dafür hier einstellen?
     
  5. daniel_walker

    daniel_walker Mitglied

    Registriert seit:
    20. Juli 2018
    Beiträge:
    9
    Danke erhalten:
    0
    Hallo Wilken,

    vielen Dank für Deine Antwort.
    Ich denke es reicht, wenn der Warenkorb einmalig ausgeblendet ist und wenn etwas drin ist, er wieder erscheint. Ich habe folgenden Lösungsansatz:

    In box_cart_head-USERMOD.html
    Code:
    <nav id="cart-container" class="navbar-cart {if $empty != 'false'} carthidden{/if}" data-gambio-widget="menu cart_dropdown" data-menu-switch-element-position="false">
    also einen Style ({if $empty != 'false'} carthidden{/if}) bei leerem Warenkorb hinzufügen und im Stylesheet carthidden auf "display:none !important" setzen.

    Könnte es Probleme geben?

    Wenn der Warenkorb geleert wird, ist die Anzeige zwar immernoch da aber beim nächsten Seitenrefresh wieder verschwunden.

    Schöne Grüße
    Lars
     
  6. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Das Problem wird soweit ich das trocken einschätze sein:

    Ein Kunde ist auf einer Artikelseite und tut etwas in den Warenkorb, der kommt aber nicht, der bleibt weg. Erst nach einem Klick auf eine andere Seite oder refresh ist der bei einer PHP Lösung dann da.

    Das bedeutet: Der Kunde hat quasi keinen Weg in den Checkout, bis er an einen neuen Ort geirrt ist. Der bleibt hängen.
     
  7. daniel_walker

    daniel_walker Mitglied

    Registriert seit:
    20. Juli 2018
    Beiträge:
    9
    Danke erhalten:
    0
    Aber wenn ich den "In den Warenkorb" -Button betätige, gibt es einen Seitenrefresh und das Stylesheet greift. Nur wenn ich das Produkt aus dem Warenkorb entferne bleibt er noch stehen, verschwindet dann aber wieder nach Seitenwechsel.
     
  8. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    ich habe das erstmal simpel, muss das mal auf if...else...ändern :)

    Code:
    {*<i class="gm-cart-basket"></i>*}
                <span class="basket">
                    {if $productsCount == 0}
                        <img src="{$tpl_path}icon-grey-basket-big.png" alt="" />
                    {/if}
                    {if $productsCount > 0}
                        <img src="{$tpl_path}shopping-cart-icon-full.png" alt="" />
                    {/if}
                </span>