Re: Editing cart contents -- esp products with attributes
Justin, try product number 1024 enter that into the search box. Only wanted to try one product at first for testing purposes before I ported it over to all the other products.
Then you will see what I'm talking about.....after you click on the [click to edit] in the shopping cart. The product_info page doesn't go into the EDIT mode.
Re: Editing cart contents -- esp products with attributes
OK, yes I see it now. There is certainly no shortage of options on that product.
Well the problem is, as you noted, because it is not drawing the right button on the form. This can only be because this expression
Code:
if (! is_numeric($_GET['products_id'])){
Is evaluating false (ie the products_id appears to be numeric.) When the cart is being edited, the products_id paramater in the product_info page , looks like this:
products_id=181:c9f79d635f23d0c699f806417aec2f6c
Which is not numeric.
When a product is being added, it looks like this:
products_id=181
Whichis numeric
Have a look over your tpl_product_info_display.php and see if the code there matches what is in the edit_cart mod. If you can't spot the problem, sometimes it is hard to after you have read and reread the code a hundred times, you might want to just copy and paste again from the edit cart mod into the product_info page.
Let me know how you get on
Justin
Re: Editing cart contents -- esp products with attributes
So can I just remove that portion of the IF statements? or just remove the !
if ($products_qty_box_status == 0 or $products_quantity_order_max== 1 or (! is_numeric($_GET['products_id'])) ) {
//Edit Justin replaced the $the_button with a new def. that supports editing, 20071120
//if we the item being displayed was referred here from the cart, we are in edit mode
if (! is_numeric($_GET['products_id'])){
Will this affect the mod from running properly?
Thanks,
kris
Re: Editing cart contents -- esp products with attributes
Oh, no you can't remove the if statement! The mod won't run properly. I meant that there is probablya typo there, that you need to fix.
Re: Editing cart contents -- esp products with attributes
HI guys,
Quote:
Is evaluating false (ie the products_id appears to be numeric.) When the cart is being edited, the products_id paramater in the product_info page , looks like this:
products_id=181:c9f79d635f23d0c699f806417aec2f6c
Which is not numeric.
Looks just like the error I was getting when I had SEO mod installed with Edit Orders. But Hypnos doesn't seem to be using SEO so where is the extra part of the URL coming from?? And it only happens when there are attributes on the product.
:blink:
Re: Editing cart contents -- esp products with attributes
I think I should go off and take a communications course, because i seem to be blurring things for everyone. Sorry.
Zencart adds that extra part on to the products_id, when there are attributes, presumably to fill them in when you get to the product info page. If the long products_id is not there,
i)either the product has no attributes, OR,
ii) the user has not selected any attributes yet, because they have not put it into their cart.
Either way, in this case, there is nothing to edit, so edit_cart just lets it go through the normal logic.
The edit_cart mod just uses the presence of that string as a flag that the product_info page has been called by a user clicking on the products name in the shopping cart. If this is the case it shows an "update cart" button in place of an "add to cart" button. What happens when user clicks on update cart is that the original product is deleted and the new product added.(I am rewriting this part now - but won't be ready for a few days.) If the add to cart button is clicked, a new product is simply added to the cart.
Up till here is all good.
What is happening for Hypnos is that regardless of the extra long products_id being present, the edit_cart mod logic is not detecting that this is a product edit. It shows the add button, not the update button. Gaaaaargh!
Perhaps you can post what you have in your tpl_product_info_display file, Hypnos?
Justin
Re: Editing cart contents -- esp products with attributes
Justin,
Thanks for the clear explanation.
Re: Editing cart contents -- esp products with attributes
I have just uploaded a new version. It fixes the bug Agamic found, where a product could be silently removed from the shopping cart if a verification error occured while updating it.
If that doesn't affect you, then you don't need to upgrade.
Justin
Re: Editing cart contents -- esp products with attributes
What happened to my edit cart mod? It stopped working.:huh:
There is not button on the product display after "click to edit" on the cart page
This is my tpl_product_info_display.php
Code:
<?php
/**
* Page Template
*
* Loaded automatically by index.php?main_page=product_info.<br />
* Displays details of a typical product
*
* @package templateSystem
* @copyright Copyright 2003-2006 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_product_info_display.php 5369 2006-12-23 10:55:52Z drbyte $
*/
//require(DIR_WS_MODULES . '/debug_blocks/product_info_prices.php');
?>
<?php
//BOF :: Tabbed Products Pro ::
require(DIR_WS_MODULES . 'tabbed_products_pro.php');
//EOF :: Tabbed Products Pro ::
?>
<div class="centerColumn" id="productGeneral">
<!--bof Form start-->
<?php
//*** SA 03-04-08 Justin Edit_Cart Mod 20080224
if(is_numeric($_GET['products_id'])) {
$cartAction="add_product";
}else{
$cartAction = "edit_product_in_cart";
}
echo zen_draw_form('cart_quantity', zen_href_link(zen_get_info_page($_GET['products_id']), zen_get_all_get_params(array('action')) . 'action=' . $cartAction), 'post', 'enctype="multipart/form-data"') . "\n";
//the old code follows
/*
echo zen_draw_form('cart_quantity', zen_href_link(zen_get_info_page($_GET['products_id']), zen_get_all_get_params(array('action')) . 'action=add_product'), 'post', 'enctype="multipart/form-data"') . "\n";
*/
//end of add Justin Edit_Cart Mod 20080224
?>
<!--eof Form start-->
<?php if ($messageStack->size('product_info') > 0) echo $messageStack->output('product_info'); ?>
<!--bof Category Icon -->
<?php if ($module_show_categories != 0) {?>
<?php
/**
* display the category icons
*/
require($template->get_template_dir('/tpl_modules_category_icon_display.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_category_icon_display.php'); ?>
<?php } ?>
<!--eof Category Icon -->
<!--bof Prev/Next top position -->
<?php if (PRODUCT_INFO_PREVIOUS_NEXT == 1 or PRODUCT_INFO_PREVIOUS_NEXT == 3) { ?>
<?php
/**
* display the product previous/next helper
*/
require($template->get_template_dir('/tpl_products_next_previous.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_products_next_previous.php'); ?>
<?php } ?>
<!--eof Prev/Next top position-->
<!--bof Main Product Image -->
<?php
if (zen_not_null($products_image)) {
?>
<?php
/**
* display the main product image
*/
require($template->get_template_dir('/tpl_modules_main_product_image.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_main_product_image.php'); ?>
<?php
}
?>
<!--eof Main Product Image-->
<!--bof Product Name-->
<h1 id="productName" class="productGeneral"><?php echo $products_name; ?></h1>
<!--eof Product Name-->
<!--bof Product Price block -->
<h2 id="productPrices" class="productGeneral">
<?php
// base price
if ($show_onetime_charges_description == 'true') {
$one_time = '<span >' . TEXT_ONETIME_CHARGE_SYMBOL . TEXT_ONETIME_CHARGE_DESCRIPTION . '</span><br />';
} else {
$one_time = '';
}
echo $one_time . ((zen_has_product_attributes_values((int)$_GET['products_id']) and $flag_show_product_info_starting_at == 1) ? TEXT_BASE_PRICE : '') . zen_get_products_display_price((int)$_GET['products_id']);
?></h2>
<!--eof Product Price block -->
<!--bof free ship icon -->
<?php if(zen_get_product_is_always_free_shipping($products_id_current) && $flag_show_product_info_free_shipping) { ?>
<div id="freeShippingIcon"><?php echo TEXT_PRODUCT_FREE_SHIPPING_ICON; ?></div>
<?php } ?>
<!--eof free ship icon -->
<!--bof Ask a Questions -->
<span id="productQuestions" class="biggerText">
<br />
<b><?php echo '<a href="' . zen_href_link(FILENAME_ASK_A_QUESTION, 'products_id=' . $_GET['products_id']) . '">' . ASK_A_QUESTION . '</a>'; ?></b>
</span>
<!-- Alternately, you may use the button provided. To do this, insert
<div id="askQuestion" class="biggerText">
<?php //echo '<a href="' . zen_href_link(FILENAME_ASK_A_QUESTION, 'products_id=' . $_GET['products_id']) . '">' . zen_image_button(BUTTON_IMAGE_ASK_A_QUESTION, BUTTON_ASK_A_QUESTION_ALT) . '</a>'; ?></div>
<br />
-->
<!--eof Ask a Questions -->
<!--bof Add to Cart Box -->
<?php
if (CUSTOMERS_APPROVAL == 3 and TEXT_LOGIN_FOR_PRICE_BUTTON_REPLACE_SHOWROOM == '') {
// do nothing
} else {
?>
<?php
$display_qty = (($flag_show_product_info_in_cart_qty == 1 and $_SESSION['cart']->in_cart($_GET['products_id'])) ? '<p>' . PRODUCTS_ORDER_QTY_TEXT_IN_CART . $_SESSION['cart']->get_quantity($_GET['products_id']) . '</p>' : '');
//*** SA 03-04-08 Start of Edit_Cart Mod Justin 20071120
/*if ($products_qty_box_status == 0 or $products_quantity_order_max== 1) {
// hide the quantity box and default to 1
$the_button = '<input type="hidden" name="cart_quantity" value="1" />' .
zen_draw_hidden_field('products_id', (int)$_GET['products_id']) .
zen_image_submit(BUTTON_IMAGE_IN_CART, BUTTON_IN_CART_ALT);
*/
if ($products_qty_box_status == 0 or $products_quantity_order_max== 1 or (! is_numeric($_GET['products_id'])) ) {
//Edit Justin replaced the $the_button with a new def. that supports editing, 20071120
//if the item being displayed was referred here from the cart, we are in edit mode
if (! is_numeric($_GET['products_id'])){
//establish quantity of product in cart
$existing_quantity=$_SESSION['cart']->get_quantity($_GET['products_id']);
//make the edit button
$the_button = '<input type="hidden" name="cart_quantity" value="' . $existing_quantity . '" />' .
zen_draw_hidden_field('products_id', (int)$_GET['products_id']) .
zen_draw_hidden_field('edit_item_id', $_GET['products_id']) .
zen_image_submit(BUTTON_IMAGE_EDIT_CART_CONTENTS, BUTTON_IMAGE_EDIT_CART_CONTENTS_ALT);
//If we were not referred from cart, we are not in edit mode
}else{
// hide the quantity box and default to 1
$the_button = '<input type="hidden" name="cart_quantity" value="1" />' .
zen_draw_hidden_field('products_id', (int)$_GET['products_id']) .
zen_image_submit(BUTTON_IMAGE_IN_CART, BUTTON_IN_CART_ALT);
}
//================================End of Edit_Cart mod Justin 20071120
} else {
// show the quantity box
$the_button = PRODUCTS_ORDER_QTY_TEXT . '<input type="text" name="cart_quantity" value="' . (zen_get_buy_now_qty($_GET['products_id'])) . '" maxlength="6" size="4" /><br />' . zen_get_products_quantity_min_units_display((int)$_GET['products_id']) . '<br />' . zen_draw_hidden_field('products_id', (int)$_GET['products_id']) . zen_image_submit(BUTTON_IMAGE_IN_CART, BUTTON_IN_CART_ALT);
}
$display_button = zen_get_buy_now_button($_GET['products_id'], $the_button);
?>
<?php if ($display_qty != '' or $display_button != '') { ?>
<div id="cartAdd">
<?php
echo $display_qty;
echo $display_button;
?>
</div>
<?php } // display qty and button ?>
<?php } // CUSTOMERS_APPROVAL == 3 ?>
<!--eof Add to Cart Box-->
<?php
//BOF :: Tabbed Products Pro ::
echo '<div id="tpptabBlock" style="display:none;">' . $tabData . '</div>';
//EOF :: Tabbed Products Pro ::
?>
<br class="clearLeft" />
<!-- SA 08-07-07
Added clearleft here so that additional images begin
below main images.
-->
<br class="clearLeft" />
<!-- SA 08-07-07
Additional images block moved here to display after main image
-->
<!--bof Additional Product Images -->
<?php
/**
* display the products additional images
*/
require($template->get_template_dir('/tpl_modules_additional_images.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_additional_images.php'); ?>
<!--eof Additional Product Images -->
<!--bof Product description -->
<?php if ($products_description != '') { ?>
<div id="productDescription" class="productGeneral biggerText"><?php echo stripslashes($products_description); ?></div>
<?php } ?>
<!--eof Product description -->
<br class="clearBoth" />
<!--bof Product details list -->
<?php if ( (($flag_show_product_info_model == 1 and $products_model != '') or ($flag_show_product_info_weight == 1 and $products_weight !=0) or ($flag_show_product_info_quantity == 1) or ($flag_show_product_info_manufacturer == 1 and !empty($manufacturers_name))) ) { ?>
<ul id="productDetailsList" class="floatingBox back">
<?php echo (($flag_show_product_info_model == 1 and $products_model !='') ? '<li>' . TEXT_PRODUCT_MODEL . $products_model . '</li>' : '') . "\n"; ?>
<?php echo (($flag_show_product_info_weight == 1 and $products_weight !=0) ? '<li>' . TEXT_PRODUCT_WEIGHT . $products_weight . TEXT_PRODUCT_WEIGHT_UNIT . '</li>' : '') . "\n"; ?>
<?php echo (($flag_show_product_info_quantity == 1) ? '<li>' . $products_quantity . TEXT_PRODUCT_QUANTITY . '</li>' : '') . "\n"; ?>
<?php echo (($flag_show_product_info_manufacturer == 1 and !empty($manufacturers_name)) ? '<li>' . TEXT_PRODUCT_MANUFACTURER . $manufacturers_name . '</li>' : '') . "\n"; ?>
</ul>
<br class="clearBoth" />
<?php
}
?>
<!--eof Product details list -->
<!--bof Attributes Module -->
<?php
if ($pr_attr->fields['total'] > 0) {
?>
<?php
/**
* display the product atributes
*/
require($template->get_template_dir('/tpl_modules_attributes.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_attributes.php'); ?>
<?php
}
?>
<!--eof Attributes Module -->
<!--bof Quantity Discounts table -->
<?php
if ($products_discount_type != 0) { ?>
<?php
/**
* display the products quantity discount
*/
require($template->get_template_dir('/tpl_modules_products_quantity_discounts.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_products_quantity_discounts.php'); ?>
<?php
}
?>
<!--eof Quantity Discounts table -->
<!--bof Additional Product Images
This block has been moved from this original place and placed after main image
-->
<?php
/**
* display the products additional images
*/
// require($template->get_template_dir('/tpl_modules_additional_images.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_modules_additional_images.php');
?>
<!--eof Additional Product Images -->
<br class="clearBoth" />
<!--bof Prev/Next bottom position -->
<?php if (PRODUCT_INFO_PREVIOUS_NEXT == 2 or PRODUCT_INFO_PREVIOUS_NEXT == 3) { ?>
<?php
/**
* display the product previous/next helper
*/
require($template->get_template_dir('/tpl_products_next_previous.php',DIR_WS_TEMPLATE, $current_page_base,'templates'). '/tpl_products_next_previous.php'); ?>
<?php } ?>
<!--eof Prev/Next bottom position -->
<!--bof Tell a Friend button -->
<?php /*** SA 03-10-08 Added Tell a Friend commented here and added to tpl_product_reviews_default.php so that it goes into the TPP Pro ***/
//if ($flag_show_product_info_tell_a_friend == 1) { ?>
<div id="productTellFriendLink" class="buttonRow forward"><?php //echo ($flag_show_product_info_tell_a_friend == 1 ? '<a href="' . zen_href_link(FILENAME_TELL_A_FRIEND, 'products_id=' . $_GET['products_id']) . '">' . zen_image_button(BUTTON_IMAGE_TELLAFRIEND, BUTTON_TELLAFRIEND_ALT) . '</a>' : ''); ?></div>
<?php
// }
?>
<!--eof Tell a Friend button -->
<!--bof Reviews button and count-->
<?php /*** SA 03-10-08 Reviews button commented here and added to tpl_product_reviews_default.php so that it goes into the TPP Pro ***/
//if ($flag_show_product_info_reviews == 1) {
// if more than 0 reviews, then show reviews button; otherwise, show the "write review" button
//if ($reviews->fields['count'] > 0 ) { ?>
<div id="productReviewLink" class="buttonRow back"><?php //echo '<a href="' . zen_href_link(FILENAME_PRODUCT_REVIEWS, zen_get_all_get_params()) . '">' . zen_image_button(BUTTON_IMAGE_REVIEWS, BUTTON_REVIEWS_ALT) . '</a>'; ?>
</div>
<br class="clearBoth" />
<p class="reviewCount"><?php //echo ($flag_show_product_info_reviews_count == 1 ? TEXT_CURRENT_REVIEWS . ' ' . $reviews->fields['count'] : ''); ?></p>
<?php //} else { ?>
<div id="productReviewLink" class="buttonRow back"><?php //echo '<a href="' . zen_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, zen_get_all_get_params(array())) . '">' . zen_image_button(BUTTON_IMAGE_WRITE_REVIEW, BUTTON_WRITE_REVIEW_ALT) . '</a>'; ?></div>
<br class="clearBoth" />
<?php
// }
//}
?>
<!--eof Reviews button and count -->
<!--bof Product date added/available-->
<?php
if ($products_date_available > date('Y-m-d H:i:s')) {
if ($flag_show_product_info_date_available == 1) {
?>
<p id="productDateAvailable" class="productGeneral centeredContent"><?php echo sprintf(TEXT_DATE_AVAILABLE, zen_date_long($products_date_available)); ?></p>
<?php
}
} else {
if ($flag_show_product_info_date_added == 1) {
?>
<p id="productDateAdded" class="productGeneral centeredContent"><?php echo sprintf(TEXT_DATE_ADDED, zen_date_long($products_date_added)); ?></p>
<?php
} // $flag_show_product_info_date_added
}
?>
<!--eof Product date added/available -->
<!--bof Product URL -->
<?php
if (zen_not_null($products_url)) {
if ($flag_show_product_info_url == 1) {
?>
<p id="productInfoLink" class="productGeneral centeredContent"><?php echo sprintf(TEXT_MORE_INFORMATION, zen_href_link(FILENAME_REDIRECT, 'action=url&goto=' . urlencode($products_url), 'NONSSL', true, false)); ?></p>
<?php
} // $flag_show_product_info_url
}
?>
<!--eof Product URL -->
<!--bof also purchased products module-->
<?php require($template->get_template_dir('tpl_modules_also_purchased_products.php', DIR_WS_TEMPLATE, $current_page_base,'templates'). '/' . 'tpl_modules_also_purchased_products.php');?>
<!--eof also purchased products module-->
<!--bof Form close-->
</form>
<!--bof Form close-->
</div>
<?php
//BOF :: Tabbed Products Pro ::
echo $tabjscript;
//BOF :: Tabbed Products Pro ::
?>
Re: Editing cart contents -- esp products with attributes
I just peeked at your site and played around a little.
The button seems to be showing up ok. (Hooray?) But all is not well. After I edited a product and pressed the update button, that product vanished from the cart. I cannot tell easily what the problem, but it does appear that you are using some kind of SEO optimised Urls. There is no productId field visible in the URL as a GET paramater. This might be the cause of the problem.
I do not have a lot of time to investigate, sorry. What happened in between it working, and it not working?
Justin