Im login button im topmenue soll statt "Mein Konto" nach login, kundenname oder text stehen.

Hallo Leute,

Ich bin relativ neu bei Shopware und überhaupt in der Frontend Entwicklung, daher sorry wenn die Frage blöd ist.

Wie schon der Titel sagt, möchte ich, dass nach erfolgreichem Login, der Name des Kunden statt „Mein Konto“ im Login Button erscheint. Oder zumindest irgendein Text, der dem Kunden zeigt, dass er eingeloggt ist. Habe hier im Forum gesucht und leider nur wenig dazu gefunden.

immerhin weiß ich, dass die Datei /themes/Frontend/Bare/widgets/checkout/info.tpl etwas damit zu tun hat, aber ich konnte mit ihrem Inhalt nicht viel anfangen.

Bin für jeden Ansatz dankbar.

Gruß

  

Wenn ich das auf die Schnelle richtig sehe, kommt der Text aus dem Textbaustein IndexLinkAccount in frontend/index/checkout_actions
Evtl. geht es so diekt im Textbaustein:

{if $sUserLoggedIn}Neuer Text{else}Mein Account{/if}

Aber bedenke: Wird der Text zu lang, wird der Button zu breit und haut alles im Design über den Haufen.

2 Likes

Danke für die super schnelle hilfe! Der code funktioniert, aber sobald man die anmeldeseite verlässt, steht dort wieder “Mein Konto”. Habe alle textbausteine, die “Mein Konto” enthalten mit deinem code ergänzt aber es bleibt dabei. Außerdem bleibt der neue text stehen wenn man sich wieder abmeldet.

*hmm* ich habe mit der {if} meine info.tpl ergänzt, und zwar einen EXIT-Button eingebaut - müsste also so klappen.
Bei geänderten Textbausteinen sollte man auch mal den Cache für die Konfiguration extra leeren, der Templatecache sollte auch geleert werden.

Ich habe nur unmittelbar nach dem Logout eine Falschanzeige, weil beim Logout VOR dem Löschen der Session das Template mit den Userdaten gefüllt wird  *Shopware BUG*   - Schönheitsfehler.  Undecided Nach einen weiteren Klick sollte also der alte Text kommen.

Lösch mal alle Cache - sonst kann auch auch nur *mit den Schultern zucken*

Gibts auch ein Modul dazu!

Siehe http://store.shopware.com/dtgs308640361645/individuelle-login-button-beschriftung.html

1 Like

Man muss nicht wirklich für jeden Kleinkram immer gleich (s)ein überteuertes Produkt anpreisen. Was ws_sr will, geht zur Not auch mit einer simplen Templateanpassung. Dafür ein Plugin für 59EUR kaufen, was evtl. mit der nächsten SW-Version schon wieder nicht läuft?
Die dauernde Pluginwerbung zu jeden *Kinderkram* hier im Forum ist einfach nur noch nervig!

1 Like

Ich bin nicht der Anbieter des Plugins!

Wollte nur eine weitere Lösungsmöglichkeit aufzeigen!

Kann ja jeder entscheiden was ihm zusagt!

Ich habe jetzt in meinem Testshop einfach mal

{if $sUserLoggedIn}{$sUserData.additional.user.firstname} {$sUserData.additional.user.lastname}{else}Mein Konto{/if}

in den einen Textbaustein eingetragen und den Cache geleert. Solange ich angemeldet bin, erscheint im Button mein Name. Müsste man ggf. noch mit smarty bei Überlänge trimmen.

Bei Rückfrage gebe ich gerne einen PayPal-Link für 59EUR Spenden Wink 

2 Likes

Funnktioniert tadellos, Vielen dank! Ich will auch möglichst auf plugins verzichten, bläht den shop auf und man lernt leider wenig über die funktionsweise der software. 

Ich habe gerade das gleiche Problem und war gerade sehr froh, dass ich diesen sehr aktuellen Eintrag gefunden habe. Jedoch funktioniert auch die letzte Vorgehensweise bei mir nicht. Lediglich auf der “Mein Konto”-Seite wird mein Name im Button angezeigt. Gehe ich zurück zur Startseite ist der Button leer (also nur das kleine Icon ist zu sehen).

Hast du da noch eine Idee, woran das liegen kann?

Wie “gehst” Du zurück zur Startseite? Per “Backbutton” oder per Click auf “home”?
Wenn “Backbutton” könnte es ggf. eine falsche Session sein.

Die hier beschriebene Lösung ist leider nicht in allen Fällen optimal: Der Textbaustein befindet sich in einem Teil des Templates, der von Shopware komplett in den Cache abgelegt wird. Habt ihr also den HTTP-Cache aktiviert wird auch der Text im Cache abgelegt. Das kann zu folgendem Problem führen:

Kunde A loggt sich ein. Er besucht eine Artikeldetailseite, die nicht im Cache liegt. Diese wird nun “gecached”. Kunde B besucht dieselbe Artikeldetailseite. Problem: Kunde B sieht nun den Namen von Kunde A auf dem Button. 

Oder Kunde A öffnet die Artikeldetailseite im nicht eingeloggten Zustand. Dann sieht jeder nachfolgende Besucher auch die nicht eingeloggte Version des Textes.

Wenn ihr die Anpassung in irgendeiner Datei im /widgets/ Ordner anlegt tritt dieses Problem nicht auf. Daher funktioniert diese Lösung auch wenn man die widgets/checkout/info.tpl anpasst oder der HTTP-Cache deaktiviert ist. (Dies kann jedoch zu Performance Einbußen führen)

Viele Grüße

Wenn Textbausteine pauschal “gecached” werden, dürfte man generell kein Smarty-Parsen in denen machen.
Wie auch immer: Ich habe es so ausprobiert und getestet, und konnte das von Dir geschilderte Verhalten erst einmal nicht so nachvollziehen. Werde mir das in einer stillen Stunde aber noch einmal angucken.  Wearing-Sunglasses

Naja nicht die Textbausteien direkt sondern die komplette Seite (bis auf Ausnahmen die mit dem {action …}-Plugin eingebunden werden). Aber du hast den Code ja selbst nicht in einem Textbaustein sondern innerhalb der /widgets/checkout/info.tpl eingebaut. Wie gesagt sind .tpl Dateien in /widgets nicht betroffen ( da diese durch das Action Plugin später in ESI Tags umgewandelt werden.) Mehr dazu hier wie das Ganze funktioniert ist hier sehr schön erklärt.

Dies betrifft dich aber auch nur wenn duden HTTP-Cacheoder andere Caches wie Varnish aktiviert hast.

Viele Grüße

2 Likes

NeinNeinNein - ich nehem alles Zurück und behaupte das Gegenteil!
Ich habe meinen “EXIT Button” in der tpl - stimmt - und darum habe ich kein Problem.

Mit ESI action und co. das kenne ich - aber verstehen tu ich es dennoch nicht :wink:
Ich habe es noch einmal gegen getestet, und in der Tat: Es wir wenn einer angemeldet ist, der Name vom zuerst nach Cache Leeren angemeldeten angezeigt.
Aber nur, wenn einer angemeldet ist. Warum nimmt das {action} zwar unterschiedliche für “angemeldet” / “nicht angemeldet”, aber nicht unterschiedliche für “user 1” und “user 2”? Ist mir grad zu hoch - dann halt über die TPL.

Der Textbaustein wird ja über das widget eingebunden.

@sonic schrieb:

Der Textbaustein wird ja über das widget eingebunden.

Genau hier liegt das Problem: Der Textbaustein für den „Mein Konto“-Button ist leider in:  frontend /index/checkout_actions.tpl und nicht in widgets  Wink

*Grübel*
Reden wir vom “Pfad” in den Textbausteinmanager? Dann wäre es der “Namespace” - dann aber ohne “.tpl” am Ende
Der Button selber wird in widgets/checkout/info.tpl erstellt - also im {action}-Bereich
in frontend/index/ gibt es keine checkout_actions.tpl

Hängt es also auch vom  namespace ab, ob der Textbaustein gecached wird???
Dann dürfte aber doch nicht einmalig für den ersten Kunde ein Name gesetzt werden, sondern “Mein Konto” immer “Mein Konto” sein.

Egal warum - es funktioniert nicht. Also an alle oben: Macht es anders - ohne Namen oder direkt in der info.tpl
Ich hänge mich für meinen “Exit” ja in der widgets/checkout/info.tpl an den Block für account ran.

Würde sagen: aneiander vorbei geredet Wearing-Sunglasses Es geht nicht :ENDE:  Wink

Ich sollte mal aufhören immer so viel anzunehmen ohne nachzuschauen >_<.>

Der Textbaustein ist ja tatsächlich in einer /widgets/ .tpl Datei. Im Emotion Template musste ich nämlich mal eine ähnliche Funktion einbauen und da war das definitiv noch nicht so.

Gut wenn ich mal Zeit finde probiere ich das auch mal aus :D . Eingentlich sollte es dann m.M.n. auch im Textbaustein gehen. Bin gespannt an was das liegt.

Nun bin mit meinem Latein am Ende!
Es ist - zumindest bei mir im Testshop mit noch 5.2.7 - nicht der Textbaustein, der gecached wird, sondern das widget selber!
Ich habe die Abfrage nun in die widgets/checkout/info.tpl ausgelagert:
 

{extends file="parent:widgets/checkout/info.tpl"}

{block name="frontend_index_checkout_actions_account"}
			
				
				
				{if $sUserLoggedIn}
					{$sUserData.additional.user.lastname} {$sUserData.additional.user.firstname}
				{else}
					{s namespace='frontend/index/checkout_actions' name='IndexLinkAccount'}{/s}
				{/if}
				
			
{/block}

Nach dem Cache Leeren wird beim ersten Anmelden die info.tpl gecached. Alle weiteren “Anmeldungen” erhalten danach den Namen vom ersten Login. Es gibt also exakt zwei Versionen: Nicht angemeldet, und erste Anmeldung.

Ich war fest davon überzeugt, dass die mit action eingebundenen widgets nicht gecached werden. Bug oder Feature? Egal ob in der .tpl oder im Textbaustein: gleiches Ergebnis. Müsste noch auf 5.2.9 updaten, und gucken, ob es dort noch genau so ist.

 

@simkli‍

Caching lesen und verstehen  Blush  Smile
Es geht so nur dann, wenn Ihr das Caching für „widgets/checkout“ ganz deaktiviert!

Soviel zum bisher von mir falsch verstandenem action-tag
Es geht auch nicht, „widgets/chekout info“ zu deaktivieren, da auch das „Deaktivieren“ feste Regeln hat.
Hilft nur: Plugin kaufen, und hoffen, dass dieses Plugin nicht in die gleiche Falle tappt, oder Cache für das action deaktivieren.

2 Likes