Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

[Contribution] Family Products-MS2


Guest

Recommended Posts

A completely new Family Products for osCommerce MS2.

 

Products are assigned a Family in admin>categories>products>edit

 

They are displayed on the product info page in the same manner as product listing in the main catalog and display is configurable in admin likewise.

 

A screenshot may be viewed here:

 

http://suomedia.com/family_products.jpg

 

The contribution may be downloaded here:

 

http://www.oscommerce.com/community/contributions,1429

Link to comment
Share on other sites

  • Replies 96
  • Created
  • Last Reply

Top Posters In This Topic

Great cont.

 

Several problems, I copied the files exactly as they were, so I didn't change any code. The heading of the family products table says

 

 TABLE_HEADING_IMAGE   TABLE_HEADING_MODEL   TABLE_HEADING_PRODUCTS   TABLE_HEADING_PRICE   TABLE_HEADING_BUY_NOW  

 

Also, this problem might be tied with the one above, but the width of the table is large and therefore moves the right colum off the screen.

 

Thanks

Link to comment
Share on other sites

Yes.. the problem is tied to the other - looks like I zipped up the wrong folder and missed a language file. Paste the following at the top of catalog/includes/modules/family_products.php

 

     require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_FAMILY_PRODUCTS);

 

Create a file named family_products.php, paste the following into it, and upload it to your catalog/includes/languages/english folder

 

<?php

/*

$ID family_products.php 



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2003 osCommerce

 

 Family Products  - JOHNSON - 05/07/2003 [email protected]



 Copyright (c) 2003 Suomedia - Dynamic Content Management



 Released under the GNU General Public License

*/

 define('TABLE_HEADING_IMAGE', '');

 define('TABLE_HEADING_MODEL', 'Model');

 define('TABLE_HEADING_PRODUCTS', 'Product Name');

 define('TABLE_HEADING_MANUFACTURER', 'Manufacturer');



 define('TABLE_HEADING_QUANTITY', 'Qty');

 define('TABLE_HEADING_PRICE', 'Price');

 define('TABLE_HEADING_WEIGHT', 'Weight');

 define('TABLE_HEADING_BUY_NOW', 'Buy Now');



?>

 

I'll upload the update to contributions.

 

Matti

Link to comment
Share on other sites

Yes.. the problem is tied to the other - looks like I zipped up the wrong folder and missed a language file. Paste the following at the top of catalog/includes/family_products.php

 

I dont see any file name family_products.php in catalog/includes/

 

From the download only got filename.php

 

:?

Link to comment
Share on other sites

Excuse me,

I got this message:

 

Warning: main(includes/modules/FILENAME_FAMILY_PRODUCTS) [function.main]: failed to create stream: No such file or directory in E:homeDefaultdrpc-technology.comhtdocsDRPCstorecatalogproduct_info.php on line 185

 

Warning: main() [function.main]: Failed opening 'includes/modules/FILENAME_FAMILY_PRODUCTS' for inclusion (include_path='.;c:php4pear') in E:homeDefaultdrpc-technology.comhtdocsDRPCstorecatalogproduct_info.php on line 185

 

Anyone kindly, please tell me what's wrong with this?

Link to comment
Share on other sites

You have not installed catalog/includes/filnames.php , or instead copied over the changes from the one provided in the package over to yours...

 

// Family Products

 define('FILENAME_FAMILY_LISTING', 'family_listing.php');

 define('FILENAME_FAMILY_PRODUCTS', 'family_products.php');

// Family Products EOF

Link to comment
Share on other sites

I dont see any file name family_products.php in catalog/includes/

 

From the download only got filename.php

 

:?

 

That was a typo, now corrected - you should have two files in catalog/includes/modules - family_products.php and family_listing.php

 

In catalog/includes there are changes to filenames.php as in the post above - a modified file is provided in the package.

 

I have done a test installation and it is safe to overwrite existing files if you have a standard, unmodified installation of MS2

Link to comment
Share on other sites

I used the updated version from the begining, but I got those errors and still the sama errors after checking some suspected files.

 

I guess my product_info.php got a problem but I have no idea how to modified that because it looks very different with the one that the article script use. Almost 80% different when I compared those 2 file.

 

Any tips?

 

In admin section, I got it wrigt by just cut and past the part of the scripts that written Family Products.

 

I have done the same with catalog, but no luck.

Any :idea: ?

 

FYI, this is my catalog/product_info.php

 

<?php

/*

 $Id: product_info.php,v 1.92 2003/02/14 05:51:21 hpdl Exp $



 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com



 Copyright (c) 2003 osCommerce



 Released under the GNU General Public License

*/



 require('includes/application_top.php');



 require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_INFO);

?>

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">

<html <?php echo HTML_PARAMS; ?>>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">

<link rel="stylesheet" type="text/css" href="stylesheet.css">

<script language="javascript"><!--

function popupWindow(url) {

 window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizab
le=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,left=1
50')

}

//--></script>

</head>

<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">

<!-- header //-->

<?php require(DIR_WS_INCLUDES . 'header.php'); ?>

<!-- header_eof //-->



<!-- body //-->

<table border="0" width="100%" cellspacing="3" cellpadding="3">

 <tr>

   <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<!-- left_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>

<!-- left_navigation_eof //-->

   </table></td>

<!-- body_text //-->

   <td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">

<?php

 $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 = '" . $languages_id . "'");

 if (!tep_db_num_rows($product_info_query)) { // product not found in database

?>

     <tr>

       <td class="main"><br><?php echo TEXT_PRODUCT_NOT_FOUND; ?></td>

     </tr>

     <tr>

       <td align="right"><br><a href="<?php echo tep_href_link(FILENAME_DEFAULT); ?>"><?php echo tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></a></td>

     </tr>

<?php

 } else {

   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 = '" . $languages_id . "'");

   $product_info = tep_db_fetch_array($product_info_query);



   if ($new_price = tep_get_products_special_price($product_info['products_id'])) {

     $products_price = '<s>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</s> <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']));

   }

?>

     <tr>

       <td><table border="0" width="100%" cellspacing="0" cellpadding="2">

         <tr height="40">

           <td class="pageHeading"><?php echo $product_info['products_name']; ?></td>

           <td align="right" class="pageHeading"><?php echo $products_price; ?></td>

         </tr>

<?php

   if (PRODUCT_LIST_MODEL > 0) {

     echo '          <tr>' . "n" .

          '            <td colspan="2" class="pageHeading">' . $product_info['products_model'] . '</td>' . "n" .

          '          </tr>' . "n";

   }

?>

       </table></td>

     </tr>

     <tr>

       <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

     </tr>

     <tr>

       <td class="main"><table border="0" cellspacing="0" cellpadding="2" align="right">

<?php

   if (tep_not_null($product_info['products_image'])) {

?>

         <tr>

           <td align="center" class="smallText">

<script language="javascript"><!--

document.write('<?php echo '<a href="javascript:popupWindow('' . tep_href_link(FILENAME_POPUP_IMAGE, 'pID=' . $product_info['products_id']) . '')">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], addslashes($product_info['products_name']), SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>');

//--></script>

<noscript>

<?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>

</noscript>

           </td>

         </tr>

<?php

   }

?>

       </table><p><?php echo stripslashes($product_info['products_description']); ?></p>

<?php

   $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 = '" . $languages_id . "'");

   $products_attributes = tep_db_fetch_array($products_attributes_query);

   if ($products_attributes['total'] > 0) {

     echo '<b>' . TEXT_PRODUCT_OPTIONS . '</b><br>' .

          '<table border="0" cellpadding="0" cellspacing"0">';

     $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name 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 = '" . $languages_id . "'");

     while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {

       $selected = 0;

       $products_options_array = array();

       echo '<tr><td class="main">' . $products_options_name['products_options_name'] . ':</td><td>' . "n";

       $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)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . $products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . $languages_id . "'");

       while ($products_options = tep_db_fetch_array($products_options_query)) {

         $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);

         if ($products_options['options_values_price'] != '0') {

           $products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';

         }

       }

       echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']]);

       echo '</td></tr>';

     }

     echo '</table>';

   }

?>

       </td>

     </tr>

<?php

   $reviews = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "'");

   $reviews_values = tep_db_fetch_array($reviews);

   if ($reviews_values['count'] > 0) {

?>

     <tr>

       <td class="main"><br><?php echo TEXT_CURRENT_REVIEWS . ' ' . $reviews_values['count']; ?></td>

     </tr>

<?php

   }



   if (tep_not_null($product_info['products_url'])) {

?>

     <tr>

       <td class="main"><br><?php echo sprintf(TEXT_MORE_INFORMATION, tep_href_link(FILENAME_REDIRECT, 'action=url&goto=' . urlencode($product_info['products_url']), 'NONSSL', true, false)); ?></td>

     </tr>

<?php

   }



   if ($product_info['products_date_available'] > date('Y-m-d H:i:s')) {

?>

     <tr>

       <td align="center" class="smallText"><br><?php echo sprintf(TEXT_DATE_AVAILABLE, tep_date_long($product_info['products_date_available'])); ?></td>

     </tr>

<?php

   } else {

?>

     <tr>

       <td align="center" class="smallText"><br><?php echo sprintf(TEXT_DATE_ADDED, tep_date_long($product_info['products_date_added'])); ?></td>

     </tr>

<?php

   }

?>

     <tr>

       <td><br><table border="0" width="100%" cellspacing="0" cellpadding="0">

         <tr>

           <td class="main"><a href="<?php echo tep_href_link(FILENAME_PRODUCT_REVIEWS, substr(tep_get_all_get_params(), 0, -1)); ?>"><?php echo tep_image_button('button_reviews.gif', IMAGE_BUTTON_REVIEWS); ?></a></td>

           <td align="right" class="main"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td>

         </tr>

       </table></td>

     </tr>

     <tr>

       <td><br>

<?php

   if ( (USE_CACHE == 'true') && !defined('SID')) {

     echo tep_cache_also_purchased(3600);

   } else {

     include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS);

   }

 }

?>

       </td>

     </tr>

   </table></form></td>

<!-- body_text_eof //-->

   <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<!-- right_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>

<!-- right_navigation_eof //-->

   </table></td>

 </tr>

</table>

<!-- body_eof //-->



<!-- footer //-->

<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>

<!-- footer_eof //-->

<br>

</body>

</html>

<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

Link to comment
Share on other sites

I used the updated version from the begining, but I got those errors and still the sama errors after checking some suspected files.

 

I guess my product_info.php got a problem but I have no idea how to modified that because it looks very different with the one that the article script use. Almost 80% different when I compared those 2 file.

 

This contribution is for osCommerce version 2.2 MS2 . I will not support installations into any other version.

 

 

Any tips?

 

Upgrade your installation to MS2.

 

Matti

Link to comment
Share on other sites

Hi,

 

I've installed this contribution in an MS2 store, and under Family Products: listing I get 'TEXT_NO_PRODUCTS' instead of a list of the other products in that family.

 

I didn't copy over the files but used a diff program to add all your changes to my files. Any ideas what I've done wrong?

 

Here's a screenshot.

Link to comment
Share on other sites

Hi,

 

I've installed this contribution in an MS2 store, and under Family Products: listing I get 'TEXT_NO_PRODUCTS' instead of a list of the other products in that family.

 

I didn't copy over the files but used a diff program to add all your changes to my files. Any ideas what I've done wrong?

 

Here's a screenshot.

 

You are simply missing a definition. Please update your files in your /language folder which pertain to Family Products (sorry I don't know which one it is.)

 

HTH

-Chris

Chris Sullivan

Link to comment
Share on other sites

It shouldn't appear at all - it is part of redundant code from product_listing.php which it is based on. The family products files are only called from product_info.php if there *are* related products in the database, so the 'else' that calls TEXT_NO_PRODUCTS should be skipped.

 

TEXT_NO_PRODUCTS is not defined in a language file as its not required.

 

Compare the files from the package to your own. I pasted the whole catalog directory from the package into a fresh installation of MS2 and cannot repeat the error.

Link to comment
Share on other sites

There is a small issue with the family.sql file in the package - the following line appears twice and one may be deleted from the file:

 

INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) VALUES ('Display Product Name', 'FAMILY_LIST_NAME', '4', 'Do you wish to display the products name?', 16, 4, now());

 

It does not produce any errors that I can ascertain, other than making the "Display Product Name" option appear twice in admin>configuration>family products. If the file has already been run on your database the extra row can be dropped.

Link to comment
Share on other sites

Thanks for the replies. I have now simply copied over the files from the contribution, as there were only two minor changes in two of my files which I can put back in once this is sorted out.

 

I am still getting the same thing, TEXT_NO_PRODUCTS when I view a product that has related products. I DON'T get it when I view a product without related products.

 

I see in family_listing.php where TEXT_NO_PRODUCTS is displayed but I don't really understand enough of the preceding code to tell what has happened to display it. Could it be a database problem? I'm stumped. :(

Link to comment
Share on other sites

What is happening is that the $family_query in product_info.php is detecting a products family for your product but by the time the script runs to family listing.php

if ($listing_split->number_of_rows > 0)

is false - hence the reason it wants to display TEXT_NO_PRODUCTS.

 

What is your admin>configuration>>maximum values>search results setting?

Link to comment
Share on other sites

Hi,

 

I'm having the same problem as chirpy36. I have related 2 products (just for testing purposes) under the family name "Daniel". I have double-checked that the family name has been correctly entered in the database as well. The products didn't show up though under "Family Products". Here's the page with the 2 items on my test site...

 

http://www.sunshinetradingcompany.com/cata...php?cPath=21_23

 

All it says under "Family Products" is TEXT_NO_PRODUCTS.

 

I had copied the files directly from the contribution download into a fresh MS2 install. So I'm running out of ideas as to why the related products aren't being picked up.

 

Any help would be greatly appreciated. I'll post again if I have a major breakthrough. :)

 

Thanks,

aezalpha

Link to comment
Share on other sites

Matti,

 

The idea of this contribution is quite nice but if I look at the screenshot, the product Die Hard With A Vengeance is a family member of the (I think) action movies.

So if I'm looking at the specs of Die Hard, the first family product is Die Hard again. That's rather strange since I've already selected that product.

 

I think it's more obvious to see just the other action movies and not the other action movies + the same movie again.

 

Is there a way to filter the family so the product a customer is viewing, is not mentioned in the list again?

 

Regards,

 

TaFfin

SIGnificant.....right?

Link to comment
Share on other sites

Yes there is... I was waiting to see what kind of feedback I would get regarding that - my original mod had this filtered... I will post the code here tonight for doing that.

Link to comment
Share on other sites

Hey Matti,

That looks like a great contribution. Just what I was looking to do a coupple of months ago but didn't have enough knowledge yet. I was actually trying to work on this again a few nights ago. I always wanted an optional way to display different sizes rather than using "attributes". Attributes can get messy sometimes if you have waaay to many of them! and then of course you don't have the ability to put one of those sizes on special...

 

I was wondering. Have you ever used or seen the "Add multiple products" contribution?

 

http://www.oscommerce.com/community/contributions,1129

 

I think this contribution would be beyond great if it was possible to add quantity boxes in a column and a add to cart at once.

 

It seems like it wouldn't be that difficult. The "add multiple products" uses a form and just some additions to the application_top.php page...

 

I'll have to look into it more tomorrow...

 

Just wanted to stop by and say how wonderful I think it is that someone finally did add feautures to the otherwise to well functioning family contribution!

 

by the way, in my case i would rather go without filtering the showing product...

 

Thanks Matti! You'r great! :P

 

Thomas

Link to comment
Share on other sites

Matti,

 

Is there a way to filter the family so the product a customer is viewing, is not mentioned in the list again?

 

Yes - in catalog/includes/modules/family_products.php change the $family_sql query to:

 

      $family_sql = "select p.products_id,  p.manufacturers_id, p.products_model, p.products_image, p.products_tax_class_id, pd.products_name, s.specials_new_products_price, s.status, p.products_price, p.products_family, m.manufacturers_name from ". TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_id !=" . (int)$HTTP_GET_VARS['products_id'] . " and p.products_id = pd.products_id and p.products_family = '" . $thisquery['products_family'] . "' and p.manufacturers_id = m.manufacturers_id and p.products_status = '1' and pd.language_id = '" . (int)$languages_id . "'";

Link to comment
Share on other sites

Just wanted to stop by and say how wonderful I think it is that someone finally did add feautures to the otherwise to well functioning family contribution!

 

I have spoken to Chris Sullivan, who contributed the original Family Products, and he has indicated a renewed interest in developing this contribution further :D - there is a need for a drop menu in admin for selecting product families already in the database - I believe he is now working on this.

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