verschiedene frontend/note/item.tpl (Merkzettel) laden

Hallo, ich komme nicht weiter - ich würde gerne (zwei) verschiedene Dataiversionen der frontend/note/item.tpl laden, die ja zum Merkzettel gehört. Idealerweise gesteuert über ein Kategorie-Freitext-Feld. Dadurch soll der Kunde in bestimmten Kategorien (ob angemeldet oder nicht), wenn er den Merkzettel aufruft, z.B. den Preis und Lieferzeit et. ctr, nicht sehen. Bewegt er sich in anderen Kategorien, sollen diese Daten aber angezeigt werden. Das wird ja in der item.tpl geregelt. Dazu habe ich zwei Versionen der item.tpl in meinem “meinTemplate”/frontend/note/ Verzeichnis angelegt, in der jeweils bestimmte Blöcke/Div’s vorhanden oder geleert sind: Die Datei frontend/note/item.tpl wird ja von der frontend/note/index.tpl aus geladen, die wiederum die frontend/index/index.tpl erweitert. In der frontend/note/index.tpl habe ich daher folgendes eingebaut/geändert: {foreach from=$sNotes item=sBasketItem name=noteitems} {if $smarty.foreach.noteitems.last} {assign var=lastrow value=1} {else} {assign var=lastrow value=0} {/if} {if $sCategoryContent.ac\_attr5 == 1} {include file='frontend/note/cat\_item.tpl' lastrow=$lastrow} {else} {include file='frontend/note/item.tpl' lastrow=$lastrow} {/if} {/foreach} …In der entsprechenden Kategorie ist dann im Freitext Feld 5 eine “1” eingetragen, doch das funktioniert nicht. Ebenfalls funktioniert {if $sCategoryContent.ac\_attr5} nicht - eigentlich sollte dieser Code doch bedeuten: “Ist (irgend)etwas in Freitext Feld 5 eingetragen, dann tue dies&das” - bringt aber auch nichts. Die Kategorie-Freitext-Variablen sollten dort eigentlich zur Verfügung stehen, wenn ich Firebug/FirePHP richtig deute. Was mache ich falsch bzw. welche alternative Lösung gibt es für das Problem? Bitte helft mir weiter… :wtf: Grüße rattatui

Ja, aber die Variable ist doch nicht im Merkzettel verfügbar. Da müsste man schon über die Produkte selbst gehen und die Kategorie ermitteln.

Hallo Waldicom, danke das Du dich meldest. Mein erster Denkfehler ist wohl, dass ich gedacht habe, dass alle Variablen, die mir FirePHP anzeigt (also z.B.: http://domain.de/merkzettel), auch einfach erreichbar sind - also auch die Kategorie-Freitext-Felder z.B. über sCategories… Auch die direkte Angabe der Kategorie-ID (z.B. 2165) brachte nichts, zumal das sehr umständlich wäre, jedes mal eine neue Nummer im Template hinzu zu fügen… Ich kenn mich zwar einigermaßen im Template aus (dann kann man ja schon Einiges erreichen), aber hier stosse ich am meine Grenzen, weil ich zu wenig Grundlagenwissen betreffs PHP/Smarty Programmierung habe - das kann ich aber erst in den nächsten Monaten/Jahren ändern :wtf: Wie würde das denn konkret funktionieren, wie Du es meinst? …Oder könnte man, da sich das include der item.tpl ja in einer foreach-Schleife befindet, die sNotes abfragt, hier zusätzlich eine Abfrage eines Artikel-Attributes mit einschieben? In dem Array sind ja die Artikel-Attribute hinterlegt. Ich hätte ein Attribut mit “boolean” oder eines mit “text”, die ich dafür zusätzlich nutzen könnte - wenn das einfacher sein sollte? Grüße rattatui

Ehrlich gesagt, habe ich die Idee noch nicht ganz verstanden. Also wenn der Kunde Artikel auf den Merkzettel legen, soll dann irgendwann der Preis erscheinen und irgendwann nicht. Aber Du spricht oben von Kategorien. Sobald aber der Kunde im Merkzettel ist, ist er ja nicht mehr in einer Kategorie. Deswegen habe ich gedacht, dass wenn der Artikel einer Kategorie gehört, soll da eine Datei inkludiert werden, und der anderen - eine andere Datei. Habe ich die Idee richtig verstanden?

Hallo Waldicom, ja, es soll nur bei bestimmten Kategorien die eine oder eben die andere item.tpl geladen werden, wenn der Merkzettel geöffnet wird. Das Ganze ist eine Art Online Katalog mit gesonderten Kategorien und Artikeln, in denen nirgends ein Preis zu sehen ist, weder im Listing noch auf der Artikeldetailseite. Daher wäre es schön, wenn man ein Kategrie-Freitext-Feld oder aber schlimmstenfalls ein Artikel-Attribut zur Steuerung nehmen könnte dachte ich mir. Damit man auf keine gesonderte Merkzettel-Seite kommt, öffnet sich der Merkzettel in einer Modalbox (Der Seiteninhalt des Merkzettels ist aber auf das wesentliche reduziert - das kann man ja in der note/index.tpl machen. Technisch gehen ist es natürlich richtig wie Du sagst - man ist in diesem Moment nicht mehr direkt auf der Kategorielisting- oder Detailseite, von der aus man den Merkzettel geöffnet hat. Grüße rattatui

…also in anderen Kategorien sollen Preise usw. dann im Merkezttel zu sehen sein - weisst du jetzt wie ich das meine? Sorry für die schlechte Erklärung… Grüße rattatui

Hi, also die Erweiterung funktioniert nur, wenn man diese Funktion aus der sBasket.php manipuliert. Hier könnte man z.B. Abfragen in welcher Kategorie der Artikel steckt und eben das Freitextfeld mit in das Array aufnehmen. Problem sehe ich aber, wenn ein Artikel mehreren Kategorien zugeordnet ist. Es wäre sicher besser, wenn das Merkmal über die Artikel-Attribute gesetzt wird und nicht über die Kategorie. sBasket.php public function sGetNotes() { $getArticles = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetAll(' SELECT n.\* FROM s\_order\_notes n, s\_articles a WHERE (sUniqueID=? OR (userID!=0 AND userID=?)) AND a.id = n.articleID AND a.active = 1 ORDER BY n.datum DESC ', array( empty($this-\>sSYSTEM-\>\_COOKIE['sUniqueID']) ? $this-\>sSYSTEM-\>sSESSION\_ID : $this-\>sSYSTEM-\>\_COOKIE['sUniqueID'], isset($this-\>sSYSTEM-\>\_SESSION['sUserId']) ? $this-\>sSYSTEM-\>\_SESSION['sUserId'] : 0 )); if(empty($getArticles)) { return $getArticles; } // Reformating data, add additional datafields to array foreach ($getArticles as $key =\> $value){ // Article-Image $getArticles[$key] = $this-\>sSYSTEM-\>sMODULES['sArticles']-\>sGetPromotionById("fix", 0, (int) $value["articleID"]); if(empty($getArticles[$key])) { $this-\>sDeleteNote($value["id"]); unset($getArticles[$key]); continue; } $getArticles[$key]["articlename"] = $getArticles[$key]["articleName"]; $getArticles[$key]["image"] = $this-\>sSYSTEM-\>sMODULES['sArticles']-\>sGetArticlePictures( $value["articleID"], true, $this-\>sSYSTEM-\>sCONFIG['sTHUMBBASKET'] ); // Links to details, basket $getArticles[$key]["id"] = $value["id"]; $getArticles[$key]["linkBasket"] = $this-\>sSYSTEM-\>sCONFIG['sBASEFILE']."?sViewport=basket&sAdd=".$value["ordernumber"]; $getArticles[$key]["linkDelete"] = $this-\>sSYSTEM-\>sCONFIG['sBASEFILE']."?sViewport=note&sDelete=".$value["id"]; $getArticles[$key]["datum\_add"] = $value["datum"]; } return $getArticles; }

1 „Gefällt mir“

Hallo Ottscho, danke für diese Idee - könnte man das Problem des mehrfachen Vorkommens eines Artikels in verschiedenen Kategorien nicht so umgehen, dass man in jeder (Katalog-) Kategorie einen speziellen Dummy-Artikel dafür anlegt und den dann inaktiv schaltet? …Oder verstehe ich da was falsch? Grüße, rattatui