Freitextfelder in der Theme-Entwicklung nutzen

Hallo Community,

ich habe einen sehr komisches Problem. Es geht um ein Blog-Freitextfeld (Checkbox), welches ich in meinem Theme benutzen moechte. Das erste komische, was mir aufgefallen ist, ist, dass der name des Attributes nicht genau dem entspricht was ich urspruenglich angegeben habe. Shopware hat einfach die underscores weggelassen. Ich habe {debug} benutzt um es herauszufinden.Ich habe ein andere Freitextfeld, wo Shopware das nicht macht … 

Wie dem auch sei, ich wollte nun das Freitextfeld in der Themeentwicklung benutzen. Ich kann es auslesen und es kommen die gewuenschten ergebnisse, allerdings moechte ich diese gerne Abfragen, wenn ‚Freitextfeld‘ == 0 -> dann … Wie gesagt ich bekomme 0 aus dem Attribut, allerdings kann ich sie nicht in einer if - Bedingung abfragen.

Ich freue mich ueber jede Antwort, vielen Dank.

Was heißt den “nicht abfragen”?
Bei einer 1 funktioniert es?

@Moritz Naczenski schrieb:

Was heißt den „nicht abfragen“?
Bei einer 1 funktioniert es?

Also, ich kann das Attribute  via foreach loop als $sArticles.attribute.attributename in ein p-tag ausgeben lassen. Ausgabe = 0 (wie erwuenscht), diese Ausgabe moechte ich jetzt ueber if $sArticles.attribute.attributename == 0, abfragen und einen spezifischen code ausfuehren lassen. Wie gesagt das Textfeld ist eine checkbox, falls das weiterhilft.

Aber wenn du auf “1” (Checkbox angehakt) prüfst, funktioniert es?
Dann könntest du ja mal {if $sArticles.attribute.attributename != 1} probieren.

Ahh, dann hatte ich dich falsch verstanden. 

Nein, auch das geht leider nicht.

Zeig mal deine Template Datei. Also welche Zeile du anpasst usw.

ich passe die ./frontend/blog/box.tpl an

{extends file="parent:frontend/blog/box.tpl"}


{if $sArticle.attribute['csBlogEmpfehlung'] == 0}

  
      {block name='frontend_blog_col_blog_entry'}

      {$sArticle.attribute['csBlogEmpfehlung']}

          {* Blog Header *}
          {block name='frontend_blog-col_box_header'}
              
.
.
.

wenn ich mir die Variable mit dem ausgeben lasse, bekomme ich wie gesagt die richtigen Daten.

 was ich hier besonders komisch finde ist, dass die Variable als csBlogEmpfehlung gespeichert ist, ich sie aber als cs_blog_empfehlung angelegt habe. Ich hatte schonmal ein Freitextfeld in den Kategorien erstellt, mit dem gleichen Aufbau (cs_name_color) und darauf konnte ich dann mit $category.subcategories.attribute.cs_name_color zugreifen. Bei dem Blog-Freitextfeld geht das nicht, da muss ich mit dem Array drauf zugreifen.

Aber du kannst da ganz normal drauf zugreifen, du brauchst dafür keine Foreach - das Array ist ja ganz normal.

Also $sArticle.attribute.csBlogEmpfehlung sollte schon ausreichen, darauf solltest du auch prüfen.

Das Mit der Schreibweise ist nur die Umwandlung SnakeCase und CamelCase - im Model ist alles CamelCase, in der Datenbank meistens SnakeCase.

Ok, ja das hat tatsaechlich auch funktioniert, loest aber leider nicht das problem. 

Ich greife mit einer foreach auf alle blogposts zu, um diese dann anzuzeigen.

codeauszug aus ./frontend/blog/listing.tpl 

{foreach from=$sBlogArticles item=sArticle key=key name="counter"}
     {include file="frontend/blog/box.tpl" sArticle=$sArticle key=$key}
{/foreach}

 

Jetzt aber…

Ich habe mir dein Template nochmal angeschaut. Pack das If mal innerhalb von einem Block. Oder lass das Extends mal testweise weg.

1 „Gefällt mir“

Endlich! Ich kann nicht glauben, dass ich so lange fuer sowas gebraucht habe :smiley: Ich danke dir unglaublich!!!

Shopware hat noch so seine eigenarten, die ich noch nicht alle komplett drauf habe.

Ich habe jetzt nicht vom parent extended. Da ich sowieso alles ueberschreiben will ist das ok.

Danke, Danke!