Intransparenz durch Offcanvas-Warenkorb: Nutzung evtl. abmahngefährdet?

Ich hab noch ein bisschen weiterüberlegt und muss meine Aussage teilweise relativieren. Ich habe mich gefragt, wann der Kassenbutton als Quick-Checkout nicht vielleicht doch sinnvoll sein könnte. Zum einen natürlich - wie oben erwähnt - nur dann, wenn der Shop eine sehr simple Versandkostenregelung hat und die auch prominent im Frontend angepriesen wird, dass der Kunde schon weiß, was Sache ist sowie auch nur dann, wenn ich Zusatzfunktionen wie Mindestbestellwert etc. nicht benutze, klar. Es dürfen halt keine unvorhergesehenen Schweinereien mehr auftreten.

Aber das eigentliche Problem in meinem Fall war ja, dass Neukunden unverhofft die Registrierungsseite vor den Latz geknallt kriegen. Ein angemeldeter Stammkunde wäre geschmeidig bis zur Bestellabschlusseite durchgereicht worden und der hätte sich auch nicht an den Versandkosten gestört. Ergo: Der Kassenbutton darf nur dann gezeigt werden, wenn der Kunde eingeloggt ist. Alle anderen müssen über den Warenkorb. Das wäre eine Möglichkeit, wie man beide Vorteile behalten könnte.

Wenn ich das richtig verstanden habe - und folgende Info noch aktuell ist -, kann man den Login-Status aber im Theme nicht ohne weiteres abfragen. Hierzu muss man erst eine Globalvariable verfügbar machen:

Wenn das dann läuft, könnte man das Template wie folgt anpassen (ungetestet):

{extends file="parent:frontend/checkout/ajax_cart.tpl"}

        {* Basket link *}
        {block name='frontend_checkout_ajax_cart_button_container'}
            {if $sUserLoggedIn}
                
                    {block name='frontend_checkout_ajax_cart_button_container_inner'}
                        {if !($sDispatchNoOrder && !$sDispatches)}
                            {block name='frontend_checkout_ajax_cart_open_checkout'}
                                
                                    
                                    {s name='AjaxCartLinkConfirm'}{/s}
                                
                            {/block}
                        {else}
                            {block name='frontend_checkout_ajax_cart_open_checkout'}
                                
                                    
                                    {s name='AjaxCartLinkConfirm'}{/s}
                                
                            {/block}
                        {/if}
                        {block name='frontend_checkout_ajax_cart_open_basket'}
                            
                                
                                {s name='AjaxCartLinkBasket'}{/s}
                            
                        {/block}
                    {/block}
                
            {else}
                
                    {block name='frontend_checkout_ajax_cart_button_container_inner'}
                        {block name='frontend_checkout_ajax_cart_open_basket'}
                            
                                
                                {s name='AjaxCartLinkBasket2'}{/s}
                            
                        {/block}
                    {/block}
                
            {/if}
        {/block}

Hier habe ich einen weiteren Textbaustein AjaxCartLinkBasket2 definiert, den muss man im System noch anlegen und mit „Warenkorb anzeigen“ füllen. So sollte es laufen. Aber auch diese abgeschwächte Form taugt wohl nicht als allgemeine Empfehlung, ich lasse den Kassenbutton erstmal komplett weg.

1 „Gefällt mir“

Wo wir jetzt am basteln sind:
Oben das ist ja nicht updatesicher, da Du so jede Änderung im BARE auch in Dein Theme übertragen musst. Wenn “eingeloggt” kopierst Du den ganzen Originalblock, den kannst Du aber auch durch {$smarty.block.parent} inline einbinden.

{extends file="parent:frontend/checkout/ajax_cart.tpl"}

{* Basket link *}
{block name='frontend_checkout_ajax_cart_button_container'}
 {if $sUserLoggedIn}
  {$smarty.block.parent} 
 {else}
  
   {block name='frontend_checkout_ajax_cart_button_container_inner'}
    {block name='frontend_checkout_ajax_cart_open_basket'}
     
                                
                                {s name='AjaxCartLinkBasket2'}{/s}
     
    {/block}
   {/block}
  
 {/if}
{/block}

 

1 „Gefällt mir“

dieser code „Ihr legt in eurem Theme eine neue checkout/ajax_cart.tpl mit folgendem Inhalt an:“

 

scheint nicht sauber zu funktionieren, da jetzt NUR der Warekorb-button angezeigt wird.

1 „Gefällt mir“

@Gesundwürzen schrieb:

scheint nicht sauber zu funktionieren, da jetzt NUR der Warekorb-button angezeigt wird.

Das funktioniert. Die erste Zeile gehört auch dazu. Bitte die Template-Vererbungsregeln beachten!
Getting started with Shopware templating

1 „Gefällt mir“

@sonic schrieb:

 Du aber auch durch {$smarty.block.parent} inline einbinden.

Jou, stimmt! Hatte drauf gehofft, dass meine Lösung zum Standard erhoben wird Wink

2 „Gefällt mir“

Welcher code wäre nun der aktuell richtige?

:slight_smile:

 

Ich fand die Bezeichnung der beiden Buttons auch etwas irreführend. Im Prinzip hat es zwar funktioniert. Allerdings habe ich auch in letzter Zeit viele Registrierungen ohne Bestellung. Das Eingangs beschriebene Argument könnte ich mir da als Erklärung vorstellen.

Daher habe ichdie Textbausteine geändert:

Zur Kasse -> Direkt zur Kasse

Warenkorb bearbeiten -> Warenkorb prüfen

Dann kann ich noch hoffen, dass vorsichtige Kunden zuerst prüfen. Aber ich muss nichts am Template ändern… Mal sehen, wie es sich auswirkt.

NACHTRAG: Jetzt bin ich gerade nicht mehr sicher, ob ich die richtigen Textbausteine erwischt habe.

frontend/checkout/ajax_cart              AjaxCartLinkBasket

frontend/checkout/actions                 CheckoutActionsLinkProceedShort

Sind die korrekt? Trotz cache leeren sehe ich noch nichts…

1 „Gefällt mir“

Bei Textbausteinen hilft eben manchmal nicht das „schelle“ Leeren vom Cache. Leider ist im Textbaustein direkt kein Namespace angegeben, habe auch gerade nicht eine original vom Bare parat, ob da ein Namespace angegeben ist. Lösche mal zusätzlich in den Performanceeinstellungen auch den Cahce für die Shopwareconfiguration. Ich habe das oft, dass bei Textbausteinen das nornale „Cache löschen“ nicht hilft.

1 „Gefällt mir“

Klappt klasse: :slight_smile:

Habe es nochmals zusammengefasst:

Datei im eigenen Theme im Ordner Checkout anlegen. Dateiname ajax_cart.tpl

Da diesen Code reinkopieren:

 

{extends file="parent:frontend/checkout/ajax_cart.tpl"}

{* Basket link *}
{block name='frontend_checkout_ajax_cart_button_container'}
 {if $sUserLoggedIn}
  {$smarty.block.parent} 
 {else}
  
   {block name='frontend_checkout_ajax_cart_button_container_inner'}
    {block name='frontend_checkout_ajax_cart_open_basket'}
     
                                
                                {s name='AjaxCartLinkBasket2'}{/s}
     
    {/block}
   {/block}
  
 {/if}
{/block}

 

Dann einen Textbaustein anlegen:

Namespace: frontend/checkout/ajax_cart
Name: AjaxCartLinkBasket2
Text: Zum Warenkorb

 

Dann Chache komplett leeren und Theme kompilieren.

Das schöne daran ist, dass die Schaltfläche “Zum Warenkorb” ohne den “zur Kasse” Button, nur eingeblendet wird, wenn man nicht eingeloggt ist. Somit muss jeder Neukunde erstmal in den grossen Warenkorb. Sobald man aber eingeloggt ist, bestehen die Buttons “zur Kasse” und “Warenkorb bearbeiten” nach wie vor.

Dankeschön euch allen für diese tolle Lösung. :slight_smile:

Viele Grüße

Matthias

 

3 „Gefällt mir“

Danke Matthias, das teste ich :slight_smile:

Total genial und mit dieser Anleitung einfach einzurichten Thumb-Up

Danke dafür! Wird das eigentlich noch in den Standard überführt werden?

Wird das eigentlich noch in den Standard überführt werden?

Wohl eher nicht, es sei denn, Du legst dazu ein Ticket an, und bekommst mindestes 1000 Votes - dann vielleicht in SW 7.0  Wink Aus dem Forum heraus dürfte das nichts werden.

Würde man im ersten

{s name='AjaxCartLinkBasket2'}{/s}

gleich den Text als default mit eintragen

{s name='AjaxCartLinkBasket2'}Zum Warenkorb{/s}

Wird beim ersten Rendern der Textbaustein gleich mit diesem Wert belegt und angelegt.

[Edit]
Nachtrag: Ich weiss jetzt nicht genau, WANN der Textbaustein erzeugt wird. Er wird ja 2x eingebunden - ob er dann schon an der zweiten Stelle erzeugt ist, weiss ich nicht. Für den Fall würde ich einfach an beiden stellen den gleichen Defaultwert eintragen  Halo

Das ist ja toll, wieder was dazugelernt! Thumb-Up

Wer sich mit Pull Requests auf Github auskennt, könnte versuchen, die Änderung über diesen Weg reinzubekommen:
shopware/themes/Frontend/Bare at 5.2 · shopware/shopware · GitHub

Danke, Jungs und Mädels! Funzt einwandfrei!  Thumb-Up

Auch von mir an dieser Stelle in fettes Dankeschön! Habe es eingebaut und es funktioniert einwandfrei!
Hatte ebenfalls das Phänomen, dass ich durchaus abgebrochene Bestellungen hatte oder aber auch Kunden, die sich registriert haben, aber nie bestellt haben.

Vielleicht kann man die Quote dadurch verringern.

@pierre-schmitz‍   Wie hat es sich auf deinen Shop ausgewirkt. Ist es besser geworden?

Würde es auch toll finden, wenn es von Shopware selbst als “Standard” übernommen würde!