Freitextfeld nur ID wird ausgegeben

Hallo zusammen,

ich versuche gerade die verschiedenen Zahlungsarten (Vorkasse, PayPal etc.) an einer beliebigen Stelle in Shopware einzubinden. Allerdings erscheint an der entsprechenden Stelle nur die ID z.B. “|4|5|”. Gibt es eine Lösung um die ID in den benötigten Namen umzuwandeln?

Nachfolgend das konfigurierte Freitextfeld:

Das ist “normal”. Ich hatte dafür mal ein Plugin erstellt https://github.com/shyim/ShyimAttributeTransformer

Hallo Shyim,

vielen Dank für deine Antwort und vor allem für die Entwicklung des Plugins. Allerdings habe ich das Plugin gerade als Zip-Datei runtergeladen und versucht über das Backend zu installieren, wo mir angezeigt wird, dass kein Plugin in der Zip-Datei gefunden wurde :frowning:

muss ich bei der Installation des Plugins noch was besonderes beachten?

Viele Grüße

Hast du das Zip vorher umbenannt? Das heißt ja -master am Ende, wenn man es von Github lädt, das muss weg. Oder einfach nach custom/plugins/ per SFTP legen in den Ordner ShyimAttributeTransformer.

Gruß

Matt

Hallo Matt,

über das Backend konnte ich das Plugin dennoch nicht hochladen, aber über FTP hat es wunderbar funktioniert :slight_smile: anschließend musste das Plugin über das Backend nur noch installiert und aktiviert werden.

Jetzt habe ich allerdings noch das Problem, dass sowohl bei der Einfachauswahl als auch bei der Mehrfachauswahl aus dem anfänglichen “|4|5|” ein “Array” geworden ist. Muss ich jetzt noch was bestimmtes anpassen, damit auch wirklich die benötigten Begrifflichkeiten bzw. Bilder im Frontend ausgegeben werden?

Viele Grüße und vielen Dank für deine Hilfe!

Du jetzt nur noch mit einer foreach drüber iterieren

mit der von Shyim angesprochenen foreach iteration habe ich mich gestern und heute beschäftigt, aber bin leider nicht auf das gewünschte Ergebnis gekommen :frowning:

Kann mir einer sagen, was ich bei dem nachfolgenden Code falsch gemacht habe (als Anfänger kann ich das leider nicht erkennen):

{extends file='parent:frontend/detail/buy.tpl'}
{block name="frontend_detail_buy_button"}
{$smarty.block.parent}
{foreach $sArticles as $sArticle}
	{if $sArticle.test}
    {$sArticle.test}
	{/if}
{/foreach}
{/block}

Angemerkt sei noch, dass ich mir den oben aufgeführten Block nur für Testzwecke ausgesucht habe.

Viele Grüße

Spontan würde ich sagen, du musst über $sArticle.test itterieren, $sArticles gibt es an der Stelle ja gar nicht.

Matt

Das habe ich gerade einmal ausprobiert und bekomme im Frontend die Meldung, dass ein Fehler aufgetreten ist.

Der da wäre?

Im Zweifel einfach mal $sArticle dumpen, dann sollte es sich auch erschließen, wo die Daten sind und wie man da ran kommt.

Matt

Die Fehlermeldung in den Log-Dateien zeigt nachfolgendes an (musste aufgrund der Längenbeschränkung etwas gekürzt werden). Ein Dump von $sArticle habe ich auch erstellt, aber konnte das Attribut „test“ darin nicht finden :frowning:

 

[2019-09-08 13:03:12] core.CRITICAL: Syntax Error in template „/var/www/clients/client1/web4/web/themes/Frontend/Responsive/frontend/detail/buy.tpl“  on line 3 „{foreach $sArticles as $sArticle.test}“  - Unexpected „.“, expected one of: „}“ , " " , ATTR {„uid“:„6a9db93“}
[2019-09-08 13:03:12] core.CRITICAL: Syntax Error in template „/var/www/clients/client1/web4/web/themes/Frontend/Responsive/frontend/detail/buy.tpl“  on line 3 „{foreach $sArticles as $sArticle.test}“  - Unexpected „.“, expected one of: „}“ , " " , ATTR {„uid“:„6a9db93“}
[2019-09-08 13:03:12] core.ERROR: SmartyCompilerException: Syntax Error in template „/var/www/clients/client1/web4/web/themes/Frontend/Responsive/frontend/detail/buy.tpl“  on line 3 „{foreach $sArticles as $sArticle.test}“  - Unexpected „.“, expected one of: „}“ , " " , ATTR in /var/www/clients/client1/web4/web/engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php:657 Stack trace: #0 /var/www/clients/client1/web4/web/engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3144): Smarty_Internal_TemplateCompilerBase->trigger_template_error() #1 /var/www/clients/client1/web4/web/engine/Library/Smarty/sysplugins/smarty_internal_templateparser.php(3209): Smarty_Internal_Templateparser->yy_syntax_error(59, ‚.‘) #2 /var/www/clients/client1/web4/web/engine/Library/Smarty/sysplugins/smarty_internal_smartytemplatecompiler.php(105): Smarty_Internal_Templateparser->doParse(59, ‚.‘) #3 /var/www/clients/client1/web4/web/engine/Library/Smarty/sysplugins/smarty_internal_templatecompilerbase.php(192): Smarty_Internal_SmartyTemplateCompiler->doCompile(’\n%%%%SMARTY_PAR…’) #4 /var/www/clients/client1/web4/web/engine/Library/Smarty/sysplugins/smarty_internal_compile_block.php(191): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template)) #5 

{foreach $sArticle.test as $attr}
    {$attr|print_r}
{/foreach}

sollte funktionieren.

Matt

Das Freitextfeld wird jetzt ausgegeben, schonmal vielen Dank dafür Matt :slight_smile:

Bei dem ausgegebenen Freitextfeld werden mir jetzt allerdings alle erdenlichen Informationen angezeigt (siehe nachfolgendes Bild). Ist es auch möglich, dass bspw. nur der Name (Rechnung) ausgegeben wird?

 

Das war ja auch nur zu Debugging-Zwecken. Das gibt dir eine Liste deiner Zahlarten aus:

{foreach $sArticle.test as $attr}
    {$attr.description}
{/foreach}

 

Jetzt scheint alles wie gewollt zu funktionieren :slight_smile: Vielen Dank für deine schnelle Unterstützung Matt und auch an Shyim für die Entwicklung des Plugins.

Viele Grüße

Kevin