Artikel-Attribute einzeln über ID oder ähnlichens erreichbar?

Hallo,

ich arbeite seit Kurzem mit Shopware, kenn mich deshalb noch nicht so gut aus. Deshalb versuche ich mal hier mein Glück. Meine Frage bezieht sich auf die Erstellung von Tabs. Und zwar will ich wissen ob es eine Möglichkeit gibt, nicht alle Eigenschaften eines Artikels auszugeben, sondern nur einen Teil davon (es werden einige an Eigenschaften via Warenwirtschaftsschnittstelle hochgeschoben). Wie kann ich enzelne Merkmale ansprechen und ausgeben und die Zweisprachigkeit trotzdem sicherstellen?

Meine Shopware Version: 5.4.0

MfG

Georg

Hallo Georg, willkommen im Forum.

Wenn du dich im richtigen Shop befindest, wird über URL gesteuert, sind die Werte in den entsprechenden Sprachen verfügbar.

Ich vermute mal das du von den Attributen eines Produktes sprichst. attr1 - 3 sind bereits vorbelegt daher denke ich mal das du die 4-20 meinst, wie sie zum Beispiel die JTL WaWi anspricht?

Hier erst mal Lektüre für den Einstieg in das Template-System: https://developers.shopware.com/designers-guide/getting-started/

Hier mal ein Ansatz für das hinzufügen eines Tabs vor den “Beschreibung”-Tab:

  • Template ableiten, wie in der Doku beschrieben
  • den gleichen Pfad der Datei in deiner Ableitung für die frontend/detail/tabs.tpl anlegen

Oben in die neue Datei:

{extends file="parent:frontend/detail/tabs.tpl"}

 

Da rein dann einen Tab, z.B.:

{block name="frontend_detail_tabs_navigation_inner"}
    {if $sArticle.attr20}
        
            {s namespace="frontend/detail/tabs" name='DetailTabsAddOn'}Neuer Tab{/s}
        
    {/if}

    {$smarty.block.parent}
{/block}

Drunter dann den Inhalt rein:

{block name="frontend_detail_tabs_content_inner"}
    {if $sArticle.attr20}
        
            
                {s namespace="frontend/detail/tabs" name='DetailTabsAddOn'}Neuer Tab{/s}
            
            
                {s namespace="frontend/detail/tabs" name='DetailTabsAddOnMore'}Inhalt anzeigen{/s}
                 mehr
            
            
                
                    
                        
                        {s name="OffcanvasCloseMenu" namespace="frontend/detail/description"}{/s}
                    
                
                {$sArticle.attr20}
            
        
    {/if}

    {$smarty.block.parent}
{/block}

Das war’s schon. Achte darauf das die div-Container tab–header, tab–preview und tab–content so erhalten bleiben. Sie sind für die Mobile Ansicht notwendig.

Ich hoffe das hilft dir als kleiner Einstieg  Smile

Ja vielen Dank, des mit dem Tab erstellen krieg ich hin, ist nicht so schwer. Problematisch dabei ist nur das mit den Eigenschaften. Und zwar kann man ja Sets hinzufügen. Hab ein Set erstellt, dass sich über die WaWi-Schnittstelle mit Gruppen und Optionen füllen lässt. Nun will ich aber die Gruppen+Optionen nicht alle in einem Tab ausgeben lassen, sondern in mehreren. Hab die Tabs schon erstellt, auch die Gruppen+Optionen tauchen korrekt auf.

Problem dabei ist dass der Shop 2-sprachig sein soll, im DE Shop klappt des wunderbar, aber auf EN nicht.

Ich lasse die Merkmale über

{assign ‘testarray’ [‘Gruppenname’] …} in ein Array speichern, und lass die dann folgendermaßen ausgeben:

{foreach from= $sArticle.sProperties item=sProperty}
                {if in_array($sProperty.name,$testarray)}
                   

|
                        {$sProperty.name|escape} |
                        {$sProperty.value|escape} |
                   

                {/if}
            {/foreach}

Kann man aber anstatt den Gruppennamen (Eigenschaft) eine ID oder sowas angeben und die Eigenschaft darüber ansprechen?

$sArticle.Properties würde nicht gehen, will ja nur bestimmte Eigenschaften, und über Freitextfeldverwaltung weiß ich nicht wie das mit dem Gruppen und den dazugehörigen Values (Optionen).

Moin Georg,

ja klar sollte das gehen. Ich hab mal in meiner „Spiel-Umgebung“ Grundschop + Demodaten-Plugin einfach ein paar Zuweisungen gemacht.

Im Template kommt das so raus:

Array
(
	[2] => Array
	(
		[id] => 2
		[optionID] => 2
		[name] => Material
		[groupID] => 3
		[groupName] => Elektronik
		[value] => Edelstahl, Nylon
		[values] => Array
		(
			[19] => Edelstahl
			[15] => Nylon
		)
		[isFilterable] => 1
		[options] => Array
		(
			[0] => Array
			(
			[id] => 19
			[name] => Edelstahl
			[attributes] => Array
				(
				)
			)
			[1] => Array
			(
				[id] => 15
				[name] => Nylon
				[attributes] => Array
				(
				)
			)
		)
		[media] => Array
		(
		)
.
.
.

Wie du erkennen kannst sind dort auch alle IDs mit übergeben worden.

Ich hoffe es hilft Dir als Ansatz weiter.
 

PS: Einfach mal im Template an der gewünschten Stelle eine Ausgabe machen:

{$sArticle.sProperties|print_r}

Grüße