Post by hjgode » Tue Dec 13, 2011 2:55 am

Hallo

da ich die OpenSource Idee von OpenCart unterstützen möchte, habe ich hier mal zusammengestellt, wie ich die Bestätigungs-eMail um Impressum und Wiederufsbelehrung ergänze und die IP-Adresse ausblende.

Mein Entwicklungssystem (entschuldigt mein gemischtes Deutsch/Englisch):

Code: Select all

Installed xampp17

copied online opencart (incl de language extension and elegant_gray theme, plus vqmod) dir to xampp/htdocs/opencart

edited opencart/config.php and opencart/admin/config.php

did a mysql export of the online database (phpMyAdmin)

imported mysql backup to development xampp mysql
 (phpMyAdmin)
installed netbeans
 (v7.1)
installed xdebug (xampp/php/php.ini changes and xampp/php/ext/xdebug_php)

removed opencart/vqmod xml that alter the opencart URLs

//installed smtp4dev by copying the exe to xampp/smtp4dev

//started smtp4dev

// changed to papercut as smtp4dev is not UTF-8 compatible

downloaded and installed papercut (http://papercut.codeplex.com/releases/view/41337)

started papercut

start xampp apache and mysql

check if localhost ports (80, 25, 9000) are in use (tcpmon by sysinternals), possibly kill or disable processes or change port for xdebug
 (I had to kill/stop TeamViwer and Twonky MediaServer)
check if browser can load http://localhost/opencart

start netbeans, create new project and import existing php code

check debug: start a debug of the netbeans php project, debugger will stop at first line

change netbeans setting PHP-debug stop at first line

place a break point in confirm function of opencart\catalog\model\checkout\order.php

test if debugger breaks when you place an order and press (Confirm Order)

possibly disable opencart SEO friendly URL setting

if URLs are changed (ie using vqmod beop_all_clean_urls_v1.0.4.xml), netbeans will have problems following the code (breakpoints will never been hit)

+ready to debug+

Damit konnte ich versuchen die eMail zu ändern. Ziel war es, die eMail später mit Hilfe von vqmod zu manipulieren. Für die Entwicklung und damit ich sehe wie OpenCart funktioniert, habe ich die Änderungen erst mal direkt in der order.php vorgenommen.

Ich habe zwei html Dateien für die Wiederrufsbelehrung erstellt (nur den <body>-Teil). Dies sind im Verzeichnis catalog\view\theme\wiederruf_bottom.html
catalog\view\theme\wiederruf_top.html

Die php-Datei, die ich ändern musste ist die
catalog\model\checkout\order.php
wie ich mit Hilfe dieses Forums erfahren konnte.

Vor der Zeile

Code: Select all

if ($comment && $notify) {
in der Confirm-Funktion habe ich folgenden Code eingefügt:

Code: Select all

                    //replace footer text by impressum if german session

                    if($this->session->data['language'] == 'de'){ //$language->data[code]=="de"

                        // files in opencart/catalog/view/theme/'

                        //read top html part of wiederrufsbelehrung

                        $wiederruf_top=""; 

                        $wiederruf_top = file_get_contents($filename= DIR_TEMPLATE . 'wiederruf_top.html');

                        //read bottom html part of wiederrufsbelehrung

                        $wiederruf_bottom=""; 

                        $wiederruf_bottom = file_get_contents(DIR_TEMPLATE . 'wiederruf_bottom.html');

                        //build the company address

                        $firmen_addresse = 

                            $this->config->get('config_name') . '<br>' .

                            $this->config->get('config_owner') . '<br>' .

                            str_replace(array("\r\n", "\r", "\n"), '<br />', $this->config->get('config_address')) . '<br>' .

                            $this->config->get('config_email') . '<br>' .

                            $this->config->get('config_telephone') . '<br>' .

                            $this->config->get('config_fax') . '<br>';

                        //combile top part, company address and bottom part in a new string

                        $wiederruf = $wiederruf_top . $firmen_addresse . $wiederruf_bottom;

                        //build the impressum (company address and contact info)

                        $impressum = 'Impressum:<br>' . $firmen_addresse;

                        $this->config->get('config_name') . '<br>' .

                        $this->config->get('config_owner') . '<br>' .

                        str_replace(array("\r\n", "\r", "\n"), '<br />', $this->config->get('config_address')) . '<br>' .

                        $this->config->get('config_email') . '<br>' .

                        $this->config->get('config_telephone') . '<br>' .

                        $this->config->get('config_fax') . '<br>';

                        //$this->config->get('config_title') . '<br>';

                        //replace footer in confirm eMail by our impressum and wiederrufsbelehrung

                        $template->data['text_footer'] = $impressum . $wiederruf;

Funktioniert wunderbar und deshalb habe ich das in folgende vqmod_wiederruf.xml verschoben:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?>

<modification>

        <id>Replace IP with nothing in confirm eMail</id>

        <version>1.0.0</version>

        <vqmver>1.0.9</vqmver>

        <author>hjgode</author>

        <file name="catalog\model\checkout\order.php">

                <operation>

                    <search position="replace">

                        <![CDATA[$template->data['text_ip'] = $language->get('text_new_ip');]]>

                    </search>

                    <add>

                        <![CDATA[$template->data['text_ip'] ='';

                        ]]>

                    </add>

                </operation>

                <operation>

                    <search position="replace">

                        <![CDATA[$template->data['ip'] = $order_info['ip'];]]>

                    </search>

                    <add>

                        <![CDATA[$template->data['ip'] = '';

                        ]]>

                    </add>

                </operation>

                <operation>

                    <search position="before">

                         <![CDATA[if ($comment && $notify) {]]>

                    </search>

                    <add>

                          <![CDATA[		
                    //replace footer text by impressum if german session

                    if($this->session->data['language'] == 'de'){ //$language->data[code]=="de"

                        // files in opencart/catalog/view/theme/'

                        //read top html part of wiederrufsbelehrung

                        $wiederruf_top=""; 

                        $wiederruf_top = file_get_contents($filename= DIR_TEMPLATE . 'wiederruf_top.html');

                        //read bottom html part of wiederrufsbelehrung

                        $wiederruf_bottom=""; 

                        $wiederruf_bottom = file_get_contents(DIR_TEMPLATE . 'wiederruf_bottom.html');

                        //build the company address

                        $firmen_addresse = 

                            $this->config->get('config_name') . '<br>' .

                            $this->config->get('config_owner') . '<br>' .

                            str_replace(array("\r\n", "\r", "\n"), '<br />', $this->config->get('config_address')) . '<br>' .

                            $this->config->get('config_email') . '<br>' .

                            $this->config->get('config_telephone') . '<br>' .

                            $this->config->get('config_fax') . '<br>';

                        //combile top part, company address and bottom part in a new string

                        $wiederruf = $wiederruf_top . $firmen_addresse . $wiederruf_bottom;

                        //build the impressum (company address and contact info)

                        $impressum = 'Impressum:<br>' . $firmen_addresse;

                        $this->config->get('config_name') . '<br>' .

                        $this->config->get('config_owner') . '<br>' .

                        str_replace(array("\r\n", "\r", "\n"), '<br />', $this->config->get('config_address')) . '<br>' .

                        $this->config->get('config_email') . '<br>' .

                        $this->config->get('config_telephone') . '<br>' .

                        $this->config->get('config_fax') . '<br>';

                        //$this->config->get('config_title') . '<br>';

                        //replace footer in confirm eMail by our impressum and wiederrufsbelehrung

                        $template->data['text_footer'] = $impressum . $wiederruf;

                    }]]>

                    </add>

                </operation>

         </file>

</modification>
Dies vqmod lege ich dann in das vqmod/xml Verzeichnis und bisher scheint sie zu funktionieren.

Was noch fehlt ist eine Anpassung des plain-Text eMail-Inhalts. Aber das sollte nach dieser Vorlage kein grosses Problem sein.

Was haltet Ihr davon?

~Josef

Newbie

Posts

Joined
Mon Dec 12, 2011 9:08 pm

Post by happy » Thu Dec 15, 2011 9:18 am

gute idee, allerdings wurde ich dies nicht nutzen, den ich habe fuer msnches ausland unterschiedliche agbs in multi shop.

New member

Posts

Joined
Mon Jun 21, 2010 8:33 am
Who is online

Users browsing this forum: No registered users and 4 guests