Has anyone successfully merged the cowoa tpl_main_page.php file with same file in westminster_ new template.
Every time I try I get Syntax errors but am unable to fix them.
If you need additional info just let me know.
Thanks,
Frank
Printable View
Strange problem using cowoa 2.7
Setup:
Zencart 1.55e
Westminster_New latest version for 1.55
cowoa 2.7
With Cowoa Activated when I try to login, When the page is displayed it automatically scrolls down to the Return Customer login section with the cursor automatically in the email address box. If the customer wants to order without an account they must manually go to the top of the page and might not even be aware that this option is available.
To see this go to: http://sashaspetproducts.com/index.php?main_page=login
This is not a browser or cookie problem since I tested it with three different browsers and two different IP addresses.
Anybody got any ideas??
Frank
Log in page has an autofocus on the email line which is why its getting the courser first. You can remove it.
Code:'email_address', '', 'size="18" id="login-email-address" autofocus placeholder="
COWOA is not normally active on the login page if the cart is empty, but show during checkout with a full cart. Basically there’s nothing for COWOA to do when the cart is empty.
I wonder if I can swap position of COWOA box to the top of New/Returning Customers Part?
Current:
https://i.imgur.com/o2QhWlB.png
Wanted To Be:
https://i.imgur.com/Z0rQTPa.png
It seems I found code where the page generated...
It seems thatPHP Code:
<?php
/**
* Page Template
*
* @package templateSystem
* @copyright Copyright 2003-2011 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: tpl_login_default.php 18695 2011-05-04 05:24:19Z drbyte $
* @version $Id: Integrated COWOA v2.4 - 2007 - 2013
*/
?>
<div class="centerColumn" id="loginDefault">
<h1 id="loginDefaultHeading"><?php echo HEADING_TITLE; ?></h1>
<?php if ($messageStack->size('login') > 0) echo $messageStack->output('login'); ?>
<?php if ( USE_SPLIT_LOGIN_MODE == 'True' || $ec_button_enabled) { ?>
<!--BOF PPEC split login- DO NOT REMOVE-->
<!-- BOF COWOA 1 of 2 -->
<h3><?php echo TEXT_STANDARD_ACCOUNT_HEADING; ?></h3>
<!-- EOF COWOA 1 of 2 -->
<fieldset class="floatingBox back">
<legend><?php echo HEADING_NEW_CUSTOMER_SPLIT; ?></legend>
<?php // ** BEGIN PAYPAL EXPRESS CHECKOUT ** ?>
<?php if ($ec_button_enabled) { ?>
<div class="information"><?php echo TEXT_NEW_CUSTOMER_INTRODUCTION_SPLIT; ?></div>
<div class="center"><?php require(DIR_FS_CATALOG . DIR_WS_MODULES . 'payment/paypal/tpl_ec_button.php'); ?></div>
<hr />
<?php echo TEXT_NEW_CUSTOMER_POST_INTRODUCTION_DIVIDER; ?>
<?php } ?>
<?php // ** END PAYPAL EXPRESS CHECKOUT ** ?>
<div class="information"><?php echo TEXT_NEW_CUSTOMER_POST_INTRODUCTION_SPLIT; ?></div>
<?php echo zen_draw_form('create', zen_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL')); ?>
<div class="buttonRow forward"><?php echo zen_image_submit(BUTTON_IMAGE_CREATE_ACCOUNT, BUTTON_CREATE_ACCOUNT_ALT, 'name="registrationButton"'); ?></div>
</form>
</fieldset>
<fieldset class="floatingBox forward">
<legend><?php echo HEADING_RETURNING_CUSTOMER_SPLIT; ?></legend>
<div class="information"><?php echo TEXT_RETURNING_CUSTOMER_SPLIT; ?></div>
<?php echo zen_draw_form('login', zen_href_link(FILENAME_LOGIN, 'action=process', 'SSL'), 'post', 'id="loginForm"'); ?>
<label class="inputLabel" for="login-email-address"><?php echo ENTRY_EMAIL_ADDRESS; ?></label>
<?php echo zen_draw_input_field('email_address', '', 'size="18" id="login-email-address"'); ?>
<br class="clearBoth" />
<label class="inputLabel" for="login-password"><?php echo ENTRY_PASSWORD; ?></label>
<?php echo zen_draw_password_field('password', '', 'size="18" id="login-password"'); ?>
<br class="clearBoth" />
<div class="buttonRow forward"><?php echo zen_image_submit(BUTTON_IMAGE_LOGIN, BUTTON_LOGIN_ALT); ?></div>
<div class="buttonRow back important"><?php echo '<a href="' . zen_href_link(FILENAME_PASSWORD_FORGOTTEN, '', 'SSL') . '">' . TEXT_PASSWORD_FORGOTTEN . '</a>'; ?></div>
</form>
</fieldset>
<br class="clearBoth" />
<?php
if ($_SESSION['cart']->count_contents() > 0) { ?>
<!-- BOF COWOA 2 of 2 -->
<?php if (COWOA_STATUS == 'true') { ?>
<h3><?php echo TEXT_COWOA_HEADING; ?></h3>
<fieldset>
<legend><?php echo COWOA_HEADING; ?></legend>
<?php echo TEXT_RATHER_COWOA; ?>
<div class="buttonRow forward">
<?php echo "<a href=\"" . zen_href_link(FILENAME_NO_ACCOUNT, '', 'SSL') . "\">"; ?>
<?php echo zen_image_button(BUTTON_IMAGE_CONTINUE, BUTTON_CONTINUE_ALT); ?></a></div>
<br class="clearBoth" />
</fieldset>
<?php } ?>
<!-- EOF COWOA 2 of 2-->
<?php } ?>
<!--EOF PPEC split login- DO NOT REMOVE-->
<?php } else { ?>
<!--BOF normal login-->
<?php
if ($_SESSION['cart']->count_contents() > 0) {
?>
<div class="advisory"><?php echo TEXT_VISITORS_CART; ?></div>
<?php
}
?>
<?php echo zen_draw_form('login', zen_href_link(FILENAME_LOGIN, 'action=process', 'SSL'), 'post', 'id="loginForm"'); ?>
<fieldset>
<legend><?php echo HEADING_RETURNING_CUSTOMER; ?></legend>
<label class="inputLabel" for="login-email-address"><?php echo ENTRY_EMAIL_ADDRESS; ?></label>
<?php echo zen_draw_input_field('email_address', '', zen_set_field_length(TABLE_CUSTOMERS, 'customers_email_address', '40') . ' id="login-email-address"'); ?>
<br class="clearBoth" />
<label class="inputLabel" for="login-password"><?php echo ENTRY_PASSWORD; ?></label>
<?php echo zen_draw_password_field('password', '', zen_set_field_length(TABLE_CUSTOMERS, 'customers_password') . ' id="login-password"'); ?>
<br class="clearBoth" />
<?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
</fieldset>
<div class="buttonRow forward"><?php echo zen_image_submit(BUTTON_IMAGE_LOGIN, BUTTON_LOGIN_ALT); ?></div>
<div class="buttonRow back important"><?php echo '<a href="' . zen_href_link(FILENAME_PASSWORD_FORGOTTEN, '', 'SSL') . '">' . TEXT_PASSWORD_FORGOTTEN . '</a>'; ?></div>
</form>
<br class="clearBoth" />
<?php echo zen_draw_form('create_account', zen_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'), 'post', 'onsubmit="return check_form(create_account);" id="createAccountForm"') . zen_draw_hidden_field('action', 'process') . zen_draw_hidden_field('email_pref_html', 'email_format'); ?>
<fieldset>
<legend><?php echo HEADING_NEW_CUSTOMER; ?></legend>
<div class="information"><?php echo TEXT_NEW_CUSTOMER_INTRODUCTION; ?></div>
<?php require($template->get_template_dir('tpl_modules_create_account.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_create_account.php'); ?>
</fieldset>
<div class="buttonRow forward"><?php echo zen_image_submit(BUTTON_IMAGE_SUBMIT, BUTTON_SUBMIT_ALT); ?></div>
</form>
<!--EOF normal login-->
<?php } ?>
</div>
part is the where the box for COWOA trigger... and it's under the IF statement, since it seems to show only when there is content in cart...PHP Code:
<!-- BOF COWOA 2 of 2 -->
I wonder if I can just move move whole thing up (with IF statement)... to get the appearance I wanted or I have to adjust IF statement blocks around?
-PanZC2020
So I somehow managed to do it, modified on tpl_login_default.php file (in /includes/templates/[TEMPLATE NAME]/templates)
By moving whole block of the COWOA 2 of 2 up... along with the IF statement where it check cart empty or not...
So the file became this way...PHP Code:
<?php
if ($_SESSION['cart']->count_contents() > 0) { ?>
<!-- BOF COWOA 2 of 2 -->
<?php if (COWOA_STATUS == 'true') { ?>
<h3><?php echo TEXT_COWOA_HEADING; ?></h3>
<fieldset>
<legend><?php echo COWOA_HEADING; ?></legend>
<?php echo TEXT_RATHER_COWOA; ?>
<div class="buttonRow forward">
<?php echo "<a href=\"" . zen_href_link(FILENAME_NO_ACCOUNT, '', 'SSL') . "\">"; ?>
<?php echo zen_image_button(BUTTON_IMAGE_CONTINUE, BUTTON_CONTINUE_ALT); ?></a></div>
<br class="clearBoth" />
</fieldset>
<?php } ?>
<!-- EOF COWOA 2 of 2-->
<?php } ?>
I will keep update if there is any problems.PHP Code:
<?php
/**
* Page Template
*
* @package templateSystem
* @copyright Copyright 2003-2011 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: tpl_login_default.php 18695 2011-05-04 05:24:19Z drbyte $
* @version $Id: Integrated COWOA v2.4 - 2007 - 2013
*/
?>
<div class="centerColumn" id="loginDefault">
<h1 id="loginDefaultHeading"><?php echo HEADING_TITLE; ?></h1>
<?php if ($messageStack->size('login') > 0) echo $messageStack->output('login'); ?>
<?php if ( USE_SPLIT_LOGIN_MODE == 'True' || $ec_button_enabled) { ?>
<!--BOF PPEC split login- DO NOT REMOVE-->
<?php
if ($_SESSION['cart']->count_contents() > 0) { ?>
<!-- BOF COWOA 2 of 2 -->
<?php if (COWOA_STATUS == 'true') { ?>
<h3><?php echo TEXT_COWOA_HEADING; ?></h3>
<fieldset>
<legend><?php echo COWOA_HEADING; ?></legend>
<?php echo TEXT_RATHER_COWOA; ?>
<div class="buttonRow forward">
<?php echo "<a href=\"" . zen_href_link(FILENAME_NO_ACCOUNT, '', 'SSL') . "\">"; ?>
<?php echo zen_image_button(BUTTON_IMAGE_CONTINUE, BUTTON_CONTINUE_ALT); ?></a></div>
<br class="clearBoth" />
</fieldset>
<?php } ?>
<!-- EOF COWOA 2 of 2-->
<?php } ?>
<!-- BOF COWOA 1 of 2 -->
<h3><?php echo TEXT_STANDARD_ACCOUNT_HEADING; ?></h3>
<!-- EOF COWOA 1 of 2 -->
<fieldset class="floatingBox back">
<legend><?php echo HEADING_NEW_CUSTOMER_SPLIT; ?></legend>
<?php // ** BEGIN PAYPAL EXPRESS CHECKOUT ** ?>
<?php if ($ec_button_enabled) { ?>
<div class="information"><?php echo TEXT_NEW_CUSTOMER_INTRODUCTION_SPLIT; ?></div>
<div class="center"><?php require(DIR_FS_CATALOG . DIR_WS_MODULES . 'payment/paypal/tpl_ec_button.php'); ?></div>
<hr />
<?php echo TEXT_NEW_CUSTOMER_POST_INTRODUCTION_DIVIDER; ?>
<?php } ?>
<?php // ** END PAYPAL EXPRESS CHECKOUT ** ?>
<div class="information"><?php echo TEXT_NEW_CUSTOMER_POST_INTRODUCTION_SPLIT; ?></div>
<?php echo zen_draw_form('create', zen_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL')); ?>
<div class="buttonRow forward"><?php echo zen_image_submit(BUTTON_IMAGE_CREATE_ACCOUNT, BUTTON_CREATE_ACCOUNT_ALT, 'name="registrationButton"'); ?></div>
</form>
</fieldset>
<fieldset class="floatingBox forward">
<legend><?php echo HEADING_RETURNING_CUSTOMER_SPLIT; ?></legend>
<div class="information"><?php echo TEXT_RETURNING_CUSTOMER_SPLIT; ?></div>
<?php echo zen_draw_form('login', zen_href_link(FILENAME_LOGIN, 'action=process', 'SSL'), 'post', 'id="loginForm"'); ?>
<label class="inputLabel" for="login-email-address"><?php echo ENTRY_EMAIL_ADDRESS; ?></label>
<?php echo zen_draw_input_field('email_address', '', 'size="18" id="login-email-address"'); ?>
<br class="clearBoth" />
<label class="inputLabel" for="login-password"><?php echo ENTRY_PASSWORD; ?></label>
<?php echo zen_draw_password_field('password', '', 'size="18" id="login-password"'); ?>
<br class="clearBoth" />
<div class="buttonRow forward"><?php echo zen_image_submit(BUTTON_IMAGE_LOGIN, BUTTON_LOGIN_ALT); ?></div>
<div class="buttonRow back important"><?php echo '<a href="' . zen_href_link(FILENAME_PASSWORD_FORGOTTEN, '', 'SSL') . '">' . TEXT_PASSWORD_FORGOTTEN . '</a>'; ?></div>
</form>
</fieldset>
<br class="clearBoth" />
<!--EOF PPEC split login- DO NOT REMOVE-->
<?php } else { ?>
<!--BOF normal login-->
<?php
if ($_SESSION['cart']->count_contents() > 0) {
?>
<div class="advisory"><?php echo TEXT_VISITORS_CART; ?></div>
<?php
}
?>
<?php echo zen_draw_form('login', zen_href_link(FILENAME_LOGIN, 'action=process', 'SSL'), 'post', 'id="loginForm"'); ?>
<fieldset>
<legend><?php echo HEADING_RETURNING_CUSTOMER; ?></legend>
sqqqqq
<label class="inputLabel" for="login-email-address"><?php echo ENTRY_EMAIL_ADDRESS; ?></label>
<?php echo zen_draw_input_field('email_address', '', zen_set_field_length(TABLE_CUSTOMERS, 'customers_email_address', '40') . ' id="login-email-address"'); ?>
<br class="clearBoth" />
<label class="inputLabel" for="login-password"><?php echo ENTRY_PASSWORD; ?></label>
<?php echo zen_draw_password_field('password', '', zen_set_field_length(TABLE_CUSTOMERS, 'customers_password') . ' id="login-password"'); ?>
<br class="clearBoth" />
<?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>
</fieldset>
<div class="buttonRow forward"><?php echo zen_image_submit(BUTTON_IMAGE_LOGIN, BUTTON_LOGIN_ALT); ?></div>
<div class="buttonRow back important"><?php echo '<a href="' . zen_href_link(FILENAME_PASSWORD_FORGOTTEN, '', 'SSL') . '">' . TEXT_PASSWORD_FORGOTTEN . '</a>'; ?></div>
</form>
<br class="clearBoth" />
<?php echo zen_draw_form('create_account', zen_href_link(FILENAME_CREATE_ACCOUNT, '', 'SSL'), 'post', 'onsubmit="return check_form(create_account);" id="createAccountForm"') . zen_draw_hidden_field('action', 'process') . zen_draw_hidden_field('email_pref_html', 'email_format'); ?>
<fieldset>
<legend><?php echo HEADING_NEW_CUSTOMER; ?></legend>
<div class="information"><?php echo TEXT_NEW_CUSTOMER_INTRODUCTION; ?></div>
<?php require($template->get_template_dir('tpl_modules_create_account.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_create_account.php'); ?>
</fieldset>
<div class="buttonRow forward"><?php echo zen_image_submit(BUTTON_IMAGE_SUBMIT, BUTTON_SUBMIT_ALT); ?></div>
</form>
<!--EOF normal login-->
<?php } ?>
</div>
-PanZC2020
I'm looking for something a bit different, wondering if anyone has done that,
Instead of allowing "guest" checkout (where no account is created) I want to skip the "account creation" step, customer will add to cart, proceed to checkout, will be prompted to enter email and billing/shipping address, when customer completes the order an account will automatically be created using the entered details and perhaps a temporary password emailed to the customer.
TIA!
What your asking is already done in standard COWOA behavior, with the exception that the password is created and encrypted during the database edits.. You would have to capture the password before encryption to email it.
With COWAA, a password field is offered during shipping/billing user info gathering, if password added then account is knowingly created by the customer… standard account behavior. If left blank, then COWOA side creates an account unknowingly by the customer.
I just installed COWOA on www.alanachurch.com/library and it totally messed up the site appearance. The main box is now blue, the logo has disappeared, text links have appeared where none should be, and none of the listings fit in the main box anymore.
I took the precaution of downloading the entire site first before I very carefully installed the module, so when this happened, I re-uploaded all the files and then ran the Uninstall_COWOA.sql in the SQL Query Executor as instructed. It keeps telling me "WARNING: An Error occurred, please refresh the page and try again." And the errors have not been corrected.
The site owner is REALLY upset, and this needs to be fixed immediately. Please help?? Thank you!
Update: Okay, that's really strange...five minutes later, and we didn't do a single thing to it...suddenly the site is showing up properly again. Could anyone please explain why installing the script messed things up that way? We'd really like to get it installed, and don't know what we did wrong. Thanks!
COWOA has many changes to template and core files. I would not suggest drag and drop. Use a compare program and edit to match your site design. Editing a copy of the site on a testing server or a sub-domain would help.
Your browser cache it or cached on a server until the cached copy was refreshed you would not see the changes. Another reason to design and test local before going live.
Much of the template edits are based on the default ZC design.
The SQL error could be many things.. Without access to the site or more info not allot to go on.Quote:
It keeps telling me "WARNING: An Error occurred, please refresh the page and try again." And the errors have not been corrected.
I've not used COWOA sense designing COWAA.
A great lesson in doing every site change, even little tiny ones, on a cloned test site and never a live site!!! You may need to omit or change CSS rules in the stylesheet so they match your site's style. Also, pay attention to all element classes and IDs in the new code in case your template is using non-standard-zen-cart classes and IDs.
trying to figure this out how to use this for one page checkout if possible. I am guessing don't use no_account page but go to one page checkout page. Anyone?
got that fixed. Weird thing is COWOA settings not being displayed on configuration but when I Enter GID it goes to that. Any Ideas why?
get the words "var-type undefined: stringIgnoreNull" when submit.
http://www.targetmarts.com/index.php...gister_account
help me please,used 1.5.4
My client is running ZC V1.5.1. When I told them I could configure their store site so that customers could buy and not have to register, they were thrilled.
I downloaded the plugin and unzipped. As I was reading through the cowoa-readme.html file I discovered what seem to be some GLARING errors in the installation tab involving directory structure and file name errors. Here they are:
Core Zen Cart files Modified (APPARENT ERRORS):
- YOUR_ADMIN/orders.php
- YOUR_ADMIN/customers.php
- YOUR_ADMIN/index.php
- includes/classes/order.php
- includes/languages/YOUR_TEMPLATE/english.php
- includes/languages/english/YOUR_TEMPLATE/checkout_confirmation.php
- includes/languages/english/YOUR_TEMPLATE/checkout_payment.php
- includes/languages/english/YOUR_TEMPLATE/checkout_process <-- Filename incorrect!!!
- includes/languages/english/YOUR_TEMPLATE/checkout_shipping.php
- includes/languages/english/YOUR_TEMPLATE/gv_redeem.php
- includes/languages/english/YOUR_TEMPLATE/login.php
- includes/languages/english/YOUR_TEMPLATE/logoff.php
- includes/languages/english/YOUR_TEMPLATE/time_out.php
- includes/modules/YOUR_TEMPLATE/create_account.php
- includes/modules/pages/checkout_shipping/header_php <-- Filename incorrect!!!
- includes/modules/pages/gv_redeem/header <-- Filename incorrect!!!
- includes/modules/pages/login/header <-- Filename incorrect!!!
- includes/modules/pages/password_forgotten/header_php <-- Filename incorrect!!!
- includes/templates/YOUR_TEMPLATE/common/tpl_header.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_confirmation_default.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_payment_default.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_shipping.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_success.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_login_default.php
- includes/filenames.php
And this is how it seems it should be to match my directory structure:
- YOUR_ADMIN/orders.php
- YOUR_ADMIN/customers.php
- YOUR_ADMIN/index.php
- includes/classes/order.php
- includes/languages/english.php Corrected!!
- includes/languages/english/checkout_confirmation.php Corrected!!
- includes/languages/english/checkout_payment.php Corrected!!
- includes/languages/english/checkout_process.php Corrected!!
- includes/languages/english/checkout_shipping.php Corrected!!
- includes/languages/english/gv_redeem.php Corrected!!
- includes/languages/english/login.php Corrected!!
- includes/languages/english/logoff.php Corrected!!
- includes/languages/english/time_out.php Corrected!!
- includes/modules/create_account.php Corrected!!
- includes/modules/pages/checkout_shipping/header_php.php Corrected!!
- includes/modules/pages/gv_redeem/header_php.php Corrected!!
- includes/modules/pages/login/header_php.php Corrected!!
- includes/modules/pages/password_forgotten/header_php.php Corrected!!
- includes/templates/YOUR_TEMPLATE/common/tpl_header.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_confirmation_default.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_payment_default.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_shipping.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_checkout_success.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_login_default.php
- includes/filenames.php
Under the Core COWOA Files setion it looks like a couple lines are not correct:
- YOUR_ADMIN/includes/languages/english/extra_definitions/COWOA.php
- includes/extra_datafiles/no_account_filenames.php
- includes/extra_datafiles/order_status_filenames.php
- includes/language/english/extra_definitions/checkout_process.php
- includes/language/english/extra_definitions/order_status.php
- includes/language/english/extra_definitions/order_steps_defines.php
- includes/languages/english/YOUR_TEMPLATE/no_account.php Does not match my directory structure (no "YOUR_TEMPLATE") and I'm not sure where these should go. Do I create the YOUR_TEMPLATE/ directory?
- includes/languages/english/YOUR_TEMPLATE/order_status.php Does not match my directory structure (no "YOUR_TEMPLATE") and I'm not sure where these should go. Do I create the YOUR_TEMPLATE/ directory?
- includes/modules/YOUR_TEMPLATE/no_account.php
- includes/modules/YOUR_TEMPLATE/os_downloads.php
- includes/modules/pages/no_account/header_php.php
- includes/modules/pages/no_account/jscript_addr_pulldowns.php
- includes/modules/pages/no_account/jscript_form_check.php
- includes/modules/pages/no_account/on_load_main.js
- includes/modules/pages/order_status/header_php.php
- includes/modules/pages/order_status/jscript_main.php
- includes/templates/YOUR_TEMPLATE/css/checkout_confirmation.css
- includes/templates/YOUR_TEMPLATE/css/checkout_payment.css
- includes/templates/YOUR_TEMPLATE/css/checkout_shipping.css
- includes/templates/YOUR_TEMPLATE/css/checkout_success.css
- includes/templates/YOUR_TEMPLATE/css/no_account.css
- includes/templates/YOUR_TEMPLATE/images/arrow_checkout.gif
- includes/templates/YOUR_TEMPLATE/images/orderstep.png
- includes/templates/YOUR_TEMPLATE/templates/tpl_modules_no_account.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_modules/os_downloads.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_no_account_default.php
- includes/templates/YOUR_TEMPLATE/templates/tpl_order_status_default.php
Since I'm testing this in a dev environment I'm going to do the install as it matches my directory structure. But I'd like some feedback on this to see if my assumptions are correct. If this document, that came with the download is, indeed, incorrect, it would be nice to see a correction.
--
Bob
:huh:
Not sure if you fully comprehend what I was trying to say. And, yes, I fully understand what "YOUR_TEMPLATE" means. You'll notice I only flagged certain lines with YOUR_TEMPLATE. I'm stating the directory structure DOESN'T match my installation.
In my case YOUR_TEMPLATE = wmbrownholster.
Referring to the specific lines I flagged as errors from the installation document and replacing YOUR_TEMPLATE with wmbrownholster:
- includes/languages/wmbrownholster/english.php
- includes/languages/english/wmbrownholster/checkout_confirmation.php
- includes/languages/english/wmbrownholster/checkout_payment.php
- includes/languages/english/wmbrownholster/checkout_process <-- Filename missing the .php extension!!!
- includes/languages/english/wmbrownholster/checkout_shipping.php
- includes/languages/english/wmbrownholster/gv_redeem.php
- includes/languages/english/wmbrownholster/login.php
- includes/languages/english/wmbrownholster/logoff.php
- includes/languages/english/wmbrownholster/time_out.php
- includes/modules/wmbrownholster/create_account.php
So, are you telling me, from the above references, this is how your installation is structured? I don't have a sub-directory called wmbrownholster. The other lines from the instructions showing "YOUR_TEMPLATE" do match my installation.
Referring to the above erroneous lines my installation instead is as shown here:
- includes/languages/english.php
- includes/languages/english/checkout_confirmation.php
- includes/languages/english/checkout_payment.php
- includes/languages/english/checkout_process.php
- includes/languages/english/checkout_shipping.php
- includes/languages/english/gv_redeem.php
- includes/languages/english/login.php
- includes/languages/english/logoff.php
- includes/languages/english/time_out.php
- includes/modules/create_account.php
I'm going to use my directory structure and test. I have no intention of adding the "wmbrownholster" directories just to make it match the instructions. I'm pretty sure that would break my system.
Yes, we understand. You may not see an override directory, but that doesn't mean it's correct that way. Certain parts of Zen Cart are set up to allow you to customize your site without munging original files. It's a great way to give you a fall-back/comparison file or directory when things go bump in the night or it's time for an upgrade.
I keep a copy of lat9's overrides cheatsheet in the drawer next to me. As you get more familiar with the system, you'll better appreciate the reasoning behind its use. Definitely a trick of the trade that has saved us time and time again.
Print out a copy of the Cheatsheet and take advantage of what it can do for you.:bigups:
:no:
I've decided to abandon any attempts to install this plugin. Disregard my previous posts.
:no:
You might want to try lat9's One Page Checkout. Be aware that it uses the override system as well.
That said, you'll not find better documentation anywhere for all aspects of the mod.
Removed.
Using store version 1.5.5f and cowoa 2.4.
Couple questions:
1) Is the double semi-colon intentional? $htmlInvoiceURL=EMAIL_TEXT_INVOICE_URL_CLICK;;
2) Confirmation emails come through with define variable names:
$EMAIL_THANKS_FOR_SHOPPING
$EMAIL_DETAILS_FOLLOW
$INTRO_ORDER_NUM_TITLE $INTRO_ORDER_NUMBER
$INTRO_DATE_TITLE $INTRO_DATE_ORDERED
$INTRO_URL_TEXT
This only happens with orders from COWOA customers. Other confirmation emails are fine, so I don't think it's as simple as missing language files.
Comparing code blocks within the file for the various if statements and just not seeing any differences.
Did a file compare with original, code blocks seem OK.
Any suggestions?Code:// COWOA:If COWOA and Send Order Status is True
if ($_SESSION['COWOA'] && (COWOA_ORDER_STATUS == 'true')) {
$htmlInvoiceURL=EMAIL_TEXT_INVOICE_URL_CLICK;;
$htmlInvoiceValue=zen_href_link(FILENAME_ORDER_STATUS, 'order_id=' . $zf_insert_id, 'SSL', false);
$email_order = EMAIL_TEXT_HEADER . EMAIL_TEXT_FROM . STORE_NAME . "\n\n" .
$this->customer['firstname'] . ' ' . $this->customer['lastname'] . "\n\n" .
EMAIL_THANKS_FOR_SHOPPING . "\n" . EMAIL_DETAILS_FOLLOW . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_ORDER_NUMBER . ' ' . $zf_insert_id . "\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n" .
EMAIL_TEXT_INVOICE_URL . ' ' . zen_href_link(FILENAME_ORDER_STATUS, 'order_id=' . $zf_insert_id, 'SSL', false) . "\n\n";
$html_msg['EMAIL_TEXT_HEADER'] = EMAIL_TEXT_HEADER;
$html_msg['EMAIL_TEXT_FROM'] = EMAIL_TEXT_FROM;
$html_msg['INTRO_STORE_NAME'] = STORE_NAME;
$html_msg['EMAIL_THANKS_FOR_SHOPPING'] = EMAIL_THANKS_FOR_SHOPPING;
$html_msg['EMAIL_DETAILS_FOLLOW'] = EMAIL_DETAILS_FOLLOW;
$html_msg['INTRO_ORDER_NUM_TITLE'] = EMAIL_TEXT_ORDER_NUMBER;
$html_msg['INTRO_ORDER_NUMBER'] = $zf_insert_id;
$html_msg['INTRO_DATE_TITLE'] = EMAIL_TEXT_DATE_ORDERED;
$html_msg['INTRO_DATE_ORDERED'] = strftime(DATE_FORMAT_LONG);
$html_msg['INTRO_URL_TEXT'] = EMAIL_TEXT_INVOICE_URL_CLICK;
$html_msg['INTRO_URL_VALUE'] = zen_href_link(FILENAME_ORDER_STATUS, 'order_id=' . $zf_insert_id, 'SSL', false);
}
// COWOA:If COWOA but Send Order Status is False
if ($_SESSION['COWOA'] && (COWOA_ORDER_STATUS == 'false')){
$htmlInvoiceURL='';
$htmlInvoiceValue='';
$email_order = EMAIL_TEXT_HEADER . EMAIL_TEXT_FROM . STORE_NAME . "\n\n" .
$this->customer['firstname'] . ' ' . $this->customer['lastname'] . "\n\n" .
EMAIL_THANKS_FOR_SHOPPING . "\n" . EMAIL_DETAILS_FOLLOW . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_ORDER_NUMBER . ' ' . $zf_insert_id . "\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n\n";
$html_msg['EMAIL_TEXT_HEADER'] = EMAIL_TEXT_HEADER;
$html_msg['EMAIL_TEXT_FROM'] = EMAIL_TEXT_FROM;
$html_msg['INTRO_STORE_NAME'] = STORE_NAME;
$html_msg['EMAIL_THANKS_FOR_SHOPPING'] = EMAIL_THANKS_FOR_SHOPPING;
$html_msg['EMAIL_DETAILS_FOLLOW'] = EMAIL_DETAILS_FOLLOW;
$html_msg['INTRO_ORDER_NUM_TITLE'] = EMAIL_TEXT_ORDER_NUMBER;
$html_msg['INTRO_ORDER_NUMBER'] = $zf_insert_id;
$html_msg['INTRO_DATE_TITLE'] = EMAIL_TEXT_DATE_ORDERED;
$html_msg['INTRO_DATE_ORDERED'] = strftime(DATE_FORMAT_LONG);
$html_msg['INTRO_URL_TEXT'] = '';
$html_msg['INTRO_URL_VALUE'] = '';
}
// NO COWOA, so lets set up the Text and HTML E-mail Information for the Order History Info
if (!$_SESSION['COWOA']){
$invoiceInfo=EMAIL_TEXT_INVOICE_URL . ' ' . zen_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $zf_insert_id, 'SSL', false) . "\n\n";
$htmlInvoiceURL=EMAIL_TEXT_INVOICE_URL_CLICK;;
$htmlInvoiceValue=zen_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $zf_insert_id, 'SSL', false);
$email_order = EMAIL_TEXT_HEADER . EMAIL_TEXT_FROM . STORE_NAME . "\n\n" .
$this->customer['firstname'] . ' ' . $this->customer['lastname'] . "\n\n" .
EMAIL_THANKS_FOR_SHOPPING . "\n" . EMAIL_DETAILS_FOLLOW . "\n" .
EMAIL_SEPARATOR . "\n" .
EMAIL_TEXT_ORDER_NUMBER . ' ' . $zf_insert_id . "\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . strftime(DATE_FORMAT_LONG) . "\n" .
EMAIL_TEXT_INVOICE_URL . ' ' . zen_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $zf_insert_id, 'SSL', false) . "\n\n";
$html_msg['EMAIL_TEXT_HEADER'] = EMAIL_TEXT_HEADER;
$html_msg['EMAIL_TEXT_FROM'] = EMAIL_TEXT_FROM;
$html_msg['INTRO_STORE_NAME'] = STORE_NAME;
$html_msg['EMAIL_THANKS_FOR_SHOPPING'] = EMAIL_THANKS_FOR_SHOPPING;
$html_msg['EMAIL_DETAILS_FOLLOW'] = EMAIL_DETAILS_FOLLOW;
$html_msg['INTRO_ORDER_NUM_TITLE'] = EMAIL_TEXT_ORDER_NUMBER;
$html_msg['INTRO_ORDER_NUMBER'] = $zf_insert_id;
$html_msg['INTRO_DATE_TITLE'] = EMAIL_TEXT_DATE_ORDERED;
$html_msg['INTRO_DATE_ORDERED'] = strftime(DATE_FORMAT_LONG);
$html_msg['INTRO_URL_TEXT'] = EMAIL_TEXT_INVOICE_URL_CLICK;
$html_msg['INTRO_URL_VALUE'] = zen_href_link(FILENAME_ACCOUNT_HISTORY_INFO, 'order_id=' . $zf_insert_id, 'SSL', false);
}
Note I have reordered a couple lines as part of the trouble shooting, to see which code block is executing. Date before order number and details follow before thanks for shopping.
Add to previous question:
In the cowoa if statements it check for status of COWOA_ORDER_STATUS.
I have search for this (store admin and in the original download files) and do see where it is set, just where is checked.
Where is this variable set?
Anyone have this working on 1.5.6 yet? Seems there are a lot of significant changes in the admin pages for 1.5.6.
As mentioned above, I'm working on trying to get this working on a 1.5.6 site.
It looks like the code from admin/index.php needs to be merged into the new index_dashboard file, so that should probably be pretty straight forward.
however, there is a bunch of code from admin/orders.php that I'm not quite sure what to do with...
It looks like the process of emailing has actually been moved into another file, but I am unclear whether this needs to be moved to that other file - wherever it is - or if this needs to be processed before the function of sending emails is called...Code:// BOF COWOA SEND ORDER_STATUS EMAIL
if (COWOA_ORDER_STATUS == 'true') {
if ($check_status->fields['COWOA_order'] == 1) {
$message =
EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n\n" .
EMAIL_TEXT_INVOICE_URL . ' ' . zen_catalog_href_link(FILENAME_ORDER_STATUS, 'order_id=' . $oID, 'SSL') . "\n\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . zen_date_long($check_status->fields['date_purchased']) . "\n\n" .
strip_tags($notify_comments) .
EMAIL_TEXT_STATUS_UPDATED . sprintf(EMAIL_TEXT_STATUS_LABEL, $orders_status_array[$status] ) .
EMAIL_TEXT_STATUS_PLEASE_REPLY;
$html_msg['EMAIL_CUSTOMERS_NAME'] = $check_status->fields['customers_name'];
$html_msg['EMAIL_TEXT_ORDER_NUMBER'] = EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID;
$html_msg['EMAIL_TEXT_INVOICE_URL'] = '<a href="' . zen_catalog_href_link(FILENAME_ORDER_STATUS, 'order_id=' . $oID, 'SSL') .'">'.str_replace(':','','Click here to check the status of your order:').'</a>';
$html_msg['EMAIL_TEXT_DATE_ORDERED'] = EMAIL_TEXT_DATE_ORDERED . ' ' . zen_date_long($check_status->fields['date_purchased']);
$html_msg['EMAIL_TEXT_STATUS_COMMENTS'] = nl2br($notify_comments);
$html_msg['EMAIL_TEXT_STATUS_UPDATED'] = str_replace('\n','', EMAIL_TEXT_STATUS_UPDATED);
$html_msg['EMAIL_TEXT_STATUS_LABEL'] = str_replace('\n','', sprintf(EMAIL_TEXT_STATUS_LABEL, $orders_status_array[$status] ));
$html_msg['EMAIL_TEXT_NEW_STATUS'] = $orders_status_array[$status];
$html_msg['EMAIL_TEXT_STATUS_PLEASE_REPLY'] = str_replace('\n','', EMAIL_TEXT_STATUS_PLEASE_REPLY);
zen_mail($check_status->fields['customers_name'], $check_status->fields['customers_email_address'], EMAIL_TEXT_SUBJECT . ' #' . $oID, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'order_status');
$customer_notified = '1';
}
}
if (COWOA_ORDER_STATUS == 'false') {
if ($check_status->fields['COWOA_order'] == 1) {
$htmlInvoiceURL='';
$htmlInvoiceValue='';
$message =
EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . zen_date_long($check_status->fields['date_purchased']) . "\n\n" .
strip_tags($notify_comments) .
EMAIL_TEXT_STATUS_UPDATED . sprintf(EMAIL_TEXT_STATUS_LABEL, $orders_status_array[$status] ) .
EMAIL_TEXT_STATUS_PLEASE_REPLY;
$html_msg['EMAIL_CUSTOMERS_NAME'] = $check_status->fields['customers_name'];
$html_msg['EMAIL_TEXT_ORDER_NUMBER'] = EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID;
$html_msg['INTRO_URL_TEXT'] = '';
$html_msg['INTRO_URL_VALUE'] = '';
$html_msg['EMAIL_TEXT_DATE_ORDERED'] = EMAIL_TEXT_DATE_ORDERED . ' ' . zen_date_long($check_status->fields['date_purchased']);
$html_msg['EMAIL_TEXT_STATUS_COMMENTS'] = nl2br($notify_comments);
$html_msg['EMAIL_TEXT_STATUS_UPDATED'] = str_replace('\n','', EMAIL_TEXT_STATUS_UPDATED);
$html_msg['EMAIL_TEXT_STATUS_LABEL'] = str_replace('\n','', sprintf(EMAIL_TEXT_STATUS_LABEL, $orders_status_array[$status] ));
$html_msg['EMAIL_TEXT_NEW_STATUS'] = $orders_status_array[$status];
$html_msg['EMAIL_TEXT_STATUS_PLEASE_REPLY'] = str_replace('\n','', EMAIL_TEXT_STATUS_PLEASE_REPLY);
zen_mail($check_status->fields['customers_name'], $check_status->fields['customers_email_address'], EMAIL_TEXT_SUBJECT . ' #' . $oID, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'order_status');
$customer_notified = '1';
}
}
// EOF COWOA SEND ORDER_STATUS EMAIL
if ($check_status->fields['COWOA_order'] != 1) {
$message =
EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n\n" .
EMAIL_TEXT_INVOICE_URL . ' ' . zen_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $oID, 'SSL') . "\n\n" .
EMAIL_TEXT_DATE_ORDERED . ' ' . zen_date_long($check_status->fields['date_purchased']) . "\n\n" .
strip_tags($notify_comments) .
EMAIL_TEXT_STATUS_UPDATED . sprintf(EMAIL_TEXT_STATUS_LABEL, $orders_status_array[$status] ) .
EMAIL_TEXT_STATUS_PLEASE_REPLY;
$html_msg['EMAIL_CUSTOMERS_NAME'] = $check_status->fields['customers_name'];
$html_msg['EMAIL_TEXT_ORDER_NUMBER'] = EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID;
$html_msg['EMAIL_TEXT_INVOICE_URL'] = '<a href="' . zen_catalog_href_link(FILENAME_CATALOG_ACCOUNT_HISTORY_INFO, 'order_id=' . $oID, 'SSL') .'">'.str_replace(':','',EMAIL_TEXT_INVOICE_URL).'</a>';
$html_msg['EMAIL_TEXT_DATE_ORDERED'] = EMAIL_TEXT_DATE_ORDERED . ' ' . zen_date_long($check_status->fields['date_purchased']);
$html_msg['EMAIL_TEXT_STATUS_COMMENTS'] = nl2br($notify_comments);
$html_msg['EMAIL_TEXT_STATUS_UPDATED'] = str_replace('\n','', EMAIL_TEXT_STATUS_UPDATED);
$html_msg['EMAIL_TEXT_STATUS_LABEL'] = str_replace('\n','', sprintf(EMAIL_TEXT_STATUS_LABEL, $orders_status_array[$status] ));
$html_msg['EMAIL_TEXT_NEW_STATUS'] = $orders_status_array[$status];
$html_msg['EMAIL_TEXT_STATUS_PLEASE_REPLY'] = str_replace('\n','', EMAIL_TEXT_STATUS_PLEASE_REPLY);
$html_msg['EMAIL_PAYPAL_TRANSID'] = '';
zen_mail($check_status->fields['customers_name'], $check_status->fields['customers_email_address'], EMAIL_TEXT_SUBJECT . ' #' . $oID, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'order_status');
$customer_notified = '1';
}
// PayPal Trans ID, if any
$sql = "select txn_id, parent_txn_id from " . TABLE_PAYPAL . " where order_id = :orderID order by last_modified DESC, date_added DESC, parent_txn_id DESC, paypal_ipn_id DESC ";
$sql = $db->bindVars($sql, ':orderID', $oID, 'integer');
$result = $db->Execute($sql);
if ($result->RecordCount() > 0) {
$message .= "\n\n" . ' PayPal Trans ID: ' . $result->fields['txn_id'];
$html_msg['EMAIL_PAYPAL_TRANSID'] = $result->fields['txn_id'];
}
//send extra emails
if (SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO_STATUS == '1' and SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO != '') {
zen_mail('', SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO, SEND_EXTRA_ORDERS_STATUS_ADMIN_EMAILS_TO_SUBJECT . ' ' . EMAIL_TEXT_SUBJECT . ' #' . $oID, $message, STORE_NAME, EMAIL_FROM, $html_msg, 'order_status_extra');
}
} elseif (isset($_POST['notify']) && ($_POST['notify'] == '-1')) {
// hide comment
$customer_notified = '-1';
}
$db->Execute("insert into " . TABLE_ORDERS_STATUS_HISTORY . "
(orders_id, orders_status_id, date_added, customer_notified, comments)
values ('" . (int)$oID . "',
'" . zen_db_input($status) . "',
now(),
'" . zen_db_input($customer_notified) . "',
'" . zen_db_input($comments) . "')");
$order_updated = true;
}
COWOA is really old and with COWAA and One Page Checkout, you may be spinning your wheels.... I have COWAA setup on my 156 upgrade. I am on final testing with PHP7.3 getting ready to do the upgrade of my site. Once I'm done with that I plan to go ahead and push an update for COWAA which would save you some time. I'm pushing for this week to finish up..
It was pushed to GitHub but still haven't had time to finish it off to what I would like to do... I am using it on a ZC156b site so it is working but without a one page for checkout. https://github.com/davesaddle/zenCOWAA
Actually, theirs different behaviors depending which switch is flipped.. for my site, I used register account as the standard. Creating a full account happens during checkout if they enter a password or not.. its up to the customers. basically doing away with create account.. Guest is not the default, but can be done by any user, even an account holder.
Hello davewest,
I'm keen to try your version, just wondering if you had progressed to 1.5.6c yet?
I'm using 1.5.6c so of course I am happy to investigate on my site, but it would help to know what your baseline is at the moment.
I added a COWOA version for Zen-Cart 1.5.6c and Zen-Cart 1.5.7 here:
https://github.com/lindasdd/integratedCOWOA_2.8
The 1.5.6c version has been used in a production environment.
The 1.5.7 version has only been used in a test environment.
Once I use the 1.5.7 in production I will submit it to the plugins.
@lindasdd ... have you given OPC a try? One-Page-Checkout is a drop-in plugin at this point.
I'd be curious to hear your thoughts vs COWOA.
I never used One Page Checkout because I was not aware it also handled guest accounts.
I just installed it on my test site. I think it is pretty awesome.
A drop-in plugin that impacts so much of the site is pretty surprising.
The flow works well and makes sense.
Install was amazingly easy.
This will be the checkout I use when I go live with Zen-Cart 1.5.7 in a couple days.
I will do a bunch of customizing to the styling and layout, but that's expected.
The 1 page where I make the most changes is the login page shown in the attached pics.
Each chevron (arrow) expands that section using jquery toggle. This was most important in mobile because I felt the login page was overwhelming and this made it much simpler.
Desktop:
Attachment 19229
Mobile:
Attachment 19230
I used OPC from 1/1/21-2/20/21ish.
Pros:
- one page checkout
- installation/integration was easy and didn't require modification to core files
- guests have orders but no accounts (how one would want guest checkout to work)
Cons:
- didn't work with my current store credit tool (not OPC's fault)
- was causing some address book error log issues (possibly not OPC's fault, didn't dig in enough to figure it out)
- guests have orders but no accounts
Ultimately I had to stop using OPC because 'guests have orders but no accounts' means my sales funnel becomes broken.
The most important part of my sales funnel is a discounted sample pack product. 99% of customers order it as their first item. The discount is a one time use code.
Under OPC, guest checkout doesn't get an account, so there is no way to offer them a one time use code. The solutions are either to not offer guests a code or to not limit the code to one time use. Both have downsides.
Next step in the funnel is a one time use lower tier free shipping discount code. One time use per customer. Again, not possible with OPC.
There are potentially all sorts of work arounds but they would most likely require customers to jump through hoops which will cut conversion rates off at the knees. So not worth it. Even a simple, "check your email for the code" is too much for the first checkout experience of a customer.
Linda,
Thanks for sharing these details!
If you could "wave a wand" and have it work "your way", what would the ideal flow look like with guest checkout?
You talked about wanting them to "have an account", but let's unpack that: do they actually need an account? or do you just want the store to recognize that "hey, you've shopped with this email address before" and "therefore we're offering you the following automatic discount"? (and maybe it would be based on "you've shopped X number of times using this email address"?) ... but would getting them to provide their email address be too much to ask? (It's less than asking them to login with both an email address and a password they've gotta look up in a Welcome email).
Again: how do you envision your funnel's "rules" would get triggered by the customer, assuming the browser doesn't yet know who they are when they first visit the site?
(one idea: would they get auto-logged-in or at least auto-coupon-applied if they click a link in a marketing re-engagement email?)
Again: what do you have in mind in the "perfect system"?
I'm thinking there might be some very simple adjustments that could accommodate it, but it's tough to figure those out without knowing your ideal flow.
What I want for a "perfect system" is too custom to my needs.
Whereas if you are asking for my opinion on an optimal default checkout flow template, it would be very similar to One Page Checkout.
It just needs to be able to handle coupon code usage restrictions
To your specific ideas / questions:
- do they actually need an account? - No. If the coupon restriction programming worked off email address rather than customer ID, an account wouldn't be needed. The down side to that is what happens when email addresses change. Alternatively, for my purposes, if the system offered a different code to each email address user it could work.
- do you just want the store to recognize that "hey, you've shopped with this email address before" - that would potentially be helpful. For example it might ask, "Looks like you have returned. Would you like to use your prior details?"
- and "therefore we're offering you the following automatic discount"? - This doesn't interest me, but probably other people it would. What might interest me is a non-visible "and therefore we are NOT offering you the following automatic discount".
- and maybe it would be based on "you've shopped X number of times using this email address"? - This doesn't interest me, but probably other people it would.
- but would getting them to provide their email address be too much to ask? - No this is not too much of an ask. It is already being asked.
- would they get auto-logged-in or at least auto-coupon-applied if they click a link in a marketing re-engagement email? - That would be awesome. But isn't a requirement.
All of the above though seems like a lot of jumping through hoops for something that is already working as long as guest accounts get an account (at least in the database) like in COWOA.
Your additional questions sort of veered off on a tangent about coupons. At the moment I utilize Mailbeez to generate customer specific coupons for different scenarios - abandoned cart, winback campaigns, rewards, etc.
It's that generic "account that is really a non-account" that I'm very much trying to avoid, as well as avoiding creating "accounts" for people who haven't actually asked for an account.
I wandered into coupon discussion because that was the driver behind the problem you were reporting.
That said I can see how tracking coupon redemptions to customer-email-address in the absence of knowing a customer_id would be beneficial. Will noodle on that.
One possible solution is that coupons are limited to only full accounts AND in order to do that, but not hurt checkout conversion rate *too much*, wait till the coupon code box to state 'It looks like you would like to use a coupon. Coupon codes are only available for customers with a customer profile. Check this box to make your already entered customer details a full customer profile.'
It is important that it is presented right at the point that the customer sees the benefit and that it is effortless (just check a box).
The only thing that leaves is setting a password. Either do that on the checkout_success page (similar to how OPC asks guests if they want to make it a full account), or don't do it. And just mention in the customer welcome email that they can always set a password using the password forgotten tool.
If someone created the above flow I would run it through my A/B testing to see the impact on conversion rates.
The highlighted bit above is already handled by OPC, you'd just define ot_coupon as an order total that doesn't apply to guest checkout. The messaging could be done via a messageStack output on OPC's data-gathering page that kicks in if the customer is in guest-checkout.
Yes, which is awesome.
But without "Check this box to make your already entered customer details a full customer profile." it isn't solving my problem.
One solution might be to state at the login page "Guest Checkout customers can not use coupons." - except good luck doing that in a way that customers notice without it being overly intrusive. So either you have a login page that yells the info to everyone, or you have a guest customer who is now frustrated because they already put their info in, but now can't use a code.
There's also a constant definition (present in /includes/languages/english/checkout_one.php):
If that language constant isn't an empty string (as distributed), then that information displays at the top of the checkout_one page's rendering. You could modify that to indicate the "guests can't use coupons" text.Code:// -----
// This constant defines the instructions you want displayed at the very top of the "checkout_one" page, before the form entry.
//
define ('TEXT_CHECKOUT_ONE_TOP_INSTRUCTIONS', ''); //-Displayed within a set of <p>...</p> tags if not empty.
Yes, but again, not an ideal solution from a user experience and conversion rate perspective.
I have found a problem with the version of COWOA that I use with my clients (as I upgrade, it gets deleted). In the meantime, I believe the version I'm using has an issue with discount coupons and sales tax. I have checked everything I can think of but if one uses a discount coupon to check out, it does not add sales tax. I checked to make sure that the order total order had discount coupon before sales tax and there's nothing else there except shipping. But if I check out without a coupon, it charges sales tax. The question becomes what version of COWOA and where did I get it from last? I think it was the last posted on github but I don't have a clue which one - I just see I downloaded 2016 - at some point I may have done some upgrading of it for 1.5.5. I've advised my client that removal is the best way to go forward.
I do like the way this one works by the way as opposed to any of the others I've tried. The only thing I didn't like was the confusion created by customers who don't realize they used it before and get frustrated when they can't log in on their next visit. And then converting a site back to normal means a discussion with the site owner to see if they want to change all accounts to non guest, possibly setting up a problem with duplicate accounts.
simple in reality - blends well in checkout - I'm not a fan of the one page checkout solutions I've seen and worked with in the past. (haven't looked at the present options in a long time) What was never simple is the coding of course. Definitely would prefer the ability to make customers into full accounts in admin and some sort of fix for the duplicate email addresses - that was a good idea at the time but definitely doesn't work well at this point. But I would kept with it if someone had continued to support it.
So, yes, thanks for soliciting feedback on this topic - there's got to be a good solution possible!
I did rewrite bits of the pages - simply changing some default zen cart text with zen to make it more logical and I kept that progress bar - feel like that visual is most important. All of the steps have to be there, coding wise and process wise so why not make it more obvious? I packaged it up as a mod at one point - screenshots here: https://www.zencartdelia.com/zen-car...products_id=23 (please folks, dont' criticize that site - it's out of date and I'm in the process and deciding where to put it since I now operate under the wiztech name.
So, yes, thanks for soliciting feedback on this topic - there's got to be a good solution possible!
I haven't done so yet, but I have considered playing with the password forgotten tool so that if a COWOA account puts through a password forgotten request the email they receive states, "Your last checkout only created an order, not an account with a password. To place a new order, either use one of the New Customer paths or click here to turn your prior order details into a customer account."
That's great solution to that problem!
> ... or click here to turn your prior order details into a customer account.
Would this action simply set COWOA_account to 0 (in addition to resetting the password)?
I was thinking about ways to make COWOA accounts into regular accounts if the customer wished and wondering if this was all that was needed.