Neu Artikelmerkmale auf Artikeldetailsseite als Bild anzeigen

René Schwabe

Aktives Mitglied
25. März 2015
61
2
Hallo zusammen,

wenn jemand einen Tipp hat wie ich ein bestimmtes Artikelmerkmal-Bild auf der jeweiligen Artikeldetailsseite anzeigen lassen kann ist mein persönlicher Held des Tages! 😉

Situation:
JTL-Shop 4.04 - je Artikel sind ca. 3-5 Merkmale konfiguriert.
Nicht jedes Merkmal hat ein Bild - jedes Merkmal wird auf der Detailseite als Text angezeigt, was auch weiterhin gewünscht ist.

Aufgabe:
Ein bestimmtes Merkmal soll nun als "großes" Bild entweder unterhalb des Preises oder in der nähe der Beschreibung ZUSÄTZLICH angezeigt werden.

Beispiel:
Artikelmerkmal ist "Blau" - das Bild dahinter ist ein blaues Quadrat.

Dieses blaue Quadrat soll nun unterhalb des Preises und/oder in der Beschreibung als Bild angezeigt werden.
Zusätzlich soll es unten weiterhin als Text-Merkmal "Blau" stehen
Der Artikel hat noch zwei weitere Merkmale, diese sollen aber nicht berücksichtigt werden.

Ich möchte also nur wenn das Merkmal "Farbe" ist das Bild angezeigt bekommen und die Merkmalliste unterhalb des Artikels soll weiterhin angezeigt werden so wie sie ist.


Ich hoffe meine Ausführung der Problemsituation war verständlich - ich freue mich auf jedes Feedback.

Viele Grüße,
René
 

martinwolf

Offizieller Service Partner
SPBanner
6. September 2012
3.724
355
Vorweg, mit Blau meinst du sicherlich nichtd as Merkmal selbst sondern den Merkmalwert. Blau in dem Sinne ist kein Merkmal, das wäre Farbe.
Du läufst durch alle Merkmale durch und schaust ob einer der Werte deinem Wert entspricht. Wenn ja, speicher den Bildpfad in eine Variable $MerkmalBild und gib es aus.
Code:
        {foreach from=$Artikel->oMerkmale_arr item=oMerkmal}
            {foreach from=$oMerkmal->oMerkmalWert_arr item=oMerkmalWert}
                {if $oMerkmalWert->cWert === 'blau'}
                    {assign var=MerkmalBild value=$oMerkmalWert->cBildpfadNormal}
                {/if}
            {/foreach}
        {/foreach}

        {if isset($MerkmalBild)}
            <img src="{$MerkmalBild}" alt="" />
        {/if}
 
  • Gefällt mir
Reaktionen: René Schwabe

René Schwabe

Aktives Mitglied
25. März 2015
61
2
Vorweg, mit Blau meinst du sicherlich nichtd as Merkmal selbst sondern den Merkmalwert. Blau in dem Sinne ist kein Merkmal, das wäre Farbe.
Du läufst durch alle Merkmale durch und schaust ob einer der Werte deinem Wert entspricht. Wenn ja, speicher den Bildpfad in eine Variable $MerkmalBild und gib es aus.
Code:
        {foreach from=$Artikel->oMerkmale_arr item=oMerkmal}
            {foreach from=$oMerkmal->oMerkmalWert_arr item=oMerkmalWert}
                {if $oMerkmalWert->cWert === 'blau'}
                    {assign var=MerkmalBild value=$oMerkmalWert->cBildpfadNormal}
                {/if}
            {/foreach}
        {/foreach}

        {if isset($MerkmalBild)}
            <img src="{$MerkmalBild}" alt="" />
        {/if}

Richtig, ich meine den Merkmalwert blau und das Merkmal Farbe.

Vielen vielen Dank für die Lösung, funktioniert soweit prima! 🙂
 

René Schwabe

Aktives Mitglied
25. März 2015
61
2
Jetzt muss ich leider noch etwas fragen: Wie verhält sich dies wenn ich mehrere Merkmalwerte nebeneinander angezeigt bekommen möchte?
 

martinwolf

Offizieller Service Partner
SPBanner
6. September 2012
3.724
355
Code:
{assign var=merkmalWerte value=","|explode:"blau,rot,gelb"}{* definiere ein array mit den zu beruecksichtigen merkmalwerten *}
{foreach from=$Artikel->oMerkmale_arr item=oMerkmal}{* laufe durch alle merkmale des artikels *}
    {foreach from=$oMerkmal->oMerkmalWert_arr item=oMerkmalWert}{* laufe durch jeden merkmalwert *}
        {if $oMerkmalWert->cWert|lower|in_array:$merkmalWerte}{* wenn der merkmalwert in den zu beruecksichtigen werten enthalten ist *}
            {assign var=MerkmalBilder value=$MerkmalBilder|cat:$oMerkmalWert->cBildpfadNormal|cat:","}{* ergaenze den bildpfad als string in eine variable *}
        {/if}
    {/foreach}
{/foreach}
{assign var=MerkmalBilder value=$MerkmalBilder|substr:0:-1}{* entferne das letzte komma *}
{assign var=MerkmalBilder_arr value=","|explode:$MerkmalBilder}{* und erteuge aus dem string der pfade ein array aus pfaden *}

{* ausgabe des arrays mit den bildpfaden *}
{foreach from=$MerkmalBilder_arr item=MerkmalBild}
    <img src="{$MerkmalBild}" />
{/foreach}
 

FranzderFranke

Sehr aktives Mitglied
8. Februar 2008
453
56
Ich möchte gerne etwas ähnliches machen und zwar sollen die Artikelmerkmale als Bild direkt unter dem Haupbild eines Artikels angezeigt werden. Kann jemand helfen?
 

Ähnliche Themen