Hallo coflo,
ich habe mir einmal die aktuelle Version (2.0.5.1 r12725) installiert und das Vorgehen ist wirklich identisch. Was ich jedoch in meiner Anleitung nicht (mehr) finde, sind die Schritte, um die Daten überhaupt in die Datenbank zu schreiben. Daher hier mein Vorgehen, mit dem es gerade geklappt hat:
lang/german/lang_german.conf:
text_extra_comments = 'Ihre weiteren Anmerkungen:'
title_extra_comments = 'Fügen Sie hier noch mehr Anmerkungen zu dieser Bestellung ein:'
title_extra_comments_short = 'Weitere Anmerkungen'
checkout_payment.php
$smarty->assign('EXTRACOMMENTS', xtc_draw_textarea_field
('extracomments', 'soft', '60', '5', isset($_SESSION['extracomments']) ?
$_SESSION['extracomments'] : '') . xtc_draw_hidden_field
('extra_comments_added', 'YES')); templates/tpl_modified_responsive/module/checkout_payment.html
<li>{#title_extra_comments_short#}</li>
[...]
<div>
<noscript><h4 class="nonjs-h4">{#title_extra_comments#}</h4></noscript>
<div class="checkoutcomment">{$EXTRACOMMENTS}</div>
</div>
So weit, so gut. Jetzt ist das Feld sichtbar und der Kunde kann etwas eingeben. Aber wenn ich dich richtig verstanden habe, war dies bereits der Fall. Jetzt wird es wichtig, der Bestellung in Form der Klasse order diese Daten zu übergeben:
checkout_confirmation.php (bei mir Zeile 52)
if (isset($_POST['extra_comments_added']) && $_POST['extra_comments_added'] != '') { $_SESSION['extracomments'] = xtc_db_prepare_input
($_POST['extracomments']);} Wie beim Kommentar selbst wird das "_added"-Feld geprüft und anschließend der Text aus $_POST nach $_SESSION überführt.
includes/classes/order.php (bei mir Zeile 517)
$this->info = array('order_status' => DEFAULT_ORDERS_STATUS_ID
, [...] 'comments' => isset($_SESSION['comments']) ?
$_SESSION['comments'] : '', 'extracomments' => isset($_SESSION['extracomments']) ?
$_SESSION['extracomments'] : '', [...]); Durch das Einfügen der zusätzlichen Zeile, zieht sich das System das zusätzliche Feld gemeinsam mit den anderen aus der Session, wenn die Bestellung generiert wird.
checkout_confirmation.php (bei mir Zeile 209)
if (xtc_not_null
($order->info['extracomments'])) { $smarty->assign('ORDER_EXTRA_COMMENTS', nl2br(encode_htmlspecialchars
($order->info['extracomments'])) . xtc_draw_hidden_field
('extracomments', $order->info['extracomments']));} Nachdem der Text aus $_POST in $_SESSION geschrieben wurde und nun im order-Objekt ist, wird wie beim bisherigen comments-Feld der Inhalt an Smarty übergeben und kann dann wie $ORDER_COMMENTS in der checkout_confirmation.html ausgegeben werden.
templates/tpl_modified_responsive/module/checkout_confirmation.html (bei mir Zeile 101)
{if $ORDER_EXTRA_COMMENTS != ''}
<div class="twoColums">
<div class="highlightbox plainleft">
<h4 class="checkout">{#text_extra_comments#}{if isset($PAYMENT_EDIT)} <a class="midi" href="{$PAYMENT_EDIT}">{#text_edit#}</a>{/if}</h4>
{$ORDER_EXTRA_COMMENTS}
</div>
</div>
{/if}
Jetzt müssen die Daten noch nach Bestellabschluss in die Datenbank. Dazu vorab in der Tabelle
orders das Feld
comments mit neuen Namen duplizieren.
checkout_process.php (bei mir Zeile 90)
$sql_data_array = array ( [...] 'comments' => $order->info['comments'], 'extracomments' => $order->info['extracomments'],); So kommt der Text aus dem order-Objekt in die Datenbank-Anweisung für den Eintrag.
Ich hoffe, dass es so bei dir auch klappt.
Viele Grüße
Alex