Neu Eigenes Exportformat, foreach optimieren

GBK

Mitglied
21. Oktober 2019
79
12
Hallo liebe Leute,

ich versuche mich gerade daran, ein eigenes Exportformat für eine neue Plattform zu schreiben. Komme bisher auch gut vorwärts. Aber nun ist ein Punkt erreicht, wo sich die Logik einfach nicht zeigen will. Ich hoffe darauf, dass mir hier wer kurz meine Denkblockade entfernen und helfen kann, diese foreach Schleife zu optimieren:
Code:
{foreach name=article_images from=$Artikel->Bilder item=oBild}
 {$URL_SHOP}/{$oBild->cPfadGross};{if !$smarty.foreach.article_images.first}{$oBild->nNr};{/if}
 {if $oBild->nNr == 4}{break}{/if}
{/foreach}

Er geht halt alle Bilder durch und schreibt die Bild URL und ab dem zweiten Bild zusätzlich die Bildnummer rein. Wenn Bild 4 erreicht ist, bricht er ab. Es sind nämlich nur 4 Bilder auf der Plattform erlaubt. Mein Problem ist nun, dass, wenn keine 4 Bilder vorhanden sind, ich auch keine weiteren Semikola mehr habe. Aber die werden ja weiterhin benötigt, um anzuzeigen, dass da eben nichts ist. Konkreter:
4 Bilder: bild1;bild2;nr2;bild3;nr3;bild4;nr4; (so sollte es sein)
2 Bilder: bild1;bild2;nr2; (so nicht)
2 bilder: bild1;bild2;nr2;;;;; (so wärs richtig)

Mein Gedanke dazu war, die Schleife nochmal durchzugehen und irgendwie eine Differenz zu ermitteln, um damit die restlichen Semikola hinzugefügt werden. Aber, nunja, irgendwie hapert es daran. Freue mich auf eure Gedanken (oder auch Lösung :D) dazu!

Marco
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.046
185
Halle (Saale)
Eine Möglichkeit wäre ein for-Loop, den du immer von 0 bis < 4 durchläufst.
Ganz grob so (ungetestet):
Code:
{for $i=0 to 3}
    {if isset($Artikel->Bilder[$i])}
        {$smarty.const.URL_SHOP}/{$Artikel->Bilder[$i]->cPfadGross};
        {if $i > 0}{$Artikel->Bilder[$i]->nNr};{/if}
    {else}
        {if $i > 0};;{else};{/if}
    {/if}
{/for}

Falls es um Shop 5 gehen sollte, wäre übrigens "cURLGross" besser - da steht die Domain schon mit drin und du musst URL_SHOP da nicht mehr dranpacken.
 
  • Gefällt mir
Reaktionen: GBK

GBK

Mitglied
21. Oktober 2019
79
12
Hallo FMoche,

vielen, lieben Dank für deine Antwort. 🤦‍♂️, sowas zu übersehen. Ich habe mich so an diese foreach festgebissen. Dein Ansatz hat mir die Augen geöffnet, macht es deutlich leichter. Hat so bereits funktioniert! Habe lediglich {$smarty.const.URL_SHOP} -> {$URL_SHOP} gemacht.

Habe tatsächlich noch Shop4. Aber gut zu wissen, wenn wir bald umsteigen sollten :)

Danke, Marco
 

Ähnliche Themen