Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

[Contribution] QTpro - Quantity Tracking Professional


zonetown

Recommended Posts

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

Link to comment
Share on other sites

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:

ss1.jpg

 

I'd like it to be like this:

ss2.jpg

 

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 by Davefromcornwall
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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_dropdowns

Show 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 by Davefromcornwall
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 4 weeks later...
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 by gilo_m
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 2 weeks later...

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 by Eszaraxe

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

Problem solved, it had nothing to do with product_info.php. I just had to do "chmod" here and there.

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

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

  • 4 weeks later...

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

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

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 //-->

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

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

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

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

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

  • 3 weeks later...

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 by hotdiecasttoys
Link to comment
Share on other sites

  • 4 weeks later...

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

You can kill the King, but you can't kill the King Riddim...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by radoon
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...