Zusätzliche Freitextfelder im Export

Hallo!

Ich habe das Problem, das mein Export zu Google Shopping zwar mit Attributen verwendet werden kann, leider jedoch von mir selbst angelegte Attribute nicht berücksichtigt. Wenn ich Attritbus 1-20 nehme, kann ich das Problemlos im Template ausgeben. Wenn ich Nummer zB. 37 nehme - bei mir {$sArticle.attr37|escape} für die Farbe, bleibt der Wert leer, obwohl er befüllt ist. 

Was kann ich tun?

 

Matthias

 

Welche Version nutzt du von Shopware. In den bis 5.1.6 sind nur maximal 20 Freitextfelder möglich.

Hallo! Habe die 5.2.3 

Wird trotzdem nicht ausgegeben. Hmmm.

Ist die Frage ob Shopware so weit gedacht hat diese Felder im Produktexport zur verfügung zu stellen.

Werden die selbserstellten Freitext-Felder in der gleichen Datendank gespeichert wie die Standart-Felder?

Oder die Varable stimmt nicht {$sArticle.attr37|escape}, das für die “Neuen” was anderes Vorgesehen ist.

Uwe

Also ich kann bestätigen das es mit attr. bis 20 funktioniert.

Du wirst recht haben, die Variable wird vllt. anders angesprochen aber noch hatte ich kein Glück mit der Suche.

und das schlimmst ist das man bei Shopware vorraussetzt das man gute Englischkenntnisse hat den ab Shopware5 ist das meiste nur noch auf englisch obwohl es ein deutsches Shopsystem ist.  Gasp

https://developers.shopware.com/developers-guide/shopware-5-upgrade-guide-for-developers/?&_ga=1.93756440.445441438.1475479741#attribute-management

Hallo,

finde ich auch schade. Auch wenn ich Englisch lese und verstehe, bin ich im Deutschen mind. 3 mal schneller als im Englischen. Auch wenn ich das Thema Internationalisierung durchaus nachvollziehen kann, muß man doch die Stammkundschaft nicht so im Regen stehen lassen.

@useg schrieb:

und das schlimmst ist das man bei Shopware vorraussetzt das man gute Englischkenntnisse hat den ab Shopware5 ist das meiste nur noch auf englisch obwohl es ein deutsches Shopsystem ist.  Gasp

https://developers.shopware.com/developers-guide/shopware-5-upgrade-guide-for-developers/?&_ga=1.93756440.445441438.1475479741#attribute-management

Moin,

ich stehe da etwas auf dem Schlauch und kann leider mit diesem Link nichts anfangen.

Könnte bitte jemand etwas genauer werden wie man die Attribute 21-39 in den Produktexport ab 5.2 bekommt?

Ich habe es noch nicht herausgefunden.

Man muss sie wohl irgendwie im Backend registrieren.

Dafür braucht man ein Plugin. In dem Link oben ist beschrieben wie man in einem eigenen, individuellen Plugin auf das neue Attributsystem zugreifen kann. Soweit ich das sehe sind die Freitextfelder aktuell im Produktexport nicht verfügbar. Dafür könnte man einen Verbesserungsvorschlag auf issues.shopware.com einstellen.

Also bei mir funktioniert das? Ich nutze ein Freitextfeld (Checkbox - INT(1) in meinem Produktexport und das wird auch einwandfrei übergeben? sieht im Template so aus: {$sArticle.attr11|escape}{#S#}
 

@motorg schrieb:

Also bei mir funktioniert das? Ich nutze ein Freitextfeld (Checkbox - INT(1) in meinem Produktexport und das wird auch einwandfrei übergeben? sieht im Template so aus: {$sArticle.attr11|escape}{#S#}
 

Es geht um die Freitextfelder 21-xx :slight_smile:

@lbshop schrieb:

@motorg schrieb:

Also bei mir funktioniert das? Ich nutze ein Freitextfeld (Checkbox - INT(1) in meinem Produktexport und das wird auch einwandfrei übergeben? sieht im Template so aus: {$sArticle.attr11|escape}{#S#}
 

Es geht um die Freitextfelder 21-xx :)

Ahh ok :-) 

Oder mit einem kleinen Smarty-Modifier so wie dieser hier:

function smarty_modifier_loadArtikelFreitextfelder($articleId) {
	
	$attributes = [];
	$sql = 'SELECT zusatztext,freitext FROM s_articles_attributes WHERE articleID = '. (int) $articleId;			
	$attributes = Shopware()->Db()->fetchRow($sql);
		
    return $attributes;
}

(freitext und zusatztext sind in meinem Fall die Freitextfelder) und im Template mit der Artikel-ID aufrufen:

{assign var='attributes' value=$sArticle.articleID|loadArtikelFreitextfelder}

Das Ergebnis kann dann z.B. so ausgegeben werden:

{$attributes.zusatztext}

 

1 Like

Hey, danke für den Hinweis. Mal ganz blöd gefragt: Ich will das ja im Export haben, funzt das so direkt im Export Template oder nur im Frontend?
 

Du meinst Marketing/Produktexporte und da die Templates? Genau dafür ist es gedacht. Kleines Hindernis nur, dass für die Produktexport-Templates die Modifier nicht aus dem Theme-Verzeichnis angezogen werden, Du müsstest das z.B. in

 showpware/engine/Library/Smarty/plugins

ablegen aber evtl. bei Update refreshen.

1 Like

@vanwittlaer schrieb:

Oder mit einem kleinen Smarty-Modifier so wie dieser hier:

function smarty_modifier_loadArtikelFreitextfelder($articleId) {

$attributes = ;
$sql = 'SELECT zusatztext,freitext FROM s_articles_attributes WHERE articleID = '. (int) $articleId;
$attributes = Shopware()->Db()->fetchRow($sql);

return $attributes;
}

(freitext und zusatztext sind in meinem Fall die Freitextfelder) und im Template mit der Artikel-ID aufrufen:

{assign var=‚attributes‘ value=$sArticle.articleID|loadArtikelFreitextfelder}

Das Ergebnis kann dann z.B. so ausgegeben werden:

{$attributes.zusatztext}

 

Ich stehe aktuell auch vor dem Problem, dass ich Werte aus den Freitextfeldern benötige.

Jetzt bin ich dem Beispiel oben gefolgt und habe unter „engine/Library/Smarty/plugins“ eine neue Modifier-Datei „modifier.loadArticleFreeTextFields.php“ mit der Funktion erstellt.
Wenn ich jetzt im Export-Template die Funktion so aufrufe

{assign var='attributes' value=$sArticle.articleID|loadArticleFreeTextFields}

bekomme ich immer nur in der exportierten Datei „Call to undefined function smarty_modifier_loadArticleFreeTextFields()“. Wobei ich mir nicht sicher bin, ob ich die überhaupt an der richtigen Stelle platziert habe
 

{strip}
{assign var='attributes' value=$sArticle.articleID|loadArticleFreeTextFields}
{$attributes.meinFreitextFeld}
{/strip}{#L#}

Hoffe es kann mir jemand sagen, was ich falsch mache.

Danke

Du musst eigentlich nur auf drei Dinge achten:

  1. Das richtige Smarty-Plugin-Verzeichnis (scheint zu stimmen)
  2. Den richtigen Dateinamen nach Smarty-Konvention (scheint auch zu stimmen)
  3. Den richtigen Namen in der Modifier-Funktion nach Smarty-Konvention (hast Du leider nicht gepostet)

Viel Erfolg!

Geert

 

Gibt es für dieses Problem bereits eine updatefähige, gute Lösung?

So wie beschrieben muss man bei jeden Shopware Update das Smarty-Plugin neu einspielen, oder liege ich falsch?

Ja, wenn Du das Update-sicher willst, dann den Modifier in ein Plugin verpacken und in einem Subscriber das Smarty-Plugin-Dir anhängen:

 

    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Dispatcher_ControllerPath_Backend_Export' => 'onPostDispatch',
        ];
    }

    /**
     *
     */
    public function onPostDispatch()
    {
        // Smarty Plugin Directory
        Shopware()->Template()->addPluginsDir( __DIR__. '/Resources/views/_private/smarty');
    }

Viel Erfolg!

Geert