I know PHP is server-side. that is why it seemed odd that commenting it out worked on one client and not the other. Anyway, here is the file, and I really appreciate the rapid response and your looking into it. [if there is a problem with formatting here, the file is also at
http://bozemanbagelworks.com/catalog/ch ... fo.tpl.txt] THANK YOU!.
product_info.tpl.php
<?php
/*
$Id: product_info.tpl.php,v 1.2.0.0 2008/01/22 13:41:11 datazen Exp $
CRE Loaded, Open Source E-Commerce Solutions
http://www.creloaded.com
Copyright (c) 2008 CRE Loaded
Copyright (c) 2003 osCommerce
Released under the GNU General Public License
*/
// RCI code start
echo $cre_RCI->get('global', 'top');
echo $cre_RCI->get('productinfo', 'top');
// RCI code eof
echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product' . '&' . $params)); ?>
<table border="0" width="100%" cellspacing="0" cellpadding="<?php echo CELLPADDING_SUB;?>">
<?php
// added for CDS CDpath support
$params = (isset($_SESSION['CDpath'])) ? 'CDpath=' . $_SESSION['CDpath'] : '';
if ($product_check['total']< 1) {
?>
<tr>
<td><?php new infoBox(array(array('text' => TEXT_PRODUCT_NOT_FOUND))); ?></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
<tr class="infoBoxContents">
<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
<td align="right"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT, $params) . '">' . tep_template_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>
<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<?php
} else {
$product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, p.products_image_med, p.products_image_lrg, p.products_image_sm_1, p.products_image_xl_1, p.products_image_sm_2, p.products_image_xl_2, p.products_image_sm_3, p.products_image_xl_3, p.products_image_sm_4, p.products_image_xl_4, p.products_image_sm_5, p.products_image_xl_5, p.products_image_sm_6, p.products_image_xl_6, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$_GET['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
$product_info = tep_db_fetch_array($product_info_query);
tep_db_query("update " . TABLE_PRODUCTS_DESCRIPTION . " set products_viewed = products_viewed+1 where products_id = '" . (int)$product_info['products_id'] . "' and language_id = '" . (int)$languages_id . "'");
if (tep_not_null($product_info['products_model'])) {
$products_name = $product_info['products_name'] . ' <span class="smallText">[' . $product_info['products_model'] . ']</span>';
} else {
$products_name = $product_info['products_name'];
}
if ($product_has_sub > '0'){ // if product has sub products
$products_price ='';// if you like to show some thing in place of price add here
} else {
$pf->loadProduct($product_info['products_id'],$languages_id);
$products_price = $pf->getPriceStringShort();
} // end sub product check
if (SHOW_HEADING_TITLE_ORIGINAL=='yes') {
$header_text = '';
?>
<tr>
<td><table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td class="pageHeading"><?php echo $products_name; ?></td>
<td class="pageHeading" align="right"><?php echo $products_price; ?></td>
</tr>
</table></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<?php
} else {
$header_text = $products_name .'</td><td class="productlisting-headingPrice">' . $products_price;
}
// RCI code start
echo $cre_RCI->get('productinfo', 'underpriceheading');
// RCI code eof
if (MAIN_TABLE_BORDER == 'yes'){
table_image_border_top(false, false, $header_text);
}
?>
<tr>
<td class="main"><table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="main" valign="top">
<?php if (tep_not_null($product_info['products_image']) || tep_not_null($product_info['products_image_med'])) { ?>
<table border="0" cellspacing="0" cellpadding="0" align="right">
<tr>
<td>
<?php
if ($product_info['products_image_med']!='') {
$new_image = $product_info['products_image_med'];
$image_width = MEDIUM_IMAGE_WIDTH;
$image_height = MEDIUM_IMAGE_HEIGHT;
} else {
$new_image = $product_info['products_image'];
$image_width = SMALL_IMAGE_WIDTH;
$image_height = SMALL_IMAGE_HEIGHT;
}
$popup_avail = tep_not_null($product_info['products_image_lrg']) ? true : false;
echo tep_javascript_image(DIR_WS_IMAGES . $new_image, 'product' . $product_info['products_id'], addslashes($product_info['products_name']), $image_width, $image_height, 'hspace="5" vspace="5"', $popup_avail);
if (isset($_SESSION['affiliate_id'])) {
echo '<br><br><a href="' . tep_href_link(FILENAME_AFFILIATE_BANNERS_BUILD, 'individual_banner_id=' . $product_info['products_id'] . '&' . $params) .'" target="_self">' . tep_template_image_button('button_affiliate_build_a_link.gif', LINK_ALT) . ' </a>';
}
?>
</td>
</tr>
</table>
<?php } // end if image
echo '<p>' . cre_clean_product_description($product_info['products_description']) . '</p>';
echo tep_draw_separator('pixel_trans.gif', '100%', '10');
$products_id_tmp = $product_info['products_id'];
$products_id_query = $products_id_tmp;
$products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id='" . (int)$products_id_query . "' ");
$products_attributes = tep_db_fetch_array($products_attributes_query);
if ($products_attributes['total'] > 0) {
// the tax rate will be needed, so get it once
$tax_rate = tep_get_tax_rate($product_info['products_tax_class_id']);
?>
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td class="main" colspan="2"><strong><?php echo TEXT_PRODUCT_OPTIONS; ?></strong></td>
</tr>
<?php
$products_options_query = tep_db_query("SELECT pa.options_id, pa.options_values_id, pa.options_values_price, pa.price_prefix, po.options_type, po.options_length, pot.products_options_name, pot.products_options_instruct
from " . TABLE_PRODUCTS_ATTRIBUTES . " AS pa,
" . TABLE_PRODUCTS_OPTIONS . " AS po,
" . TABLE_PRODUCTS_OPTIONS_TEXT . " AS pot
WHERE pa.products_id = '" . (int)$products_id_query . "'
and pa.options_id = po.products_options_id
and po.products_options_id = pot.products_options_text_id and pot.language_id = '" . (int)$languages_id . "'
ORDER BY pa.products_options_sort_order, po.products_options_sort_order
");
// Store the information from the tables in arrays for easy of processing
$options = array();
$options_values = array();
while ($po = tep_db_fetch_array($products_options_query)) {
// we need to find the values name
if ( $po['options_type'] != 1 && $po['options_type'] != 4 ) {
$options_values_query = tep_db_query("select products_options_values_name from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id ='". $po['options_values_id'] . "' and language_id = '" . (int)$languages_id . "'");
$ov = tep_db_fetch_array($options_values_query);
} else {
$ov['products_options_values_name'] = '';
}
$options[$po['options_id']] = array('name' => $po['products_options_name'],
'type' => $po['options_type'],
'length' => $po['options_length'],
'instructions' => $po['products_options_instruct'],
'price' => $po['options_values_price'],
'prefix' => $po['price_prefix'],
);
$options_values[$po['options_id']][$po['options_values_id']] = array('name' => stripslashes($ov['products_options_values_name']),
'price' => $po['options_values_price'],
'prefix' => $po['price_prefix']);
}
foreach ($options as $oID => $op_data) {
switch ($op_data['type']) {
case 1:
$maxlength = ( $op_data['length'] > 0 ? ' maxlength="' . $op_data['length'] . '"' : '' );
$attribute_price = $currencies->display_price($op_data['price'], $tax_rate);
$tmp_html = '<input type="text" name="id[' . $oID . '][t]"' . $maxlength . ' />';
?>
<tr>
<td class="main">
<?php
echo $op_data['name'] . ':' . ($op_data['instructions'] != '' ? '<br /><span class="smallText">' . $op_data['instructions'] . '</span>' : '' );
echo ($attribute_price != 0 ? '<br><span class="smallText">' . $op_data['prefix'] . ' ' . $attribute_price . '</span>' : '' );
?>
</td>
<td class="main"><?php echo $tmp_html; ?></td>
</tr>
<?php
break;
case 4:
$text_area_array = explode(';',$op_data['length']);
$cols = $text_area_array[0];
if ( $cols == '' ) $cols = '100%';
if (isset($text_area_array[1])) {
$rows = $text_area_array[1];
} else {
$rows = '';
}
$attribute_price = $currencies->display_price($op_data['price'], $tax_rate);
$tmp_html = '<textarea name="id[' . $oID . '][t]" rows="'.$rows.'" cols="'.$cols.'" wrap="virtual" style="width:100%;"></textarea>';
?>
<tr>
<td class="main">
<?php
echo $op_data['name'] . ':' . ($op_data['instructions'] != '' ? '<br /><span class="smallText">' . $op_data['instructions'] . '</span>' : '' );
echo ($attribute_price != 0 ? '<br><span class="smallText">' . $op_data['prefix'] . ' ' . $attribute_price . '</span>' : '' );
?>
</td>
<td class="main" align="center"><?php echo $tmp_html; ?></td>
</tr>
<?php
break;
case 2:
$tmp_html = '';
foreach ( $options_values[$oID] as $vID => $ov_data ) {
if ( (float)$ov_data['price'] == 0 ) {
$price = ' ';
} else {
$price = '( ' . $ov_data['prefix'] . ' ' . $currencies->display_price($ov_data['price'], $tax_rate) . ' )';
}
$tmp_html .= '<input type="radio" name="id[' . $oID . ']" value="' . $vID . '">' . $ov_data['name'] . ' ' . $price . '<br />';
} // End of the for loop on the option value
?>
<tr>
<td class="main"><?php echo $op_data['name'] . ':' . ($op_data['instructions'] != '' ? '<br /><span class="smallText">' . $op_data['instructions'] . '</span>' : '' ); ?></td>
<td class="main"><?php echo $tmp_html; ?></td>
</tr>
<?php
break;
case 3:
$tmp_html = '';
$i = 0;
foreach ( $options_values[$oID] as $vID => $ov_data ) {
if ( (float)$ov_data['price'] == 0 ) {
$price = ' ';
} else {
$price = '( '.$ov_data['prefix'] . ' ' . $currencies->display_price($ov_data['price'], $tax_rate).' )';
}
$tmp_html .= '<input type="checkbox" name="id[' . $oID . '][c][' . $i . ']" value="' . $vID . '">' . $ov_data['name'] . ' ' . $price . '<br />';
$i++;
}
?>
<tr>
<td class="main"><?php echo $op_data['name'] . ':' . ($op_data['instructions'] != '' ? '<br /><span class="smallText">' . $op_data['instructions'] . '</span>' : '' ); ?></td>
<td class="main"><?php echo $tmp_html; ?></td>
</tr>
<?php
break;
case 0:
$tmp_html = '<select name="id[' . $oID . ']">';
foreach ( $options_values[$oID] as $vID => $ov_data ) {
if ( (float)$ov_data['price'] == 0 ) {
$price = ' ';
} else {
$price = '( '.$ov_data['prefix'] . ' ' . $currencies->display_price($ov_data['price'], $tax_rate).' )';
}
$tmp_html .= '<option value="' . $vID . '">' . $ov_data['name'] . ' ' . $price .'</option>';
} // End of the for loop on the option values
$tmp_html .= '</select>';
?>
<tr>
<td class="main"><?php echo $op_data['name'] . ':' . ($op_data['instructions'] != '' ? '<br /><span class="smallText">' . $op_data['instructions'] . '</span>' : '' ); ?></td>
<td class="main"><?php echo $tmp_html; ?></td>
</tr>
<?php
break;
} //end of switch
} //end of while
?>
</table>
<?php
} // end of ($products_attributes['total'] > 0)
?>
</td>
</tr>
</table></td>
</tr>
<?php
if (ULTIMATE_ADDITIONAL_IMAGES == 'enable') {
if ( file_exists(TEMPLATE_FS_CUSTOM_MODULES . 'additional_images.php')) {
require(TEMPLATE_FS_CUSTOM_MODULES . 'additional_images.php');
} else {
require(DIR_WS_MODULES . 'additional_images.php');
}
}
$reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " where products_id = '" . (int)$product_info['products_id'] . "'");
$reviews = tep_db_fetch_array($reviews_query);
if ($reviews['count'] > 0) {
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td class="main"><?php echo TEXT_CURRENT_REVIEWS . ' ' . $reviews['count']; ?></td>
</tr>
<?php
}
// Extra Products Fields are checked and presented
$extra_fields_query = tep_db_query("SELECT pef.products_extra_fields_status as status, pef.products_extra_fields_name as name, ptf.products_extra_fields_value as value
FROM ". TABLE_PRODUCTS_TO_PRODUCTS_EXTRA_FIELDS ." ptf,
". TABLE_PRODUCTS_EXTRA_FIELDS ." pef
WHERE ptf.products_id='".(int)$product_info['products_id']."'
and ptf.products_extra_fields_value<> ''
and ptf.products_extra_fields_id = pef.products_extra_fields_id
and (pef.languages_id='0' or pef.languages_id='".$languages_id."')
ORDER BY products_extra_fields_order");
if ( tep_db_num_rows($extra_fields_query) > 0 ) {
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td class="main"><table border="0" cellspacing="1" cellpadding="2">
<?php
while ($extra_fields = tep_db_fetch_array($extra_fields_query)) {
if (! $extra_fields['status']) continue; // show only enabled extra field
?>
<tr>
<td class="main" valign="top"><b><?php echo $extra_fields['name']; ?>: </b></td>
<td class="main" valign="top"><?php echo $extra_fields['value']; ?></td>
</tr>
<?php
}
?>
</table></td>
</tr>
<?php
}
if (tep_not_null($product_info['products_url'])) {
?>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<tr>
<td class="main"><?php echo sprintf(TEXT_MORE_INFORMATION, tep_href_link(FILENAME_REDIRECT, 'action=url&goto=' . urlencode($product_info['products_url']), 'NONSSL', true, false)); ?></td>
</tr>
<tr>
<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
</tr>
<?php
}
if ($product_info['products_date_available'] > date('Y-m-d H:i:s')) {
?>
<tr>
<td align="center" class="smallText"><?php echo sprintf(TEXT_DATE_AVAILABLE, tep_date_long($product_info['products_date_available'])); ?></td>
</tr>
<?php
} else {
?>
<tr>
<td align="center" class="smallText"><?php echo sprintf(TEXT_DATE_ADDED, tep_date_long($product_info['products_date_added'])); ?></td>
</tr>
<?php
}
if (MAIN_TABLE_BORDER == 'yes'){
table_image_border_bottom();
}
// sub product start
if (STOCK_ALLOW_CHECKOUT =='false') {
$allowcriteria = "";
}
// get sort order
$csort_order = tep_db_fetch_array(tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'CATEGORIES_SORT_ORDER'"));
$select_order_by = '';
switch ($csort_order['configuration_value']) {
case 'PRODUCT_LIST_MODEL':
$select_order_by .= 'sp.products_model';
break;
case 'PRODUCT_LIST_NAME':
$select_order_by .= 'spd.products_name';
break;
case 'PRODUCT_LIST_PRICE':
$select_order_by .= 'sp.products_price';
break;
default:
$select_order_by .= 'sp.products_model';
break;
}
if ($product_check['total'] > 0) {
?>
<tr>
<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
<tr class="infoBoxContents">
<td><table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
<td class="main" valign="middle">
<!-- <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params() . $params) . '">' . tep_template_image_button('button_reviews.gif', IMAGE_BUTTON_REVIEWS,'align="middle"') . '</a>'; ?> --></td>
<?php
if (DESIGN_BUTTON_WISHLIST == 'true') {
echo '<td align="right" class="main" valign="middle"><!-- Begin Wishlist Code -->' . "\n";
echo '<script type="text/javascript"><!--' . "\n";
echo 'function addwishlist() {' . "\n";
echo 'document.cart_quantity.action=\'' . tep_href_link(FILENAME_PRODUCT_INFO, 'action=add_wishlist' . '&' . $params) . '\';' . "\n";
echo 'document.cart_quantity.submit();' . "\n";
echo '}' . "\n";
echo '--></script>' . "\n";
echo '<a href="/javascript:addwishlist()">' . tep_template_image_button('button_add_wishlist.gif', IMAGE_BUTTON_ADD_WISHLIST,'align="middle"') . '</a>' ;
echo '</td><!-- End Wishlist Code -->';
}
} // if products_check
?>
<td class="main" align="right" valign="absmiddle"><table border="0" cellspacing="0" cellpadding="0" align="right">
<tr>
<td class="main"><?php echo TEXT_ENTER_QUANTITY . ': ';?></td>
<td class="main"><?php echo tep_draw_input_field('cart_quantity', '1', 'size="4" maxlength="4"');?> </td>
<td class="main"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_template_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART,'align="absmiddle"'); ?></td>
</tr>
</table></td>
<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
<?php
if ( (USE_CACHE == 'true') && !SID) {
echo tep_cache_also_purchased(3600);
// include(DIR_WS_MODULES . FILENAME_XSELL_PRODUCTS);
if ( file_exists(TEMPLATE_FS_CUSTOM_MODULES . FILENAME_XSELL_PRODUCTS)) {
require(TEMPLATE_FS_CUSTOM_MODULES . FILENAME_XSELL_PRODUCTS);
} else {
require(DIR_WS_MODULES . FILENAME_XSELL_PRODUCTS);
}
} else {
//include(DIR_WS_MODULES . FILENAME_XSELL_PRODUCTS_BUYNOW);
if ( file_exists(TEMPLATE_FS_CUSTOM_MODULES . FILENAME_XSELL_PRODUCTS_BUYNOW)) {
require(TEMPLATE_FS_CUSTOM_MODULES . FILENAME_XSELL_PRODUCTS_BUYNOW);
} else {
require(DIR_WS_MODULES . FILENAME_XSELL_PRODUCTS_BUYNOW);
}
//include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS);
if ( file_exists(TEMPLATE_FS_CUSTOM_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS)) {
require(TEMPLATE_FS_CUSTOM_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS);
} else {
require(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS);
}
}
}
?>
</table>
</form>
<?php
// RCI code start
echo $cre_RCI->get('productinfo', 'bottom');
echo $cre_RCI->get('global', 'bottom');
// RCI code eof
?>