Ausgabe eigenes Hersteller Freitextfeld im Frontend möchte einfach nicht gelingen

Hallo liebe Experten,

ich versuche mich hier schon seit einigen Tagen, komme aber einfach nicht weiter.

Ausgangslage:

Ich möchte eine Zusatzinfo auf der Artikeldetailseite unterhalb des Herstellerlogos anzeigen lassen.

Dazu habe ich in der Freitextfeldverwaltung in der Tabelle Hersteller (s_articles_supplier_attributes) ein neues Freitextfeld namens supplier_details_weee angelegt.

Danach habe ich im Backend bei einigen Herstellern dieses neue Freitextfeld mit Informationen befüllt. In der Datenbank stehen diese Informationen jetzt in der Tabelle „s_articles_attributes“. Das passt.

Dann habe ich unter meinem eigenen Theme in /themes/Frontend/[eigenesTheme]/frontend/detail/comment/ eine header.tpl angelegt und mit folgenden Zeilen befüllt:

{extends file='parent:frontend/detail/content/header.tpl'}

{* Product - Supplier information *}
                    {block name='frontend_detail_supplier_info'}
                        {$productSupplierClasses = 'product--supplier'}
                        {$imgSrc = $sArticle.supplierImg}
                        {$imgSrcSet = ''}
                        {if $sArticle.supplierMedia.thumbnails[0].source}
                            {$imgSrc = $sArticle.supplierMedia.thumbnails[0].source}

                            {if $sArticle.supplierMedia.thumbnails[0].retinaSource}
                                {$retinaSource = $sArticle.supplierMedia.thumbnails[0].retinaSource}
                                {$imgSrcSet = "$imgSrc, $retinaSource 2x"}
                            {/if}

                            {if $sArticle.supplierMedia.extension == 'svg'}
                                {$productSupplierClasses = $productSupplierClasses|cat:' image--svg'}
                            {/if}
                        {/if}

                        {if $imgSrc}
                            <div class="{$productSupplierClasses}">
                                {s name="DetailDescriptionLinkInformation" namespace="frontend/detail/description" assign="snippetDetailDescriptionLinkInformation"}{/s}
                                <a href="{url controller='listing' action='manufacturer' sSupplier=$sArticle.supplierID}"
                                   title="{$snippetDetailDescriptionLinkInformation|escape}"
                                   class="product--supplier-link">
                                    <img src="{$imgSrc}" {if !empty($imgSrcSet)}srcset="{$imgSrcSet}" {/if} alt="{$sArticle.supplierName|escape}">
                                </a>
                            </div>
                        {/if}
                        	{* Versuch 1 - funktioniert nicht *}                   
                            {assign attr=$manufacturer->getAttributes()}
                            {$attr.core->get("supplier_details_weee")}
                                            
                             {* Versuch 2 funktioniert auch nicht *}               	                   
                            {if $sArticle.supplier.attributes.supplier_details_weee}
                                <div class="supplier-details-weee">
                                    {$sArticle.supplier.attributes.supplier_details_weee|escape}
                                </div>
                            {/if}
                            
                            {* Diese Info kommt aus Hesrteller -> Beschreibung-Textfeld und funktioniert *}
                            {if $sArticle.supplierDescription}
        					<div class="supplier-details-weee">
            					{$sArticle.supplierDescription}
        					</div>
    					{/if}
                    {/block}

Wie ihr seht, klappt lediglich die Ausgabe mit {$sArticle.supplierDescription}, was allerdings nur eine Krücke darstellt und nicht ganz das ist, was ich eigentlich erreichen wollte.

Wo liegt mein Denkfehler? Oder funktioniert das generell und an der Stelle nicht mit dem eigenen Freitextfeld?
Wäre schön, wenn hier jemand einen Tipp hätte. Aus den wenigen Forenbeiträgen bin ich nicht wirklich Schlau geworden.

Vielen Dank, Tom

Ich würde mir mal die Inhalte der Variablen ausgeben:

{$sArticle|print_r}
oder spezieller
{$sArticle.attributes.core|print_r}
und
{$manufacturer|print_r}
oder spezieller
{$manufacturer.attributes.core|print_r}

Wenn du dann deinen Inhalt im Freitextfeld findest, kannst du z.B. am Artikel wie folgt zugreifen

{$sArticle.attributes.core->get("deine_freitextfeld_variable")}

Hi sacrofano

vielen Dank für Deine Antwort. Das hilft zumindest teilweise weiter.

{$sArticle|print_r}
oder spezieller
{$sArticle.attributes.core|print_r}

Liefern erwartungsgemäß auch nur die Infos zum jeweiligen Artikel. Was ich suche steht ja in der Datenbanktabelle „s_articles_supplier_attributes“.

{$manufacturer|print_r}
oder spezieller
{$manufacturer.attributes.core|print_r}

Beide Zeilen liefern mir jeweils nur den Wert 1 zurück. Keine weiteren Informationen. Dabei ist es irrelevant, ob etwas in dem Freitextfeld steht oder nicht.

{$sArticle.attributes.core->get("supplier_details_weee")}

Hier wird dann nichts ausgegeben.

Es scheit so, als wenn dieses Freitextfeld einfach nicht an der gewünschten Stelle im Template zur Verfügung steht. Das wäre wirklich ärgerlich.

Gruß, Tom

Dann gibt es keine Smarty Variable $manufacturer in der Artikeldetailseite. Dann könnte/müsste man die Info an jeden Artikel in einem Freitextfeld hinterlegen.

Hi sacrofano,

das habe ich fast befürchtet.
Diese Info an jedem Artikel zu hinterlegen ist eindeutig zuviel Aufwand. Zumal die Info herstellerbezogen ist und daher nur jeweils 1 x beim Hersteller gepflegt werden müsste.

Bleibt also nur die etwas unschöne Lösung über die Herstellerbeschreibung. Manchmal verstehe ich echt nicht, weshalb Shopware das erstellen von Freitextfeldern ermöglicht, aber diese dann nur an ganz bestimmten Stellen zur Verfügung stehen.

Trotzdem Danke für Deine Bemühungen.

Gruß, Tom

Installiere Dir mal den

in einer Testumgebung.
Alle Caches leeren Artikel neu laden, und dann im Artikel unten in der Toolbar auf Template gehen - dann runterscrollen.
Da gibt es eine Baumansicht aller Variablen.
Ich habe mir mal „test“ in supplier angelegt.
Das ist dann im Profiler die Struktur:
sArticle → supplier_attributes → core → test

1 „Gefällt mir“

Hallo sonic,

auch Dir vielen Dank für Deine Bemühungen und den Tipp mit dem Frosh Profiler. Wieder etwas tolles dazugelernt!

Tatsächlich wird das (jetzt umbenannte) Atrribut „weee“ im Template zur Verfügung gestellt.

![](upload://7OToVbdC0FmQjgi88OTC6dzTXJk.jpeg)

Also bin ich nur zu doof, das auch richtig zu verarbeiten und auszugeben.

Da es sich hierbei um eine Array zu handeln scheint, kann mir bitte noch jemand erklären, wie ich dann die Ausgabe in meinem Template schreiben muss?

Vielen lieben Dank!

Tom

{$sArticle.supplier_attributes.core.weee}

oder ggf.

{$sArticle['supplier_attributes']['core']['weee']}
if ($sArticle.supplier_attributes.core.weee != '')
{$sArticle.supplier_attributes.core.weee}
{/if}

Frage:
Hast Du etwa den ganzen Blockinhalt kopiert und am Ende Deine Ausgabe ergänzt?
Wäre auch eher etwas ungut.
Original-Code einbinden und dann Dein code.

{extends file='parent:frontend/detail/content/header.tpl'}

{block name='frontend_detail_supplier_info'}
{$smarty.block.parent}
if ($sArticle.supplier_attributes.core.weee != '')
{$sArticle.supplier_attributes.core.weee}
{/if}
{/block}

Hi sonic,

dank Deiner Hilfe habe ich das jetzt so gelöst:

{if $sArticle.supplier_attributes.core.weee}
<div>
        WEEE-Reg.-Nr.: {$sArticle.supplier_attributes.core.weee|escape}
</div>
{/if}

Da ich das innerhalb des Abschnitts

{if $imgSrc}
 <div class="{$productSupplierClasses}">
[...]
</div>
{/if}

positionieren möchte, sehe ich keine andere Möglichkeit, als den kompletten Block mitzunehmen.

Oder gibt es hier auch eine elegante Lösung?

Auf jeden Fall danke ich Dir und @ sacrofano herzlichst für die Unterstützung. Hätte ich ohne euch nicht hinbekommen.

Grüße, Tom

Wenn Du in einem Block etwas dazwischen setzen möchtest, und da gibt es keine Unterblöcke, musst Du wirklich den Block kopieren. Gut, da bei SW5 nichts mehr an Änderungen kommen wird, ist das jetzt auch kein Problem mehr. :upside_down_face:

Ups, mein if war ja sowas von falsch… :face_with_hand_over_mouth:

Hatte ich auch gesehen. Ist aber kein Problem, denn die Hilfestellung war entscheidend. :wink:

1 „Gefällt mir“