Bitte um Hilfe

  • Hallo,

    also es geht sich um das Modul "Newsletter bei Bestellung"

    funktioniert auch soweit, nur wird der Kunde bei jeder Bestellung erneut in die Newsletterliste eingetragen (auch wenn er schon drinne steht)


    in der checkout_process.php wird durch das Modul folgender Code hinzugefügt:

    Code
    /checkout_process.phpif ($_POST['newsletter'] != '') {	$check_mail_query = xtc_db_query("select customers_email_address, customers_status, customers_firstname, customers_lastname from ".TABLE_CUSTOMERS." where customers_id = '".$_SESSION['customer_id']."'");	if (xtc_db_num_rows($check_mail_query)) {		$check_customer = xtc_db_fetch_array($check_mail_query);		$customers_id = $check_customer['customers_id'];		$customers_status = $check_customer['customers_status'];		$customers_firstname = $check_customer['customers_firstname'];		$customers_lastname = $check_customer['customers_lastname'];		$customers_email_address = $check_customer['customers_email_address'];		$vlcode = xtc_random_charcode(32);		$link = xtc_href_link(FILENAME_NEWSLETTER, 'action=activate&email='.$customers_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', $_POST['email']);		$smarty->assign('LINK', $link);		// dont allow cache		$smarty->caching = false;		// create mails		$html_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/newsletter_mail.html');		$txt_mail = $smarty->fetch(CURRENT_TEMPLATE.'/mail/'.$_SESSION['language'].'/newsletter_mail.txt');		$check_mail_query = xtc_db_query("select customers_id from ".TABLE_NEWSLETTER_RECIPIENTS." where customers_id = '".$_SESSION['customer_id']."'");		if (!xtc_db_num_rows($check_mail_query)) {			$sql_data_array = array ('customers_email_address' => $customers_email_address, 'customers_id' => $customers_id, 'customers_status' => $customers_status, 'customers_firstname' => $customers_firstname, 'customers_lastname' => $customers_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, $customers_email_address, '', '', EMAIL_SUPPORT_REPLY_ADDRESS, EMAIL_SUPPORT_REPLY_ADDRESS_NAME, '', '', TEXT_EMAIL_SUBJECT, $html_mail, $txt_mail);			}		} else {			if (SEND_EMAILS == true) {				xtc_php_mail(EMAIL_SUPPORT_ADDRESS, EMAIL_SUPPORT_NAME, $_POST['email'], '', '', EMAIL_SUPPORT_REPLY_ADDRESS, EMAIL_SUPPORT_REPLY_ADDRESS_NAME, '', '', TEXT_EMAIL_SUBJECT, $html_mail, $txt_mail);			}		}	} else {	}}


    wie zu sehen erfolgt leider keine Abfrage, ob bereits ein Newsletter zum Kunden eingerichtet ist.
    daher nun mal kurz gedacht... im Newslettersystem vom Shop ist die Abfrage für existierende Abonnenten bereits enthalten...


    in der newsletter.php ist also nun die abfrage // Check if email exists vorhanden...

    kann mir evtl noch jemand helfen diese // Check if email exists abfrage auch in das Codestück zur Checkout_process einzuarbeiten ? :)

    Ziel ist es, dass wenn der User schon eine newsletter abbo hat, er dann einfach keine neue aktivierungsmail mehr bekommt (auch keine Info) einfach nur keine 2. Mail bei der bestellung.

  • Aber mal eine andere Frage. Macht es nicht mehr Sinn, das Modul "Newsletter bei Anmeldung" zu nehmen? Da würden die Effekte nicht auftreten.
    Zu Deinem Problem, ich würde eine Abfrage vor die Checkbox einbauen, ob der Kunde schon den Newsletter aktiviert hat und nur wenn nicht, die Checkbox ausgeben.

    Ganz grob:

    if Kunde da
    > Kein Newsletter
    else
    > Newsletterbox aktiv
    ...

    Die Abrage muss natürlich an alle Stellen, wo es abgefragt wird rein, also:
    /checkout_confirmation.php
    /templates/TEMPLATE/module/checkout_conformation.html
    /checkout_process.php

  • checkout_process.php

    checkout_conformation.html

    checkout_confirmation.php
    und nun wirds kompliziert, da originalcode ersetzt werden soll... einfach per if-else ausklammern geht also nicht.

  • Warum?
    Man kann doch auch die Abfrage einbauen:

    Wenn Newsletter noch nicht gesetzt dan mache
    $smarty->assign('CHECKOUT_BUTTON', xtc_image_submit('button_confirm_order.gif', IMAGE_BUTTON_CONFIRM_ORDER)."\n");

    Wenn nicht dann das

    $smarty->assign('CHECKOUT_BUTTON', xtc_image_submit('button_confirm_order.gif', IMAGE_BUTTON_CONFIRM_ORDER).'</form>'."\n");

    und das gleiche bei der 2. Änderung.

  • wäre echt super :* ;)

    also wichtig wäre, dass die Abfrage aus der Tabelle der aktiven Newsletterabonennten erfolt (gibt ja noch die für inaktive usw)

    also auf php-deutsch sähe es so aus:

    also nur nicht das das bisher falsch verstanden war und die mühe hinterher umsonst.

  • kommt schon :)

    an den ersten der etwas funktionierendes postet gibts 10 EUR via paypal!!

  • Zitat von Mr.An0nym


    kommt schon :)

    an den ersten der etwas funktionierendes postet gibts 10 EUR via paypal!!

    Muss es auch zum Thema passen ?
    Wenn nicht dann:

    PHP
    <?php echo 'Hallo Welt!'; ?>

    Meine Paypal Adresse ist billing@ballon4u.eu

    Lg, Chris

    <a haref="htätäpäh://wähwähwäh.ballon4u.eu">Geburtstagsgeschenke</a>

  • ne du, das funktioniert so leider nicht ;D

    wenn aber was funktionierendes ZUM THEMA kommt, dann steht das angebot noch..