Neu Freifelder über die Sprache steuern

  • Ersteller des Themas Ersteller des Themas gnarx
  • Erstellungsdatum Erstellungsdatum

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.905
545
Leider kann man ja Freifelder nicht in den Sprachen anlegen. Wir haben uns nun dafür nun Felder angelegt wie MaterialDE und MaterialEN z.B..
Wie bekomme ich das nun hin die bei den Sprachen auch anzeigen zu lassen?

Mein Code:
Code:
{if (isset($Artikel->FunktionsAttribute.material_de) && $Artikel->FunktionsAttribute.material_de|@strlen > 0)}
    <tr><td class="table_desc"><strong>{lang key="eth_material" section="global"}:</strong></td><td class="table_attribut">{$Artikel->FunktionsAttribute.material_de}</td></tr>
{/if}

Eine Idee wäre ja das FunktionsAttribute.material_de aus der Shop Sprachverwaltung zu holen. Weiß jemand ob das geht?
 

Tomas

Sehr aktives Mitglied
8. Januar 2018
330
70
Lübeck
Hallo gnarx,

Informationen wie Material usw. lassen sich normalerweise sehr gut über die Merkmale abbilden.
Wenn du dennoch was anderes verwenden möchtest und eine Mehrsprachigkeit haben willst, bieten sich die Funktionsattribute auch an. Dann brauchst du templateseitig keine Abfrage auf die aktuelle Sprache zu machen.

Solltest du die Sprache doch templateseitig abfragen wollen findest du den wert in {$lang}

VG
Tomas
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.905
545
Okay Material war ein schlechtes Beispiel, das werde ich über Merkmale abfackeln.
Der Kunde hat halt sowas wie Untertitel im Template die sehr verschieden sind so das sich das nicht über ein Merkmal abbilden lässt.
Code:
                    {if (isset($Artikel->FunktionsAttribute.untertitel_de) && $Artikel->FunktionsAttribute.untertitel_de|@strlen > 0)}
                        <h3>{$Artikel->FunktionsAttribute.untertitel_de}</h3>
                    {/if}
                    {if (isset($Artikel->FunktionsAttribute.untersatz_de) && $Artikel->FunktionsAttribute.untersatz_de|@strlen > 0)}
                        <h4>{$Artikel->FunktionsAttribute.untersatz_de}</h4>
                    {/if}

Du siehst das das Feld z.B. "untersatz_de" heißt. Das habe ich also in 5 Sprachen. Nun muss ich ja wenn ich auf Französisch im Shop umschalte das Feld "untersatz_fr" anzeigen.
Um da nicht zu viel rum zu iffen dachte ich mir ich setze das "FunktionsAttribute.untersatz_de" in eine Sprachvariable im Shop, bei der Französischen Übersetzung würde dann "FunktionsAttribute.untersatz_fr" drinne stehen.
Der Aufruf wäre dann:
Code:
{if (isset($Artikel->{lang key="eth_untersatz" section="global"}) && $Artikel->{lang key="eth_untersatz" section="global"}|@strlen > 0)}
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.905
545
Okay das mit den Variablen aus den Sprachen geht nicht. Habs nun so gelöst:
Code:
             {if $lang == ger}   
                            {if (isset($Artikel->FunktionsAttribute.ab_titel_de) && $Artikel->FunktionsAttribute.ab_titel_de|@strlen > 0)}
                                <h2>{$Artikel->FunktionsAttribute.ab_titel_de}</h2>
                            {/if}
                            {if (isset($Artikel->FunktionsAttribute.untertitel_de) && $Artikel->FunktionsAttribute.untertitel_de|@strlen > 0)}
                                <h3>{$Artikel->FunktionsAttribute.untertitel_de}</h3>
                            {/if}
                            {if (isset($Artikel->FunktionsAttribute.untersatz_de) && $Artikel->FunktionsAttribute.untersatz_de|@strlen > 0)}
                                <h4>{$Artikel->FunktionsAttribute.untersatz_de}</h4>
                            {/if}
                         {elseif $lang == eng}
                             {if (isset($Artikel->FunktionsAttribute.ab_titel_en) && $Artikel->FunktionsAttribute.ab_titel_en|@strlen > 0)}
                                <h2>{$Artikel->FunktionsAttribute.ab_titel_en}</h2>
                            {/if}
                            {if (isset($Artikel->FunktionsAttribute.untertitel_en) && $Artikel->FunktionsAttribute.untertitel_en|@strlen > 0)}
                                <h3>{$Artikel->FunktionsAttribute.untertitel_en}</h3>
                            {/if}
                            {if (isset($Artikel->FunktionsAttribute.untersatz_en) && $Artikel->FunktionsAttribute.untersatz_en|@strlen > 0)}
                                <h4>{$Artikel->FunktionsAttribute.untersatz_en}</h4>
                            {/if}
                       {/if}
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
529
Halle
Hallo, für Mehrsprachigkeit sollten einfach "normale" Attribute statt Funktionsattribute verwendet werden. Diese können in der Wawi mehrsprachig angelegt werden. Funktionsattribute dienen - wie der Name schon sagt - der reinen Funktionssteuerung.
 

gnarx

Sehr aktives Mitglied
18. Januar 2018
3.905
545
Danke dir aber weiß einfach nicht wie das gehen soll. Hab mir die Anleitung schon mehrfach durch gelesen. Bin ich wohl zu blöd zu.
 

Ähnliche Themen