OS Commerce: AGB in Versandinformationen bestätigen für WP.osC

Was bisher bekannt war:

Um OS Commerce im Deutschsprachigen Raum zu benutzen, müssen diverse Erweiterungen eingebaut werden. Vorrangig ist dabei, das die AGB irgendwo im Bestellvorgang bestätigt werden müssen und das bei sämtlichen angezeigten Preisen die MwSt. und ein Hinweis auf Versandkosten eingeblendet werden muss.

Soweit so gut.

Diese Erweiterungen sind bereits vielfach verwendet und in OS Commerce eingebaut worden. Doch wie schaut die Geschichte aus, wenn man kein Standard OS Commerce nutzt? Dann heißt es oft basteln und so auch wenn man WP.osC benutzt. WP.osC ist ein OS Commerce Fork, der mit WordPress ähnlichen Template-System und einigen WordPress-spezifischen Funktionen ausgestattet wurde.

Man nehme also eine normale Anleitung für OS Commerce wie diese: „AGB’s im Schritt „Versandart“ bestätigen lassen“ und vergleiche die angegebenen Dateien mit denen die tatsächlich vorhanden sind.
Der erste Teil sieht noch gut aus:

1.)
Änderung in Datei „../catalog/checkout_shipping.php“
original QUELLTEXT:

if  (isset($quote['error'])) {
 tep_session_unregister('shipping');
}  else {
 if ( (isset($quote[0]['methods'][0]['title'])) &&  (isset($quote[0]['methods'][0]['cost'])) ) {
 $shipping =  array('id' => $shipping,
 'title' =>  (($free_shipping == true) ?  $quote[0]['methods'][0]['title'] :  $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'),
 'cost' => $quote[0]['methods'][0]['cost']);
 tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
 }
}

QUELLTEXT nach der Änderung:

if  (isset($quote['error'])) {
 tep_session_unregister('shipping');
}  else {
 if ( (isset($quote[0]['methods'][0]['title'])) &&  (isset($quote[0]['methods'][0]['cost'])) ) {
 $shipping =  array('id' => $shipping,
 'title' =>  (($free_shipping == true) ?  $quote[0]['methods'][0]['title'] :  $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'),
 'cost' => $quote[0]['methods'][0]['cost']);
 // Mod1 BEGIN: AGB pruefen @ Versandart:
 // if  conditions are not accepted, redirect the customer to this page again  (with an error)
 if (DISPLAY_CONDITIONS_ON_CHECKOUT_SHIPPING ==  'true') {
 if ($HTTP_POST_VARS['agree1'] != 'true') {
 tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING,  'error_message=' . urlencode(ERROR_CONDITIONS_NOT_ACCEPTED), 'SSL',  true, false));
 }
 }
 // Mod1 END: AGB pruefen @  Versandart
 // Original: 1 Zeile:
 tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
 }
}

Was aber Teil 2 der Anleitung angeht gibt es diesen Teil im Quelltext nicht:

2.)
weitere Änderung in Datei „../catalog/checkout_shipping.php“
original QUELLTEXT: (Einfügestelle gekennzeichnet)

<tr>
 <td><table  border="0" width="100%" cellspacing="1" cellpadding="2"  class="infoBox">
 <tr>
 <td><table border="0" width="100%" cellspacing="0"  cellpadding="2">
 <tr>
 <td><?php echo tep_draw_textarea_field('comments', 'soft',  '60', '5'); ?></td>
 </tr>
 </table></td>
 </tr>
 </table></td>
</tr>
<!-- [hier einfuegen]  -->
<tr>
 <td><?php echo  tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
 <td><table border="0" width="100%" cellspacing="1"  cellpadding="2">
 <tr  class="infoBoxContents">
 <td><table border="0"  width="100%" cellspacing="0" cellpadding="2">
 <tr>
 <td width="10"><?php echo  tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
 <td><?php echo '<b>' .  TITLE_CONTINUE_CHECKOUT_PROCEDURE . '</b><br>' .  TEXT_CONTINUE_CHECKOUT_PROCEDURE; ?></td>

Hier wird man nun auf eine kleine Odyssee geschickt, denn des Quelltext in der Datei „../catalog/checkout_shipping.php“ sieht weiter folgendermaßen aus:

<?php $where=21; ?>
<?php $nbs=1; ?>
<?php $count=0; ?>
<?php get_page(); ?>

Hier wurde bei der Programmierung leider auf jegliche Semantik verzichtet und es folgte ein Suchorgie: Wo zum Teufel ist der Inhalt versteckt???
Die Antwort:

<?php $where=21; ?>

sagt uns, das der Inhalt aus „../catalog/includes/modules/module21.php“ geladen wird. Um heraus finden, dass das so funktioniert habe ich natürlich erst ein paar Tage mit Googlen und ähnlichem verbracht (ohne Ergebniss, stattdessen brachte eine Eingebung und das durchsehen von 40 verschiedenen module##.php Dateien die Lösung) bis sich der Knoten löste.
in der module21.php ist es dann aber natürlich nicht derselbe Quelltext, bzw. wurde er komplett phptisiert, was dann so aussieht:

$page_content .= '<tr>'."\n";
$page_content .= '<td>'.  tep_draw_separator('pixel_trans.gif', '100%', '10') .'</td>'."\n";
$page_content .= '</tr>'."\n";
$page_content .= '<tr>'."\n";
$page_content .= '<td><table border="0" width="100%" cellspacing="0" cellpadding="2">'."\n";
$page_content .= '<tr>'."\n";
$page_content .= '<td><b>'.TABLE_HEADING_COMMENTS .'</b></td>'."\n";
$page_content .= '</tr>'."\n";
$page_content .= '</table></td>'."\n";

wenn man dann den richtigen Teil identifiziert hatte war es nun kein weiter Weg mehr um alles richtig einzubauen.

Neben ein Paar weiteren Kleinigkeiten, die aber wohl auch mit dem normalen OS Commerce aufgetreten wären, wars das und die Agb müssen nun vor dem Bestellvorgang bestätigt werden.

Nun steht noch die Einblendung der MwSt. an, wobei dafür ein SQL Dump notwendig ist „fürcht“.

Discussion (No comments)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.