Artikel Bewertungsformular um Textfeld erweitern

Hallo,

ich bin ein absoluter Neuling was Smarty betrifft und würde das Bewertungsformular bei den Artikeln gerne um ein weiteres Textfeld erweitern. Die betreffenden Blöcke in den Template-Dateien sind folgende.

Das Standard Textfeld In der form.tpl :

{* Review text *}
{block name='frontend_detail_comment_input_text'}
	{$sFormData.sVoteComment|escape}
{/block}

Ausgabe des Standard Textfeldes In der entry.tpl

{* Review text *}
{block name='frontend_detail_comment_content'}
   
      {$vote.comment|nl2br}
   
{/block}

Reicht es nun aus, für eine weiteres Text-Feld diese Blöcke in der Template Datei zu duplizieren und die Smarty-Variabeln neu zu benennen?

 

 

Hallo,

ich verstehe nicht ganz was du meinst.

aber hier finden Sie genug Info über extend Templates.

https://developers.shopware.com/designers-guide/getting-started/#template-inheritance

Viele Grüße,

Ahmad

Hallo Ahmad,

erst mal Danke für den Input, aber das ist nicht ganz was ich meine.

In dem Bewertungsformular erzeugt ein Eingabefeld und wenn ich es richtig verstehe sorgt {$sFormData.sVoteComment|escape} dafür, dass die Eingabe in mysql in der Tabelle s_articles_vote in der Spalte “comment” abgespeichert wird.

Wenn ich nun also eine neue anlege mit der neuen Angabe {$sFormData.sVoteNeuesfeld|escape} , müsste dann die Eingabe nicht in einer neuen Spalte in mysql mit dem Namen “neuesfeld” abgelegt werden?

Und im nächsten Schritt sorgt ja dann {$vote.comment|nl2br} dafür, dass der Inhalt von der Spalte “comment” ausgegeben wird. Wenn ich das also in {$vote.neuesfeld|nl2br} ändere, müsste dann ja der Inhalt der Spalte “neuesfeld” ausgegeben werden.

Oder sehe ich das falsch? Wie gesagt, ich bin ein Neuling in Sachen Smarty.

 

Um das zu verdeutlichen 2 Screenshots.

Hier habe ich im Bewertungsformular zwei neue Eingabefelder angelegt:

Aber diese werden nicht korrekt in der Datenbank abgelegt und wieder ausgelesen:

Hallo,

könnten Sie mir sagen, wie haben Sie diese Values in der Datenbank ablegen.

Könnten Sie Ihre Code schreiben.

Viele Grüße,

Ahmad.

Hallo Ahmad,

Ich habe dafür die bereits vorhandenen Blöcke dupliziert und angepasst. Hier am Beispiel von dem Feld „Geschmack“ aus den Sreenshots oben.

In der form.tpl habe ich diesen Block kopiert:

{* Review text *}
{block name='frontend_detail_comment_input_text'}
	{$sFormData.sVoteComment|escape}
{/block}

und folgendermaßen angepasst:

{* Review Geschmack *}
{block name='frontend_detail_comment_input_geschmack'}
	{$sFormData.sVoteGeschmack|escape}
{/block}

Und in der entry.tpl hab ich diesen Block kopiert:

{* Review text *}
{block name='frontend_detail_comment_content'}
   
      {$vote.comment|nl2br}
   
{/block}

und folgendermaßen angepasst:

{* Review Geschmack *}
{block name='frontend_detail_comment_geschmack_content'}
   
      {$vote.Geschmack|nl2br}
   
{/block}

Aber scheinbar reicht das nicht aus um die Werte in der Datenbank abzulegen und wieder auszulesen.

Hallo,

diese ist nur Templates. dies nur für Output.

um die Werte in der Datenbank abzulengen, brauchen Sie ein Plugin und Hook sAricles->sSaveComment  funktion.

Viele Grüße,

Ahmad.

@Barelo schrieb:

Hallo Ahmad,

Ich habe dafür die bereits vorhandenen Blöcke dupliziert und angepasst. Hier am Beispiel von dem Feld “Geschmack” aus den Sreenshots oben.

In der form.tpl habe ich diesen Block kopiert:

{* Review text *}
{block name=‘frontend_detail_comment_input_text’}
{$sFormData.sVoteComment|escape}
{/block}

und folgendermaßen angepasst:

{* Review Geschmack *}
{block name=‘frontend_detail_comment_input_geschmack’}
{$sFormData.sVoteGeschmack|escape}
{/block}

Und in der entry.tpl hab ich diesen Block kopiert:

{* Review text *}
{block name=‘frontend_detail_comment_content’}

{$vote.comment|nl2br}

{/block}

und folgendermaßen angepasst:

{* Review Geschmack *}
{block name=‘frontend_detail_comment_geschmack_content’}

{$vote.Geschmack|nl2br}

{/block}

Aber scheinbar reicht das nicht aus um die Werte in der Datenbank abzulegen und wieder auszulesen.

Hallo,

also wenn du das updatesicher machen möchtest, musst du definitiv bei Template - Dateien unter anderem extends nehmen und append / prepend. Änderungen in Bare - Dateien werden automatisch beim Update wieder überschrieben, einfaches kopieren des Inhalts einer Bare - Datei + Ergänzung verhindert jegliches Update der Blockinhalte seitens Shopware.

Die Ein- und Ausgabe scheint sonst richtig zu sein (wenn auch nicht updatesicher), dir fehlt aber noch die Verarbeitung der Daten, die musst du auch implementieren, die passiert nicht von allein. Hier wäre der richtige Ansatz ein Hook auf die Funktion sSaveComment() (diese befindet sich zur “Vorlage” in der Datei sArticles.php im Verzeichnis “/engine/Shopware/Core”).

Beste Grüße

Sebastian