Neu Eigene Felder in Vergleichsliste

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.685
244
Leipzig
Moin,
mir ist leidlich aufgefallen, dass eigene Felder nicht von Haus aus in der Vergleichsliste mit ausgegeben werden.
OK, in den Artikeldetails ist das ja auch nicht der Fall. Dachte, das mit Eintragen in die Attributes, die Vergleichsliste sich die Daten da holt, aber nja...falsch gedacht. xD
Hat das schon jemand für sich um setzen können? Ich weiß zwar wie ich eigene Felder in den Produkten ausgeben kann, aber der Code-Aufbau ist in der Vergleichsliste sehr anders.
 

M.Stickel

Moderator
Mitarbeiter
9. Februar 2016
298
38
Hi,
da eigene Felder als Funktionsattribute behandelt werde sind diese in der Ausgabe nicht behandelt. Du kannst aber mit ein paar Templateanpassungen deine Felder abfragen.
Dazu legst du in der "comparelist/index.tpl" oben eine neue Variable an:
Code:
{assign var='feld_arr' value=[]}

Dann fügst du in dem Teil des Templates wo die Artikelbilder und Preisinformationen geholt werden dein Feld in die neue Variable ein:

Code:
{if !empty($oArtikel->FunktionsAttribute)}
                                {foreach from=$oArtikel->FunktionsAttribute key=eFeldName item=eFeldWert}
                                    {if $eFeldName === 'deinFeldName'}
                                       {$feld_arr[$oArtikel->kArtikel] = $eFeldWert}
                                    {/if}
                                {/foreach}
                            {/if}

Damit solltest du die eigenen Felder in dem Array haben und kannst sie ausgeben.
 
  • Gefällt mir
Reaktionen: holzpuppe

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.685
244
Leipzig
Oha. Danke dir. :) Werde ich später testen. Ich nehme an, da ich mit EVO arbeite ist die "details.tpl" für den 2. Code korrekt?
Ich nehme auch an, dass ich für jedes Funktionsattribut, was ich in der Vergleichsliste haben möchte, einen solchen Codeschnipsel einfügen muss?
 

M.Stickel

Moderator
Mitarbeiter
9. Februar 2016
298
38
Wenn du die Eigenen Felder nur in der Vergleichsliste ausgeben möchtest dann kommt alles in die "comparelist/index.tpl" (der 2. Codeschnipsel in die foreach name=vergleich).
Du kannst natürlich die Bedingungen zu den Funktionsattributen anpassen und das Array weiter füllen.
Es sollte auch so funktionieren:
Code:
{if !empty($oArtikel->FunktionsAttribute)}
   {foreach from=$oArtikel->FunktionsAttribute key=eFeldName item=eFeldWert}
      {if $eFeldName === 'deinFeldName1' || $eFeldName === 'deinFeldName2' ... }
         {$feld_arr[$oArtikel->kArtikel][$eFeldName]  = $eFeldWert}
      {/if}
   {/foreach}
{/if}
(ungetestet)
 

holzpuppe

Sehr aktives Mitglied
14. Oktober 2011
1.685
244
Leipzig
Hallo. Ich hab eine Weile gebraucht um mich mal wieder hinzusetzen und es zu testen. Irgendwie bekomme ich das nicht hin. Ich hab die 2 Codes an unterschiedlichen Stellen eingebunden und es spuckt mir einfach nichts aus.
Wenn ich dich richtig verstanden habe, dann müsste es ja so aussehen:
{assign var='feld_arr' value=[]}
{block name="header"}
{include file='layout/header.tpl'}
{/block}
{block name="content"}
<h1>{lang key="compare" section="global"}</h1>

{if !empty($cHinweis)}
<p class="alert alert-success">{$cHinweis}</p>
{/if}

{include file="snippets/extension.tpl"}
{if $oVergleichsliste->oArtikel_arr|@count >1}
<div class="comparelist table-responsive">
<table class="table table-striped table-bordered table-condensed table">
<tr>
<td>&nbsp;</td>
{foreach name=vergleich from=$oVergleichsliste->oArtikel_arr item=oArtikel}
<td style="width:{$Einstellungen_Vergleichsliste.vergleichsliste.vergleichsliste_spaltengroesse}px;" class="text-center">
<div class="thumbnail">
<a href="{$oArtikel->cURL}">
{image src=$oArtikel->cVorschaubild alt=$oArtikel->cName class="image"}
</a>
</div>
<p>
<a href="{$oArtikel->cURL}">{$oArtikel->cName}</a>
</p>

{if $oArtikel->Preise->fVKNetto == 0 && $Einstellungen.global.global_preis0 === 'N'}
<p>{lang key="priceOnApplication" section="global"}</p>
{else}
<p>
{if isset($oArtikel->Preise->strPreisGrafik_Detail)}
{assign var=priceImage value=$oArtikel->Preise->strPreisGrafik_Detail}
{else}
{assign var=priceImage value=null}
{/if}
{include file="productdetails/price.tpl" Artikel=$oArtikel price_image=$priceImage tplscope="detail"}
</p>
{/if}
<p>
<a href="{$oArtikel->cURLDEL}" data-id="{$oArtikel->kArtikel}" class="remove"><span class="fa fa-trash-o"></span></a>
</p>
</td>
{if !empty($oArtikel->FunktionsAttribute)}
{foreach from=$oArtikel->FunktionsAttribute key=eFeldName item=eFeldWert}
{if $eFeldName === 'Alkoholgehalt' || $eFeldName === 'Farbe' }
{$feld_arr[$oArtikel->kArtikel][$eFeldName] = $eFeldWert}
{/if}
{/foreach}
{/if}

{/foreach}
</tr>
{foreach name=priospalten from=$cPrioSpalten_arr item=cPrioSpalten}
{if $cPrioSpalten !== 'Merkmale' && $cPrioSpalten !== 'Variationen'}
{if $smarty.foreach.priospalten.iteration % 2 == 0}
<tr class="first">
{else}
<tr class="last">
{/if}
{/if}

{if $cPrioSpalten === 'cArtNr' && $Einstellungen_Vergleichsliste.vergleichsliste.vergleichsliste_artikelnummer != 0}
<!-- Artikelnummer-->
<td valign="top">
<b>{lang key="productNumber" section="comparelist"}</b>
</td>
{/if}
{if $cPrioSpalten === 'cHersteller' && $Einstellungen_Vergleichsliste.vergleichsliste.vergleichsliste_hersteller != 0}
<!-- Hersteller -->
<td valign="top">
<b>{lang key="manufacturer" section="comparelist"}</b>
</td>
{/if}
{if $cPrioSpalten === 'cBeschreibung' && $Einstellungen_Vergleichsliste.vergleichsliste.vergleichsliste_beschreibung != 0}
<!-- Beschreibung -->
<td valign="top">
<div class="custom_content">
<b>{lang key="description" section="comparelist"}</b>
</div>
</td>
{/if}
{if $cPrioSpalten === 'cKurzBeschreibung' && $Einstellungen_Vergleichsliste.vergleichsliste.vergleichsliste_kurzbeschreibung != 0}
<!-- Kurzbeschreibung -->
<td valign="top">
<b>{lang key="shortDescription" section="comparelist"}</b>
</td>
{/if}
{if $cPrioSpalten === 'fArtikelgewicht' && $Einstellungen_Vergleichsliste.vergleichsliste.vergleichsliste_artikelgewicht != 0}
<!-- Artikelgewicht -->
<td valign="top">
<b>{lang key="productWeight" section="comparelist"}</b>
</td>
{/if}
{if $cPrioSpalten === 'fGewicht' && $Einstellungen_Vergleichsliste.vergleichsliste.vergleichsliste_versandgewicht != 0}
<!-- Versandgewicht -->
<td valign="top">
<b>{lang key="shippingWeight" section="comparelist"}</b>
</td>
{/if}
{if $cPrioSpalten !== 'Merkmale' && $cPrioSpalten !== 'Variationen'}
{foreach name=vergleich from=$oVergleichsliste->oArtikel_arr item=oArtikel}
{if $oArtikel->$cPrioSpalten !== ''}
<td valign="top" style="min-width: {$Einstellungen_Vergleichsliste.vergleichsliste.vergleichsliste_spaltengroesse}px">
{if $cPrioSpalten === 'fArtikelgewicht' || $cPrioSpalten === 'fGewicht'}
{$oArtikel->$cPrioSpalten} {lang key="weightUnit" section="comparelist"}
{else}
{$oArtikel->$cPrioSpalten}
{/if}
</td>
{else}
<td>--</td>
{/if}
{/foreach}
</tr>
{/if}
....
Fehlt mir da jetzt noch was im unteren Bereich? ( {foreach name=priospalten )
:confused:
Musste Code kürzen.
Ps.: Es gibt 6 Stellen mit {foreach Name=vergleich in dieser Datei. xD
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.712
1.615
Berlin
Lustig,
Das habe ich gestern für jemanden angeschaut und gebaut, zwar nur um ein bestimmtes Feld im Vergleich zu haben aber am Ende ist es fast die gleiche Vorgehensweise, nur das man ein weiteres foreach einbinden muss
 

Ähnliche Themen