AnthonyKing Posted April 14, 2011 Share Posted April 14, 2011 As it turned out. Deleting "}" from includes/application_top.php L363 and /product_info.php L139 did the trick. I am not sure if this is a bug in the new release, or just my installation of OSC. Cheers Anthony Just finished installing 4.6.1_1 The admin console appears to be working fine, however the e-commerce site now reports the following error. Parse error: syntax error, unexpected T_CASE in /nfs/c06/h01/mnt/88348/domains/store.averagejoe2pro.com/html/includes/application_top.php on line 370 Here is the line of code that appears to be causing the problem : case 'remove_product' : if (isset($HTTP_GET_VARS['products_id'])) { Any thoughts ? Thanks! Anthony Quote Link to comment Share on other sites More sharing options...
Davefromcornwall Posted April 18, 2011 Share Posted April 18, 2011 (edited) Hi, I have QT Pro installed on my 2.3.1 store and it's working fine. But there are a few tweaks that I'd like, to make it more intuitive for the customer to use. First, is it possible for "Please Select" to be at the top of the drop-downs, with some kind of warning to the customer if they fail to select an attribute? I've had customers not changing the default and then moaning that they didn't want that colour/size. And, as the "Add To Cart" button is on the right, I think it would be more visible if the drop down list was just above it. I can do it in Paint Shop Pro, but not in php! Now: I'd like it to be like this: I'd be grateful of any help on either of these points. Kudos to all those involved in this add-on, as it already adds a lot of flexibility to the way I list products. Edited April 18, 2011 by Davefromcornwall Quote Link to comment Share on other sites More sharing options...
Davefromcornwall Posted April 18, 2011 Share Posted April 18, 2011 For adding the "Please Select" line at the top of the drop down list, there's a hack earlier in the thread, involving adding a couple of lines of code to html_output.php, which gets "Please Select" at the top of the drop down, but it also gets an "The combination of options you have selected is currently out of stock. Please select another combination" error message. I'd like that error message to appear only if the customer tries to Add the product to the cart without selecting an attribute, or if an attribute is out of stock. Quote Link to comment Share on other sites More sharing options...
Davefromcornwall Posted April 18, 2011 Share Posted April 18, 2011 (edited) Apologies for talking to myself here! But I've sort of stumbled across a solution to having "Please Select" at the top of the drop-down list, so I thought I'd share it, in case it benefits someone else. The fix from earlier in the thread works, if you also choose the correct options in the QT Pro section of the admin. So, with belated thanks to mbi15, whose "hack" this is: Open /includes/functions/html_output.php Find for ($i=0, $n=sizeof($values); $i<$n; $i++) { Immediately before that line add: $field .= '<option value="select"'; $field .= '>Please select ...</option>'; My options in Admin/Configuration/Prod Info (QTPro) are: Product Info Attribute Display Plugin sequenced_dropdownsShow Out of Stock Attributes False Mark Out of Stock Attributes Left Display Out of Stock Message Line False Prevent Adding Out of Stock to Cart True Use Actual Price Pull Downs False Display table with stock information False On a product with choice of colour (with no price variation) and choice of size (with price variation) two drop down lists, the top one's default is "First Select Colour" and the default of the second drop down is "Please Select". Out of stock items are not displayed. If a customer tries to add a product to the cart without changing the default drop-down list option, a pop-up prevents them from doing so. I have the "add-weight-to-product-attributes" add-on installed and the weight and price differential gets passed into the shopping cart. So I'm happy enough with that, so far. Now all I need is the whole lot aligned to the right, just above the Add To Cart button, and I'll be a happy camper, until the next time, anyway. Edited April 18, 2011 by Davefromcornwall Quote Link to comment Share on other sites More sharing options...
Davefromcornwall Posted April 19, 2011 Share Posted April 19, 2011 And I'm talking to myself again! But I've been busy finding stuff out which might interest others in the future, like how to sort a drop-down list and how to move the drop-down list over above the Add To Cart button, so they are more visible - both of these fixes apply only to stores with QT Pro installed, as the file that gets changed is a QT Pro file. I found the fix for the sorting of attributes here. But you don't need to install the add-on. Here are "MikeySwede"s instructions: In catalog/includes/classes/pad_base.php Find this: $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$this->products_id . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'"); REPLACE with this: // BOE: Attribute Sort with Clone Tool $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$this->products_id . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'" . " order by pa.options_values_price, pa.Products_attributes_id"); // EOE: Attribute Sort with Clone Tool And that sorts the attributes out. The odd thing is that it's not just an alphabetical sorting - I had three attributes come out like this: Small Medium Large When alphabetical sorting would have been: Large Medium Small To move the drop-down box and associated text across to the right, above the Add To Cart button, find, again in catalog/includes/classes/pad_base.php $out =' <table border="0" cellspacing="0" cellpadding="2">'; and change it to $out =' <table border="0" cellspacing="0" align="right" cellpadding="2">'; Works for me, but a reminder that "pad_base.php" comes with QR Pro, so these changes will only work for stores with QT Pro installed. I use QT Pro v4.6.1_1 and Oscommerce 2.3.1. If someone wants to see what these changes look like, my site is http://www.woofsandwags.co.uk/ Most of the Collars have attributes, so they will demonstrate what I'm talking about. Hope this helps someone. Quote Link to comment Share on other sites More sharing options...
gilo_m Posted May 12, 2011 Share Posted May 12, 2011 (edited) Hi guys, I'm looking for a demo of QTpro but the demo links from this thread don't work. Is there any WORKING demo for this contribution? Thanks. www.oscmax.com has QTPro installed in its code base ... so you could demo it there ... it also has partial merge of Option Type Features (no text option yet) Regards, Edited May 12, 2011 by gilo_m Quote Link to comment Share on other sites More sharing options...
Fortiscause Posted May 13, 2011 Share Posted May 13, 2011 Hi, I am quite a noob at this so please bear with me. I already have QT Pro + AJAX Attribute Manager installed. I am looking to sell some T-Shirts with different quantity and sizing for girls and guys. For example sake DROP BOX 1: • Guys • Girly DROP BOX 2: • 8 • Small What I needed the customer to first select if they want a Guys tee or a Girly Tee and Drop Box 2 will show the sizes available. In the admin section, the order is correct Drop Box 1 than Drop Box 2. However, when it is display on the front end of the product info, what was asked to select first was Drop Box 2, which is not what I want. Any one have any ideas on this Thank you in advance. Quote Link to comment Share on other sites More sharing options...
Eszaraxe Posted May 24, 2011 Share Posted May 24, 2011 (edited) I have now again installed QTPro 4.6.1 It looks good with one exception. When I go to product there seems to be something wrong in product_info.php. I have no left or right column. Yes, I have removed the } on line 139 <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2010 osCommerce Released under the GNU General Public License */ require('includes/application_top.php'); require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_INFO); $product_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'"); $product_check = tep_db_fetch_array($product_check_query); require(DIR_WS_INCLUDES . 'template_top.php'); if ($product_check['total'] < 1) { ?> <div class="contentContainer"> <div class="contentText"> <?php echo TEXT_PRODUCT_NOT_FOUND; ?> </div> <div style="float: right;"> <?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'triangle-1-e', tep_href_link(FILENAME_DEFAULT)); ?> </div> </div> <?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, 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)$HTTP_GET_VARS['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)$HTTP_GET_VARS['products_id'] . "' and language_id = '" . (int)$languages_id . "'"); if ($new_price = tep_get_products_special_price($product_info['products_id'])) { $products_price = '<del>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</del> <span class="productSpecialPrice">' . $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>'; } else { $products_price = $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])); } if (tep_not_null($product_info['products_model'])) { $products_name = $product_info['products_name'] . '<br /><span class="smallText">[' . $product_info['products_model'] . ']</span>'; } else { $products_name = $product_info['products_name']; } ?> <?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')); ?> <div> <h1 style="float: right;"><?php echo $products_price; ?></h1> <h1><?php echo $products_name; ?></h1> </div> <div class="contentContainer"> <div class="contentText"> <?php if (tep_not_null($product_info['products_image'])) { $pi_query = tep_db_query("select image, htmlcontent from " . TABLE_PRODUCTS_IMAGES . " where products_id = '" . (int)$product_info['products_id'] . "' order by sort_order"); if (tep_db_num_rows($pi_query) > 0) { ?> <div id="piGal" style="float: right;"> <ul> <?php $pi_counter = 0; while ($pi = tep_db_fetch_array($pi_query)) { $pi_counter++; $pi_entry = ' <li><a href="'; if (tep_not_null($pi['htmlcontent'])) { $pi_entry .= '#piGalimg_' . $pi_counter; } else { $pi_entry .= tep_href_link(DIR_WS_IMAGES . $pi['image']); } $pi_entry .= '" target="_blank" rel="fancybox">' . tep_image(DIR_WS_IMAGES . $pi['image']) . '</a>'; if (tep_not_null($pi['htmlcontent'])) { $pi_entry .= '<div style="display: none;"><div id="piGalimg_' . $pi_counter . '">' . $pi['htmlcontent'] . '</div></div>'; } $pi_entry .= '</li>'; echo $pi_entry; } ?> </ul> </div> <script type="text/javascript"> $('#piGal ul').bxGallery({ maxwidth: 300, maxheight: 200, thumbwidth: <?php echo (($pi_counter > 1) ? '75' : '0'); ?>, thumbcontainer: 300, load_image: 'ext/jquery/bxGallery/spinner.gif' }); </script> <?php } else { ?> <div id="piGal" style="float: right;"> <?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '" target="_blank" rel="fancybox">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], addslashes($product_info['products_name']), null, null, 'hspace="5" vspace="5"') . '</a>'; ?> </div> <?php } ?> <script type="text/javascript"> $("#piGal a[rel^='fancybox']").fancybox({ cyclic: true }); </script> <?php } ?> <?php echo stripslashes($product_info['products_description']); ?> <?php //++++ QT Pro: End Changed Code $products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "'"); $products_attributes = tep_db_fetch_array($products_attributes_query); if ($products_attributes['total'] > 0) { //++++ QT Pro: Begin Changed code $products_id=(preg_match("/^\d{1,10}(\{\d{1,10}\}\d{1,10})*$/",$HTTP_GET_VARS['products_id']) ? $HTTP_GET_VARS['products_id'] : (int)$HTTP_GET_VARS['products_id']); require(DIR_WS_CLASSES . 'pad_' . PRODINFO_ATTRIBUTE_PLUGIN . '.php'); $class = 'pad_' . PRODINFO_ATTRIBUTE_PLUGIN; $pad = new $class($products_id); echo $pad->draw(); } //Display a table with which attributecombinations is on stock to the customer? if(PRODINFO_ATTRIBUTE_DISPLAY_STOCK_LIST == 'True'): require(DIR_WS_MODULES . "qtpro_stock_table.php"); endif; //++++ QT Pro: End Changed Code ?> <div style="clear: both;"></div> <?php if ($product_info['products_date_available'] > date('Y-m-d H:i:s')) { ?> <p style="text-align: center;"><?php echo sprintf(TEXT_DATE_AVAILABLE, tep_date_long($product_info['products_date_available'])); ?></p> <?php } ?> </div> <?php $reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and reviews_status = 1"); $reviews = tep_db_fetch_array($reviews_query); ?> <div class="buttonSet"> <span class="buttonAction"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_draw_button(IMAGE_BUTTON_IN_CART, 'cart', null, 'primary'); ?></span> <?php echo tep_draw_button(IMAGE_BUTTON_REVIEWS . (($reviews['count'] > 0) ? ' (' . $reviews['count'] . ')' : ''), 'comment', tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params())); ?> </div> <?php if ((USE_CACHE == 'true') && empty($SID)) { echo tep_cache_also_purchased(3600); } else { include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS); } ?> </div> </form> <?php } require(DIR_WS_INCLUDES . 'template_bottom.php'); require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> Edited May 24, 2011 by Eszaraxe Quote osCommerce 2.3.1 - QTPro 4.6.1 - Ultimate SEO URL's 5 Pro r205 - Discount Code 3.1 - Column listing with smart columns - Products Sort and some more Link to comment Share on other sites More sharing options...
Eszaraxe Posted May 24, 2011 Share Posted May 24, 2011 Problem solved, it had nothing to do with product_info.php. I just had to do "chmod" here and there. Quote osCommerce 2.3.1 - QTPro 4.6.1 - Ultimate SEO URL's 5 Pro r205 - Discount Code 3.1 - Column listing with smart columns - Products Sort and some more Link to comment Share on other sites More sharing options...
♥stubbsy Posted May 24, 2011 Share Posted May 24, 2011 Hi, a minor query, on any attributes that have a price next to them is shows the price both with and without vat... e.g. "Small (+8.33)(+10.00)" Any ideas why this is, just the price including tax (as standard in osc) would be fine. 2 prices just causes confusion thanks Dave Quote Link to comment Share on other sites More sharing options...
rogertom Posted May 29, 2011 Share Posted May 29, 2011 I installed qtpro4.6.1_1_2. But I did not get the results expected. There is no place to enter the quantities of product option. The Add New product page and product Attribute page are same as before QT pro installation, At the same time, product info page (front end) become empty. Any advice? What I did is: 1) copy new files to corresponding dir in the server. 2) copy and paste the QT pro codes to the corresponding files according to change231.html. 3) Import config_and_new_install.sql to the database. The correct order of installation step should be 1), 3), 2). But I messed up the order of installation step. Does it make difference? or I missed something? Thanks. Quote Link to comment Share on other sites More sharing options...
thatguy Posted June 3, 2011 Share Posted June 3, 2011 Im at the point where im just trying to figure out how to import the sql .... first it said no database selected, so I made one (no mentioning in the manual what to call it or if it matters), then when I tried to import the sql it said no tables are in my Database. How the heck do I import it? lol. Thanks for any help! Quote Link to comment Share on other sites More sharing options...
demastermind Posted June 30, 2011 Share Posted June 30, 2011 Im at the point where im just trying to figure out how to import the sql .... first it said no database selected, so I made one (no mentioning in the manual what to call it or if it matters), then when I tried to import the sql it said no tables are in my Database. How the heck do I import it? lol. Thanks for any help! If you havn't already figured it out, simply copy the contents of the sql file and paste it in the quary window and click run or whatever the button says. It you made a tottally seperate database just for this, delete it and use the one that you use for the rest of your shop. Use the quary window, and not the import button/ method. This here is how I enter in new tables. - Luc Quote My Installed Contributions: 1. Ultimate SEO URLs V 2-2.2d-X 2. Quantity Box on Product Info Page 3. httpbl4osc Version 1.1.0 4. QTpro for osc 2.3 5. Header Tags SEO V 3.0 (For 2.3) 6. DHTML State Selection for 2.3.1 And Good To Know: I use a 960gs fluid style sheet. I do have a honey pot on my website. Store Version: 2.3 “Pain is temporary. Quitting lasts forever." - Lance Armstrong Link to comment Share on other sites More sharing options...
demastermind Posted June 30, 2011 Share Posted June 30, 2011 Is anyone else having this error? I used the qtpro 4.6.1 version. Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in HIDDEN/products_attributes.php on line 290 Can someone please fix this prblem for me. I tried changing the code to fix it but I couldn't fix it. Thanks. - Luc <?php /* $Id$ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2010 osCommerce Released under the GNU General Public License */ require('includes/application_top.php'); $languages = tep_get_languages(); $action = (isset($HTTP_GET_VARS['action']) ? $HTTP_GET_VARS['action'] : ''); $option_page = (isset($HTTP_GET_VARS['option_page']) && is_numeric($HTTP_GET_VARS['option_page'])) ? $HTTP_GET_VARS['option_page'] : 1; $value_page = (isset($HTTP_GET_VARS['value_page']) && is_numeric($HTTP_GET_VARS['value_page'])) ? $HTTP_GET_VARS['value_page'] : 1; $attribute_page = (isset($HTTP_GET_VARS['attribute_page']) && is_numeric($HTTP_GET_VARS['attribute_page'])) ? $HTTP_GET_VARS['attribute_page'] : 1; $page_info = 'option_page=' . $option_page . '&value_page=' . $value_page . '&attribute_page=' . $attribute_page; if (tep_not_null($action)) { switch ($action) { case 'add_product_options': $products_options_id = tep_db_prepare_input($HTTP_POST_VARS['products_options_id']); $option_name_array = $HTTP_POST_VARS['option_name']; for ($i=0, $n=sizeof($languages); $i<$n; $i ++) { $option_name = tep_db_prepare_input($option_name_array[$languages[$i]['id']]); //++++ QT Pro: Begin Changed code $track_stock=isset($HTTP_POST_VARS['track_stock'])?1:0; tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS . " (products_options_id, products_options_name, language_id,products_options_track_stock) values ('" . (int)$products_options_id . "', '" . tep_db_input($option_name) . "', '" . (int)$languages[$i]['id'] . "', '" . (int)$track_stock . "')"); //++++ QT Pro: End Changed Code } tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; case 'add_product_option_values': $value_name_array = $HTTP_POST_VARS['value_name']; $value_id = tep_db_prepare_input($HTTP_POST_VARS['value_id']); $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']); for ($i=0, $n=sizeof($languages); $i<$n; $i ++) { $value_name = tep_db_prepare_input($value_name_array[$languages[$i]['id']]); tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES . " (products_options_values_id, language_id, products_options_values_name) values ('" . (int)$value_id . "', '" . (int)$languages[$i]['id'] . "', '" . tep_db_input($value_name) . "')"); } tep_db_query("insert into " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " (products_options_id, products_options_values_id) values ('" . (int)$option_id . "', '" . (int)$value_id . "')"); tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; case 'add_product_attributes': $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']); $options_id = tep_db_prepare_input($HTTP_POST_VARS['options_id']); $values_id = tep_db_prepare_input($HTTP_POST_VARS['values_id']); $value_price = tep_db_prepare_input($HTTP_POST_VARS['value_price']); $price_prefix = tep_db_prepare_input($HTTP_POST_VARS['price_prefix']); tep_db_query("insert into " . TABLE_PRODUCTS_ATTRIBUTES . " values (null, '" . (int)$products_id . "', '" . (int)$options_id . "', '" . (int)$values_id . "', '" . (float)tep_db_input($value_price) . "', '" . tep_db_input($price_prefix) . "')"); if (DOWNLOAD_ENABLED == 'true') { $products_attributes_id = tep_db_insert_id(); $products_attributes_filename = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_filename']); $products_attributes_maxdays = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxdays']); $products_attributes_maxcount = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxcount']); if (tep_not_null($products_attributes_filename)) { tep_db_query("insert into " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " values (" . (int)$products_attributes_id . ", '" . tep_db_input($products_attributes_filename) . "', '" . tep_db_input($products_attributes_maxdays) . "', '" . tep_db_input($products_attributes_maxcount) . "')"); } } tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; case 'update_option_name': $option_name_array = $HTTP_POST_VARS['option_name']; $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']); for ($i=0, $n=sizeof($languages); $i<$n; $i ++) { $option_name = tep_db_prepare_input($option_name_array[$languages[$i]['id']]); //++++ QT Pro: Begin Changed code $track_stock=isset($HTTP_POST_VARS['track_stock'])?1:0; tep_db_query("update " . TABLE_PRODUCTS_OPTIONS . " set products_options_track_stock='" . (int)$track_stock . "',products_options_name = '" . tep_db_input($option_name) . "' where products_options_id = '" . (int)$option_id . "' and language_id = '" . (int)$languages[$i]['id'] . "'"); //++++ QT Pro: End Changed Code } tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; case 'update_value': $value_name_array = $HTTP_POST_VARS['value_name']; $value_id = tep_db_prepare_input($HTTP_POST_VARS['value_id']); $option_id = tep_db_prepare_input($HTTP_POST_VARS['option_id']); for ($i=0, $n=sizeof($languages); $i<$n; $i ++) { $value_name = tep_db_prepare_input($value_name_array[$languages[$i]['id']]); tep_db_query("update " . TABLE_PRODUCTS_OPTIONS_VALUES . " set products_options_values_name = '" . tep_db_input($value_name) . "' where products_options_values_id = '" . tep_db_input($value_id) . "' and language_id = '" . (int)$languages[$i]['id'] . "'"); } tep_db_query("update " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " set products_options_id = '" . (int)$option_id . "' where products_options_values_id = '" . (int)$value_id . "'"); tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; case 'update_product_attribute': $products_id = tep_db_prepare_input($HTTP_POST_VARS['products_id']); $options_id = tep_db_prepare_input($HTTP_POST_VARS['options_id']); $values_id = tep_db_prepare_input($HTTP_POST_VARS['values_id']); $value_price = tep_db_prepare_input($HTTP_POST_VARS['value_price']); $price_prefix = tep_db_prepare_input($HTTP_POST_VARS['price_prefix']); $attribute_id = tep_db_prepare_input($HTTP_POST_VARS['attribute_id']); tep_db_query("update " . TABLE_PRODUCTS_ATTRIBUTES . " set products_id = '" . (int)$products_id . "', options_id = '" . (int)$options_id . "', options_values_id = '" . (int)$values_id . "', options_values_price = '" . (float)tep_db_input($value_price) . "', price_prefix = '" . tep_db_input($price_prefix) . "' where products_attributes_id = '" . (int)$attribute_id . "'"); if (DOWNLOAD_ENABLED == 'true') { $products_attributes_filename = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_filename']); $products_attributes_maxdays = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxdays']); $products_attributes_maxcount = tep_db_prepare_input($HTTP_POST_VARS['products_attributes_maxcount']); if (tep_not_null($products_attributes_filename)) { tep_db_query("replace into " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " set products_attributes_id = '" . (int)$attribute_id . "', products_attributes_filename = '" . tep_db_input($products_attributes_filename) . "', products_attributes_maxdays = '" . tep_db_input($products_attributes_maxdays) . "', products_attributes_maxcount = '" . tep_db_input($products_attributes_maxcount) . "'"); } } tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; case 'delete_option': $option_id = tep_db_prepare_input($HTTP_GET_VARS['option_id']); tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$option_id . "'"); tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; case 'delete_value': $value_id = tep_db_prepare_input($HTTP_GET_VARS['value_id']); tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$value_id . "'"); tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES . " where products_options_values_id = '" . (int)$value_id . "'"); tep_db_query("delete from " . TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS . " where products_options_values_id = '" . (int)$value_id . "'"); tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; case 'delete_attribute': $attribute_id = tep_db_prepare_input($HTTP_GET_VARS['attribute_id']); tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_attributes_id = '" . (int)$attribute_id . "'"); // added for DOWNLOAD_ENABLED. Always try to remove attributes, even if downloads are no longer enabled tep_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " where products_attributes_id = '" . (int)$attribute_id . "'"); tep_redirect(tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info)); break; } } require(DIR_WS_INCLUDES . 'template_top.php'); ?> <table border="0" width="100%" cellspacing="0" cellpadding="0"> <!-- options and values//--> <tr> <td width="100%"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top" width="50%"><table width="100%" border="0" cellspacing="0" cellpadding="2"> <!-- options //--> <?php if ($action == 'delete_product_option') { // delete product option $options = tep_db_query("select products_options_id, products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . (int)$HTTP_GET_VARS['option_id'] . "' and language_id = '" . (int)$languages_id . "'"); $options_values = tep_db_fetch_array($options); ?> <tr> <td class="pageHeading"> <?php echo $options_values['products_options_name']; ?> </td> </tr> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td colspan="3"><?php echo tep_black_line(); ?></td> </tr> <?php $products = tep_db_query("select p.products_id, pd.products_name, pov.products_options_values_name from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov, " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_DESCRIPTION . " pd where pd.products_id = p.products_id and pov.language_id = '" . (int)$languages_id . "' and pd.language_id = '" . (int)$languages_id . "' and pa.products_id = p.products_id and pa.options_id='" . (int)$HTTP_GET_VARS['option_id'] . "' and pov.products_options_values_id = pa.options_values_id order by pd.products_name"); if (tep_db_num_rows($products)) { ?> <tr class="dataTableHeadingRow"> <td class="dataTableHeadingContent" align="center"> <?php echo TABLE_HEADING_ID; ?> </td> <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_PRODUCT; ?> </td> <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_VALUE; ?> </td> </tr> <tr> <td colspan="3"><?php echo tep_black_line(); ?></td> </tr> <?php $rows = 0; while ($products_values = tep_db_fetch_array($products)) { $rows++; ?> <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>"> <td align="center" class="smallText"> <?php echo $products_values['products_id']; ?> </td> <td class="smallText"> <?php echo $products_values['products_name']; ?> </td> <td class="smallText"> <?php echo $products_values['products_options_values_name']; ?> </td> </tr> <?php } ?> <tr> <td colspan="3"><?php echo tep_black_line(); ?></td> </tr> <tr> <td colspan="3" class="main"><br><?php echo TEXT_WARNING_OF_DELETE; ?></td> </tr> <tr> <td align="right" colspan="3" class="main"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a> </td> </tr> <?php } else { ?> <tr> <td class="main" colspan="3"><br><?php echo TEXT_OK_TO_DELETE; ?></td> </tr> <tr> <td class="main" align="right" colspan="3"><br><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_option&option_id=' . $HTTP_GET_VARS['option_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_delete.gif', ' delete '); ?></a> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', ' cancel '); ?></a> </td> </tr> <?php } ?> </table></td> </tr> <?php } else { ?> <tr> <td colspan="3" class="pageHeading"> <?php echo HEADING_TITLE_OPT; ?> </td> </tr> <tr> <td colspan="3" class="smallText" align="right"> <?php $options = "select * from " . TABLE_PRODUCTS_OPTIONS . " where language_id = '" . (int)$languages_id . "' order by products_options_id"; $options_split = new splitPageResults($option_page, MAX_ROW_LISTS_OPTIONS, $options, $options_query_numrows); echo $options_split->display_links($options_query_numrows, MAX_ROW_LISTS_OPTIONS, MAX_DISPLAY_PAGE_LINKS, $option_page, 'value_page=' . $value_page . '&attribute_page=' . $attribute_page, 'option_page'); ?> </td> </tr> <tr> <?php //++++ QT Pro: Begin Changed code ?> <td colspan="4"><?php echo tep_black_line(); ?></td> <?php //++++ QT Pro: End Changed Code ?> </tr> <tr class="dataTableHeadingRow"> <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_ID; ?> </td> <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_OPT_NAME; ?> </td> <?php //++++ QT Pro: Begin Changed code ?> <td class="dataTableHeadingContent"> <?php echo TABLE_HEADING_TRACK_STOCK; ?> </td> <?php //++++ QT Pro: End Changed Code ?> <td class="dataTableHeadingContent" align="center"> <?php echo TABLE_HEADING_ACTION; ?> </td> </tr> <tr> <?php //++++ QT Pro: Begin Changed code ?> <td colspan="4"><?php echo tep_black_line(); ?></td> <?php //++++ QT Pro: End Changed Code ?> </tr> <?php $next_id = 1; $rows = 0; $options = tep_db_query($options); while ($options_values = tep_db_fetch_array($options)) { $rows++; ?> <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>"> <?php if (($action == 'update_option') && ($HTTP_GET_VARS['option_id'] == $options_values['products_options_id'])) { echo ' $inputs = ''; for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) { /* LINE 290 */ $option_name = tep_db_query("select products_options_name from " . TABLE_PRODUCTS_OPTIONS . " where products_options_id = '" . $options_values['products_options_id'] . "' and language_id = '" . $languages[$i]['id'] . "'"); $option_name = tep_db_fetch_array($option_name); $inputs .= $languages[$i]['code'] . ': <input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20" value="' . $option_name['products_options_name'] . '"> <br>'; } ?> <td align="center" class="smallText"> <?php echo $options_values['products_options_id']; ?><input type="hidden" name="option_id" value="<?php echo $options_values['products_options_id']; ?>"> </td> <td class="smallText"><?php echo $inputs; ?></td> <?php //++++ QT Pro: Begin Changed code ?> <td align="center" class="smallText"><input type=checkbox name=track_stock <?php echo $options_values['products_options_track_stock']?"checked":""; ?>></td> <?php //++++ QT Pro: End Changed Code ?> <td align="center" class="smallText"> <?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE); ?> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_cancel.gif', IMAGE_CANCEL); ?></a> </td> <?php echo ' } else { ?> <td align="center" class="smallText"> <?php echo $options_values["products_options_id"]; ?> </td> <td class="smallText"> <?php echo $options_values["products_options_name"]; ?> </td> <?php //++++ QT Pro: Begin Changed code ?> <td align="center" class="smallText"> <?php echo $options_values['products_options_track_stock']?"Yes":"No"; ?></td> <?php //++++ QT Pro: End Changed Code ?> <td align="center" class="smallText"> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=update_option&option_id=' . $options_values['products_options_id'] . '&' . $page_info, 'NONSSL') . '">'; ?><?php echo tep_image_button('button_edit.gif', IMAGE_UPDATE); ?></a> <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'action=delete_product_option&option_id=' . $options_values['products_options_id'] . '&' . $page_info, 'NONSSL') , '">'; ?><?php echo tep_image_button('button_delete.gif', IMAGE_DELETE); ?></a> </td> <?php } ?> </tr> <?php $max_options_id_query = tep_db_query("select max(products_options_id) + 1 as next_id from " . TABLE_PRODUCTS_OPTIONS); $max_options_id_values = tep_db_fetch_array($max_options_id_query); $next_id = $max_options_id_values['next_id']; } ?> <tr> <?php //++++ QT Pro: Begin Changed code ?> <td colspan="4"><?php echo tep_black_line(); ?></td> <?php //++++ QT Pro: End Changed Code ?> </tr> <?php if ($action != 'update_option') { ?> <tr class="<?php echo (floor($rows/2) == ($rows/2) ? 'attributes-even' : 'attributes-odd'); ?>"> <?php echo ' $inputs = ''; for ($i = 0, $n = sizeof($languages); $i < $n; $i ++) { $inputs .= $languages[$i]['code'] . ': <input type="text" name="option_name[' . $languages[$i]['id'] . ']" size="20"> <br>'; } ?> <td align="center" class="smallText"> <?php echo $next_id; ?> </td> <td class="smallText"><?php echo $inputs; ?></td> <?php //++++ QT Pro: Begin Changed code ?> <td align="center" ><input type=checkbox name=track_stock></td> <td align="left" class="smallText"> <?php echo tep_image_submit('button_insert.gif', IMAGE_INSERT); ?> </td> <?php //++++ QT Pro: End Changed Code echo ' ?> </tr> <tr> <?php //++++ QT Pro: Begin Changed code ?> <td colspan="4"><?php echo tep_black_line(); ?></td> <?php //++++ QT Pro: End Changed Code ?> </tr> <?php } } ?> </table></td> <!-- options eof //--> Quote My Installed Contributions: 1. Ultimate SEO URLs V 2-2.2d-X 2. Quantity Box on Product Info Page 3. httpbl4osc Version 1.1.0 4. QTpro for osc 2.3 5. Header Tags SEO V 3.0 (For 2.3) 6. DHTML State Selection for 2.3.1 And Good To Know: I use a 960gs fluid style sheet. I do have a honey pot on my website. Store Version: 2.3 “Pain is temporary. Quitting lasts forever." - Lance Armstrong Link to comment Share on other sites More sharing options...
demastermind Posted July 1, 2011 Share Posted July 1, 2011 Is anyone else having this error? I used the qtpro 4.6.1 version. Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in HIDDEN/products_attributes.php on line 290 Can someone please fix this prblem for me. I tried changing the code to fix it but I couldn't fix it. Thanks. - Luc Well today I looked at the code again and I found the errors and I corrected them. I do have another question. On the stock report table in the prodects info page, how would I have it tell the stock when less than 10 or less are available, and have it say "more than 10 available" when there are more than 10 in stock. This is actually like what ebay does. - Luc This is what it looks like now: http://www.jumbledfun.com/onstock.jpg Quote My Installed Contributions: 1. Ultimate SEO URLs V 2-2.2d-X 2. Quantity Box on Product Info Page 3. httpbl4osc Version 1.1.0 4. QTpro for osc 2.3 5. Header Tags SEO V 3.0 (For 2.3) 6. DHTML State Selection for 2.3.1 And Good To Know: I use a 960gs fluid style sheet. I do have a honey pot on my website. Store Version: 2.3 “Pain is temporary. Quitting lasts forever." - Lance Armstrong Link to comment Share on other sites More sharing options...
demastermind Posted July 3, 2011 Share Posted July 3, 2011 Well today I looked at the code again and I found the errors and I corrected them. I do have another question. On the stock report table in the prodects info page, how would I have it tell the stock when less than 10 or less are available, and have it say "more than 10 available" when there are more than 10 in stock. This is actually like what ebay does. - Luc This is what it looks like now: http://www.jumbledfun.com/onstock.jpg It's all fine now. I figured out how to do this my self. I just had to use an if statement. - Luc Quote My Installed Contributions: 1. Ultimate SEO URLs V 2-2.2d-X 2. Quantity Box on Product Info Page 3. httpbl4osc Version 1.1.0 4. QTpro for osc 2.3 5. Header Tags SEO V 3.0 (For 2.3) 6. DHTML State Selection for 2.3.1 And Good To Know: I use a 960gs fluid style sheet. I do have a honey pot on my website. Store Version: 2.3 “Pain is temporary. Quitting lasts forever." - Lance Armstrong Link to comment Share on other sites More sharing options...
hotdiecasttoys Posted July 18, 2011 Share Posted July 18, 2011 (edited) Hello, I am having trouble loading the SQL file included on the Qtpro 4.6.1 for oscommerce 2.3.1 instal. http://addons.oscommerce.com/info/7786 screen shot of the error message I recieve from SQL: http://http://hotdiecasttoys.com/problem.jpg There error message I am receiving is that i do not have a previous version of QT pro installed, I am new to OSC and have been trying to add this module along with AJAX Attribute manager. I have read on a tread that you must have Qtpro in order for AJAX to function correctly. Is this true? Can someone please tell me what I am doing wrong. Do I need to edit an existing file or delete any files from my SQL database in order to install the SQL file included in the Qtpro download? Thank you for your responses in advance. Edited July 18, 2011 by hotdiecasttoys Quote Link to comment Share on other sites More sharing options...
hotdiecasttoys Posted July 18, 2011 Share Posted July 18, 2011 sorry the link is http://hotdiecasttoys.com/problem.jpg Quote Link to comment Share on other sites More sharing options...
hotdiecasttoys Posted July 19, 2011 Share Posted July 19, 2011 Update So I added all necessary files when it came time to creating a new table for products_stock I ran into some trouble. My link can some one take a look and see what I am doing wrong please. Quote Link to comment Share on other sites More sharing options...
stefanhill7 Posted August 12, 2011 Share Posted August 12, 2011 Hello there, I've encountered a problem with the order that the attributes are displayed in on the web page. Despite the product attribute ID being in order ( 1 - 10 for example) it is being displayed on the web page in a completely random order, be it radioset or dropdown. I can't quite figure out why it would be displayed in this pattern so i was curious if anyone else has found this to be a problem ? Does anyone know of a fix for this ? Thanks Quote Link to comment Share on other sites More sharing options...
bureaucrash Posted August 12, 2011 Share Posted August 12, 2011 I have just finished my second attempt at installing QTPro 4.6.1 for osCommerce 2.3.1. Both times, once I finished the installation, when I go to the URL for the admin login, I just get blank page in Firefox and IE gives a 500 error. I haven't the foggiest idea of where to start troubleshooting. Has anyone had this happen to them? I can provide additional details if needed. Quote Link to comment Share on other sites More sharing options...
FOD Posted August 19, 2011 Share Posted August 19, 2011 Apologies for talking to myself here! But I've sort of stumbled across a solution to having "Please Select" at the top of the drop-down list, so I thought I'd share it, in case it benefits someone else. The fix from earlier in the thread works, if you also choose the correct options in the QT Pro section of the admin. So, with belated thanks to mbi15, whose "hack" this is: Open /includes/functions/html_output.php Find for ($i=0, $n=sizeof($values); $i<$n; $i++) { Immediately before that line add: $field .= '<option value="select"'; $field .= '>Please select ...</option>'; My options in Admin/Configuration/Prod Info (QTPro) are: On a product with choice of colour (with no price variation) and choice of size (with price variation) two drop down lists, the top one's default is "First Select Colour" and the default of the second drop down is "Please Select". Out of stock items are not displayed. If a customer tries to add a product to the cart without changing the default drop-down list option, a pop-up prevents them from doing so. I have the "add-weight-to-product-attributes" add-on installed and the weight and price differential gets passed into the shopping cart. So I'm happy enough with that, so far. Now all I need is the whole lot aligned to the right, just above the Add To Cart button, and I'll be a happy camper, until the next time, anyway. Tried the hack as suggested. Works great with only one attribute; however if as I do you have two attributes: One for size (trackable) and one for 'Add Giftwrap' (yes or no and not trackable - i.e. track stock option off on this attribute) it doesn't seem to work properly really. The Please Select option appears on the top of the dropdowns as expected but if a customer selects a size but not the gift wrap option (either yes or no) and clicks add to cart the product does not get added to the shopping cart. Anyone know of a way to have the alert or pop up window appear if both sets of options are not selected? Quote You can kill the King, but you can't kill the King Riddim... Link to comment Share on other sites More sharing options...
radoon Posted August 22, 2011 Share Posted August 22, 2011 I have just finished my second attempt at installing QTPro 4.6.1 for osCommerce 2.3.1. Both times, once I finished the installation, when I go to the URL for the admin login, I just get blank page in Firefox and IE gives a 500 error. I haven't the foggiest idea of where to start troubleshooting. Has anyone had this happen to them? I can provide additional details if needed. I just ran into this problem myself. Decided to test that the site was still working after completing the changes to the Admin side of things. Haven't made any of the Catalog changes yet. HTTP 500 error on attempt to access admin page(s). Please assist. Quote Link to comment Share on other sites More sharing options...
radoon Posted August 24, 2011 Share Posted August 24, 2011 (edited) I just ran into this problem myself. Decided to test that the site was still working after completing the changes to the Admin side of things. Haven't made any of the Catalog changes yet. HTTP 500 error on attempt to access admin page(s). I started doing some uninstalling of the contribution today and tested my admin login at each step. I finally restored my access when I removed the code added in step 3.4: //++++ QT Pro: Begin Changed code require(DIR_WS_FUNCTIONS . 'qtpro_functions.php'); //++++ QT Pro: End Changed code After looking at that, I thought to check if the file existed and sure enough, the 'qtpro_functions.php' file wasn't where it should have been. I uploaded the file and re-added the code, and I was able to access my Admin page. Next, I found that all of the files that belong in /admin/[other folders...] for the contribution hadn't actually uploaded... Not sure why but maybe I just have my FTP client to blame. Went through the rest of the changes and got stuck on this code that's supposed to be changed in product_info.php. Causes the same HTTP500 error which leads me to believe it can't find the "required" file listed. <?php } //++++ QT Pro: End Changed Code $products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "'"); $products_attributes = tep_db_fetch_array($products_attributes_query); if ($products_attributes['total'] > 0) { //++++ QT Pro: Begin Changed code $products_id=(preg_match("/^\d{1,10}(\{\d{1,10}\}\d{1,10})*$/",$HTTP_GET_VARS['products_id']) ? $HTTP_GET_VARS['products_id'] : (int)$HTTP_GET_VARS['products_id']); require(DIR_WS_CLASSES . 'pad_' . PRODINFO_ATTRIBUTE_PLUGIN . '.php'); $class = 'pad_' . PRODINFO_ATTRIBUTE_PLUGIN; $pad = new $class($products_id); echo $pad->draw(); } //Display a table with which attributecombinations is on stock to the customer? if(PRODINFO_ATTRIBUTE_DISPLAY_STOCK_LIST == 'True'): require(DIR_WS_MODULES . "qtpro_stock_table.php"); endif; //++++ QT Pro: End Changed Code ?> On a quick search of the "changes" page, it only returns two hits on "PRODINFO_ATTRIBUTE_PLUGIN" (both in the affected code block) which leads me to believe that this variable isn't being defined somewhere. Not sure where it should be defined. I have already verified that the appropriate pad_ files are uploaded into the classes folder. If someone else does know how this goes, please assist. Otherwise I'll just have to keep picking at it tomorrow... Edited August 24, 2011 by radoon Quote Link to comment Share on other sites More sharing options...
radoon Posted August 25, 2011 Share Posted August 25, 2011 On a quick search of the "changes" page, it only returns two hits on "PRODINFO_ATTRIBUTE_PLUGIN" (both in the affected code block) which leads me to believe that this variable isn't being defined somewhere. Not sure where it should be defined. I have already verified that the appropriate pad_ files are uploaded into the classes folder. If someone else does know how this goes, please assist. Otherwise I'll just have to keep picking at it tomorrow... Huzzah! I found the solution to the problem I was having. Turns out it was NOT a problem with "PRODINFO_ATTRIBUTE_PLUGIN", but rather an extraneous "}" (closing curly bracket). I think it was closing an if statement too early, so the QT Pro functions never did/could execute. The extra bracket I removed was right above the first "//++++ QT Pro: End Changed Code" line in /catalog/product_info.php. Hopefully this saves someone else the same headache in the future. I couldn't find a lot of documentation on this in my internet searches. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.