Wie ParentIDs der Artikel im Warenkorb als array an dyn-template übergeben

Hallo zusammen,

ich benötige die ParentIDs aller Artikel im Warenkorb als array in einem dynamischen Template, welches in basket.tpl includiert wird, scheitere gerade aber an einigen Sachen:

In der page/checkout/basket.tpl läuft eine foreach-Schleife durch die einzelnen Artikel im Warenkorb und mit [{$basketproduct->oxarticles__oxparentid}] kann ich mir auch eine die Parent-ID eines einzelnen Artikels ausgeben lassen.

Diese in ein Array zu füllen und an ein dynamisches Template zu übergeben gelingt mir allerdings leider nicht.

In der smarty-Doku steht Folgendes zum Hinzufügen eine Wertes an ein array: $smarty->assign(‘array_name’, ‘Andreas’);

Wie genau kann ich das in oxid machen und wie übergebe ich dieses array (bzw. Variablen generell) an ein dynamisches Template?

Über eine Antwort würde ich mich sehr freuen.

LG
Stefan

Hi Stefan,

eventuell hilft Dir der Thread hier weiter:

https://forum.oxid-esales.com/showthread.php?t=16381

Hallo Chris :),

vielen Dank für deine schnelle Antwort. Da ich anscheinend noch keine Benachrichtigung eingeschaltet hatte, sehe ich sie leider erst jetzt.

Dein Post klingt sehr interessant. Ich bin gerade unterwegs,werde das aber heute Abend direkt ausprobieren und mich danach melden.

Ein String mit den parentIDs würde mir ebenfalls reichen.
Angenommen es gelingt mir gleich eine derartige Stringvariable in der basket.tpl zusammen zu stellen…
Weiß jemand von euch wie man diese Variable dann im dynamischen Template verfügbar machen kann?

Viele Grüße und noch einmal besten Dank
Stefan

Hallo zusammen,

ich habe es noch einmal ausprobiert, scheitere aber nach wie vor an der Übergabe der Variable sowie beim Anhängen in Smarty.

Die oben genannte Frage habe ich auch mal dem OXID-Support gestellt und das war die Antwort:

auf der folgenden Seite Variables | Smarty habe ich folgende Auflistung der Arrays gefunden:

Defining Arrays:

{assign var=foo value=[1,2,3]}
{assign var=foo value=[‘y’=>‘yellow’,‘b’=>‘blue’]}
{assign var=foo value=[1,[9,8],3]} // can be nested

Short variable assignment:

{$foo=$bar+2}
{$foo = strlen($bar)} // function in assignment
{$foo = myfunct( ($x+$y)*3 )} // as function parameter
{$foo.bar=1} // assign to specific array element
{$foo.bar.baz=1}
{$foo=1} // appending to an array

Insbesondere {$foo =1} ist hier interessant.

Parallel dazu können Sie auch mit der PHP Session arbeiten:


[{PHP}]
if ($parentId) {
    $_SESSION['parentIds']=$_POST['columns'];
}
[{/PHP}]
//Code:
[{$smarty.session.parentIds}]

Welche von beiden Methoden performanter ist, kann ich nicht sagen, da ich dies nicht getestet habe.

 

Daraufhin habe ich z.B. Folgendes erfolglos in der basket.tpl probiert:

[{ assign var="arrallbasketparentids[]" value=$basketproduct->oxarticles__oxparentid}]

Außerdem die Idee mit PHP:

[{PHP}]
if ($parentId) {
    $_SESSION['parentIds']=$_POST['columns'];
}
[{/PHP}]
Code:
[{$smarty.session.parentIds}]

Alles erfolglos, da ich irgendeinen blöden Fehler mache und ihn nicht finde.

Meine basket.tpl-Testdatei sieht aktuell an der betreffenden Stelle ungefähr so aus:

[{assign var="basketitemlist" value=$oView->getBasketArticles() }]
    [{foreach key=basketindex from=$oxcmp_basket->getContents() item=basketitem name=test_Contents}]
    [{assign var="basketproduct" value=$basketitemlist.$basketindex }]
    [{assign var="allparentids" value=$basketproduct->oxarticles__oxparentid}] //hier anhängen
[{/foreach}] 

[{oxid_include_dynamic file="dyn/_c_basket.tpl"}] //hierhin soll Variable übergeben werden

Wie genau muss ich den Code korrigieren um die parentids entweder als string oder als array zu erhalten und dann an das dynamische Template zu übergeben?

Schon mal im Voraus vielen Dank für eure Mühe.

LG
Stefan

Hallo,
hat wirklich Niemand eine Idee woran es liegen könnte bzw. wie man das Problem lösen kann?

LG
Stefan