Seite 1 von 1

Newsletter in der Anmeldung

Verfasst: Di 25. Sep 2012, 06:46
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>

Re: Newsletter in der Anmeldung

Verfasst: Do 27. Sep 2012, 19:52
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 ...

Re: Newsletter in der Anmeldung

Verfasst: Fr 28. Sep 2012, 08:32
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....

Re: Newsletter in der Anmeldung

Verfasst: So 23. Jun 2013, 14:38
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

Re: Newsletter in der Anmeldung

Verfasst: Mo 24. Jun 2013, 07:42
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

Re: Newsletter in der Anmeldung

Verfasst: Mo 24. Jun 2013, 08:31
von Kopernikus
Hallo Peter

Tipp Top, das war der entscheidende Punkt :D

Herzlichen Dank!