Newsletter in der Anmeldung

Du hast ein PHP-Code Problem und benötigst Hilfe bei der Lösung
Antworten
rieste
Beiträge: 134
Registriert: Fr 18. Mär 2011, 07:54
Shop Version: ECB 1.08 leider

Newsletter in der Anmeldung

Beitrag von rieste »

Hallo,

ich versuche gerade die Newsletteranmeldung in die Anmeldung zum Shop einzubauen.
Was funktioniert:
- Account anmeldung (hier wurde ja nichts geändert)
- Eintrag in newsletter_recipients mit "mail_status" = 0
- E-mail wird gesendet.

in dem Code bei Create_customer.inc ist ja der Aufruf das er eine Newsletter bestätitgung sendet - dies funktioniert aber nicht - es wird immer die standard anmelde Mail gesendet.
Ist hier ein gravierender Code Fehler meinerseits vorhanden?


---------------------------------------------------------------
\inc\create_customer.inc
---------------------------------------------------------------
Folgenden Code suchen:

Code: Alles auswählen

require_once (DIR_FS_INC.'xtc_write_user_info.inc.php');
Danach einfügen:

Code: Alles auswählen

// Newsletter Erweiterung
require_once (DIR_FS_INC.'xtc_random_charcode.inc.php');
// Newsletter Erweiterung eof

Folgenden Code suchen:

Code: Alles auswählen

$confirmation = xtc_db_prepare_input($_POST['confirmation']);
Danach einfügen:

Code: Alles auswählen

// Newsletter Erweiterung
****$aut_newsletter = xtc_db_prepare_input($_POST['aut_newsletter']);
// Newsletter Erweiterung eof
Folgenden Code suchen:

Code: Alles auswählen

if (SESSION_RECREATE == 'True') {
            xtc_session_recreate();
        }
Danach einfügen:

Code: Alles auswählen

// Newsletter Erweiterung
        if($aut_newsletter == 'true') {
            
            $vlcode = xtc_random_charcode(32);
            $link = xtc_href_link(FILENAME_NEWSLETTER, 'action=activate&email='.$email_address.'&key='.$vlcode, 'NONSSL');
        
            // assign language to template for caching
            $smarty->assign('language', $_SESSION['language']);
            $smarty->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');
            $smarty->assign('logo_path', HTTP_SERVER.DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/img/');
        
            // assign vars
            $smarty->assign('EMAIL', xtc_db_input($_POST['email']));
            $smarty->assign('LINK', $link);
            // dont allow cache
            $smarty->caching = false;
        
            // create mails
            $newsletter_html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/newsletter_mail.html');
            $newsletter_txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/newsletter_mail.txt');
            
            $sql_data_array = array ('customers_email_address' => $email_address, 'customers_id' => $_SESSION['customer_id'], 'customers_status' => $customers_status, 'customers_firstname' => $firstname, 'customers_lastname' => $lastname, 'mail_status' => '0', 'mail_key' => xtc_db_input($vlcode), 'date_added' => 'now()');
            xtc_db_perform(TABLE_NEWSLETTER_RECIPIENTS, $sql_data_array);
            
            if (SEND_EMAILS == true) {
                xtc_php_mail(EMAIL_SUPPORT_ADDRESS, EMAIL_SUPPORT_NAME, xtc_db_input($email_address), '', '', EMAIL_SUPPORT_REPLY_ADDRESS, EMAIL_SUPPORT_REPLY_ADDRESS_NAME, '', '', TEXT_EMAIL_SUBJECT, $newsletter_html_mail, $newsletter_txt_mail);
            }
        }    
        // Newsletter Erweiterung eof
Folgenden Code suchen:

Code: Alles auswählen

$smarty->assign('FORM_ACTION', xtc_draw_form('create_account', xtc_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'), 'post', 'onsubmit="return check_form(create_account);"').xtc_draw_hidden_field('action', 'process'));
Danach einfügen:

Code: Alles auswählen

// Newsletter Erweiterung
$smarty->assign('INPUT_AUT_NEWSLETTER', xtc_draw_checkbox_field('aut_newsletter', 'true', true));
// Newsletter Erweiterung eof


----------------------------------------------------------------------------
/templates/IHRTEMPLATE/snippets/create_account_form.html
----------------------------------------------------------------------------
Folgenden Code suchen:

Code: Alles auswählen

<div class="float">
    <div class="right">{$BUTTON_SUBMIT}</div>
</div>
Davor einfügen:

Code: Alles auswählen

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td class="main"></td>
  </tr>
  <tr>
    <td class="main">Newsletter</td>
  </tr>
</table> 
<table class="formArea" width="100%" border="0" cellspacing="2" cellpadding="0">
  <tr> 
    <td width="200" class="main">Newsletter abonnieren?</td>
    <td class="inputRequirement">{$INPUT_AUT_NEWSLETTER}</td>
  </tr>
</table>
Mein Seite: https://www.rieste.com
Mein Lichtshop https://licht365.com
Xantiva
Beiträge: 948
Registriert: Mo 10. Mai 2010, 16:26
Shop Version: 1.0.10 [dev]
Kontaktdaten:

Re: Newsletter in der Anmeldung

Beitrag von Xantiva »

Hi rieste,

ich bin jetzt nicht jede Zeile durchgegangen. Kannst Du sicherstellen, das der Code für die 2. Mail ausgeführt wird? Mal direkt davor etwas wie:

Code: Alles auswählen

var_dump(EMAIL_SUPPORT_ADDRESS, EMAIL_SUPPORT_NAME, xtc_db_input($email_address), '', '', EMAIL_SUPPORT_REPLY_ADDRESS, EMAIL_SUPPORT_REPLY_ADDRESS_NAME, '', '', TEXT_EMAIL_SUBJECT, $newsletter_html_mail, $newsletter_txt_mail);
die("Bin bis davor gekommen.);

xtc_php_mail(EMAIL_SUPPORT_ADDRESS, EMAIL_SUPPORT_NAME, xtc_db_input($email_address), '', '', EMAIL_SUPPORT_REPLY_ADDRESS, EMAIL_SUPPORT_REPLY_ADDRESS_NAME, '', '', TEXT_EMAIL_SUBJECT, $newsletter_html_mail, $newsletter_txt_mail);
Dann siehst Du gleich ob die Variablen alle gesetzt sind ...
Mein Shop: http://www.basteln-selbermachen.de
rieste
Beiträge: 134
Registriert: Fr 18. Mär 2011, 07:54
Shop Version: ECB 1.08 leider

Re: Newsletter in der Anmeldung

Beitrag von rieste »

Das mit dem Mail senden funktioniert mitlerweile perfekt:

Änderungen zum meinem letzten Post:

in der /inc/create_customers.inc.php

statt:

Code: Alles auswählen

 $newsletter_html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/newsletter_mail.html');
    $newsletter_txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/newsletter_mail.txt');
dieses einfügen:

Code: Alles auswählen

  new mail_template($smarty, 'newsletter_mail', array($email_address, $name));
Was passiert: Es wird eine zusätzliche Mail für den Newsletter geschickt - dafür muß man sich in
/templates/meins/mail/german (alle sprachen)
die newsletter_mail.html und newsletter_mail.txt anlegen.

In dieser Mail muss der Aktivierungslink verpackt sein.
Ich habe die Anmeldemail dann natürlich noch mit den Vorzügen des Newsletters ausgeschmückt damit die Kunden dann auch bestätigen.

Was aktuell noch nicht funktioniert ist die übermittlung an den Supermailer....
Mein Seite: https://www.rieste.com
Mein Lichtshop https://licht365.com
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Re: Newsletter in der Anmeldung

Beitrag von Kopernikus »

Hallo Peter

Heute habe ich mich mal dran gesetzt um meinen Kunden auch wieder die Möglichkeit zu gewähren, sich direkt bei der Anmeldung in den Newsletter einzutragen. Das war damals in meinem xtc Shop eines der ersten Module welches ich eingebaut hatte. :)

Dank diesem, kann ich heute immerhin ca. 2500 Kunden per Newsletter anschreiben. Da das alte Modul mit webs nicht mehr kompatibel ist, erfreute ich mich umso mehr Deiner schönen Anleitung hier.

Leider stellte ich bei folgendem Punkt fest, dass der Code in der create_customer.inc nicht mehr vorhanden ist. Ich habe verschiedene Versuche unternommen diesen irgendwo zu platzieren, doch leider ohne Erfolg. :(

Vielleicht kannst Du mal kurz in Deinen Dateien nachschauen und mir diesbezüglich einen Tipp geben ;)
rieste hat geschrieben: ---------------------------------------------------------------
\inc\create_customer.inc
---------------------------------------------------------------

Folgenden Code suchen:

Code: Alles auswählen

$smarty->assign('FORM_ACTION', xtc_draw_form('create_account', xtc_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'), 'post', 'onsubmit="return check_form(create_account);"').xtc_draw_hidden_field('action', 'process'));
Danach einfügen:

Code: Alles auswählen

// Newsletter Erweiterung
$smarty->assign('INPUT_AUT_NEWSLETTER', xtc_draw_checkbox_field('aut_newsletter', 'true', true));
// Newsletter Erweiterung eof
[/code]

Liebe Grüsse
Patrik
rieste
Beiträge: 134
Registriert: Fr 18. Mär 2011, 07:54
Shop Version: ECB 1.08 leider

Re: Newsletter in der Anmeldung

Beitrag von rieste »

Das ist der Codeteil von meiner Datei:

Code: Alles auswählen

$smarty->assign(
        'FORM_ACTION',
        xtc_draw_form(
			'form_create_account',
            xtc_href_link($createCustomerFilename, '', 'SSL'), 
			'post'
		) .
        xtc_draw_hidden_field('action', 'process')
);
// Newsletter Erweiterung RIESTE
$smarty->assign('INPUT_AUT_NEWSLETTER', xtc_draw_checkbox_field('aut_newsletter', 'true', true));
// Newsletter Erweiterung RIESTE eof
Mein Seite: https://www.rieste.com
Mein Lichtshop https://licht365.com
Kopernikus
Beiträge: 390
Registriert: Fr 19. Okt 2012, 12:15

Re: Newsletter in der Anmeldung

Beitrag von Kopernikus »

Hallo Peter

Tipp Top, das war der entscheidende Punkt :D

Herzlichen Dank!
Antworten