Hallo, Ich möchte im Warenkorb (shopping_cart.html) die Session abfragen und eine Meldung/Text anzeigen, nur wenn bestimmte Länder aktiv sind. In der shopping_cart.php ist ja die Session vorhanden weil die application_top.php eingebunden ist... Wie kann ich das am besten lösen (die session an die html übergeben und dort mit php oder smary-variable abragen...)? LG
ich bin ja kein Programmierer, aber denke die Session steht eh schon zur verfügung. Wäre es für dein Vorhaben nicht sinniger sich an die Länderauswahl zu hängern? Wann genau und so soll die Meldung den kommen? Wenn jemand den WK aufruft?
Hallo, Die Session steht in der php-Datei zur Verfügung und entspricht der Länderauswahl. Wenn ich in der PHP Datei zB "if ( $_SESSION['customer_country_id'] == 21 )" abfrage, wäre das Belgien. Ich würde gerne wissen, wie ich diese Information bzw. eine Variable in die html-Datei übergeben kann und dann damit einen Text anzeigen kann, quas sinngemäß "if Belgien {<div>Hallo Text für Belgien</div>}". LG
hier: (Link nur für registrierte Nutzer sichtbar.) da solltest alles mögliche finden an Infos. Bitte ncht in den Shopdateien basteln sondern die overload und smarty Blöcke dazu nutzen.
Diese Doku ist eher allgemein gehalten, vielleicht hat noch jemand einen Tipp für meinen konkreten Anwendungsfall.
Normalerweise hast du eine einigermassene Trennung zwischen Datenbeschaffung und Layoutschicht. Du willst also nicht im Template mit der Session arbeiten. Du willst eher in der Schicht darunter Daten besorgen und dann eine Variable ins Templte übergeben, die du dort dann benutzt, oder du willst eine Smarty Funktion schreiben, die im Prinzip denselben Job tut.
Hallo Wilken, Das ist eigentlich egal, was besser geeignet ist. Wenn ich Hilfe bekomme wie ich die smarty session in die html bekomme müsste es auch funktionieren denke ich.
Öhm … https://www.smarty.net/docs/en/language.variables.smarty.tpl Wie Wilken schon schrieb: So richtig sauber ist das nicht, wenn das Template eigenmächtig auf das $_SESSION-Superglobal reagiert. Aber das obliegt natürlich deiner eigenen Abwägung, ob und wie du so etwas in deinem Shop benutzt. Ich würde tendenziell eher den Umweg über einen Overload des ShoppingCartContentViews gehen.
Die Lösung ist relativ "einfach". Da würdest Du auch drauf kommen, wenn Du dir die Doku anschauen würdest, wo welche Klassen/Funktionen/Variablen beispielsweise zur Verfügung stehen. Bei solchen Vorhaben, kommst Du nicht drumherum dir die Doku anzuschauen. Diese Lektüre ist ein muss, auch wenn es eine Flut an Informationen für dich ist. Der Marco war jetzt mit dem Beitrag schneller, aber es ist exakt die ShoppingCartContentView und die general.lang.inc.php, wo Du alles mit steuern kannst. Mehr brauchst Du nicht.
Danke für den Tipp, das hilft mir schon mal weiter. Ich habe mir die ShoppingCartContentView angesehen und ein Overload dafür erstellt. Mir ist jetzt noch nicht ganz klar, wie ich aus der PHP-Datei in den HTML-Content schreiben kann.
Ich habe in der /templates/Honeygrid/module/shopping_cart.html eine smarty variable eingefügt: {$myCartText} Ich habe Datei angelegt: /GXUserComponents/overloads/shopping_cart/MyCartText.inc.php und darin geschrieben: PHP: class MyCartText extends MyCartText_parent{ public function _setMyCartText() { $this->v_output_buffer['myCartText'] = 'Das ist mein Cart Text'; }} Caches geleert, der Text erscheint nicht, auch nicht wenn ich die Funktion in die originale ShoppingCartContentView.inc.php kopiere. Mit "v_output_buffer..." sollte man ja auf die smarty variable schreiben können, oder?
Mit $this->set_content_data('myCartText', 'Das ist mein Cart Text'); funktioniert es, zwar nur wenn ich es in die ShoppingCartContentView.inc.php schreibe und nicht mit dem Overload aber damit kann ich leben.
Verstehe nicht wirklich dein Problem. Du kannst doch die ShoppingCartContentView.inc.php updatesicher gestalten bzw. überladen?
Das habe ich versucht, wenn ich das set_content_data in einen Overload schreibe, dann funktioniert es nicht. Wahrscheinlich habe ich beim Erstellen des Overloads irgednwas falsch gemacht, vergessen oder übersehen, aber für mich ist diese Lösung auch ok.
Halten wir fest, dass es eigentlich um die ShoppingCartContentView.inc.php geht, wo Du deine Funktionalitäten platzieren sollst. Den Tipp hast Du von Marco und mir ja bekommen. Jetzt sprichst Du von deinem Script, dass nichts mit der ShoppingCartContentView.inc.php zu tun hat. Dann erwähnst Du was von $this->set_content_data, was man in deinem Script nicht sieht. Du scheinst ja nicht wirklich auf die Nase gefallen zu sein und verstehst etwas davon bzw. hast ein gewisses Verständnis dafür, was ich auch gut finde, aber im Moment weiß ich nicht genau, wo es wirklich hakt, weil Du eigentlich mit den Informationen, die ich dir gegeben habe, quasi die Lösung hast.