Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Faster Page Loads


Recommended Posts

Installed and working. From +-8 seconds to +-5 seconds.

 

But i have a question. Is this compatible with SPPC (Hide products to some class of customers)????

Ref:

To enable the categories cache

Open includes/functions/general.php

 

Add on top

require('cache/cachefile.inc.php');

 

Find function tep_count_products_in_category($category_id, $include_inactive = false) {

Replace above function with this:

 

function tep_count_products_in_category($category_id, $include_inactive = false) {

$products_count = 0;

 

$catcounter = constant('CATCOUNT_' . strtoupper($category_id));

 

$products_count = $catcounter;

 

return $products_count;

}

 

my code:

// Return the number of products in a category
// TABLES: products, products_to_categories, categories
 function tep_count_products_in_category($category_id, $include_inactive = false) {

 // Unless Customer logged in show products
 // BOF Separate Pricing Per Customer, hide products and categories for groups
 global $sppc_customer_group_id;
 if(!tep_session_is_registered('sppc_customer_group_id')) {
 $customer_group_id = '0';
 } else {
  $customer_group_id = $sppc_customer_group_id;
 }
$products_count = 0;
if ($include_inactive == true) {
  $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_CATEGORIES . " c using(categories_id) where p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$category_id . "' and find_in_set('".$customer_group_id."', products_hide_from_groups) = 0 and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0");
} else {
  $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_CATEGORIES . " c using(categories_id) where p.products_id = p2c.products_id and p.products_status = '1' and p2c.categories_id = '" . (int)$category_id . "' and find_in_set('".$customer_group_id."', products_hide_from_groups) = 0 and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0");
}  
	$products = tep_db_fetch_array($products_query);
$products_count += $products['total'];
// no need to find child categories that are hidden from this customer or have a higher level category that is hidden
$child_categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$category_id . "' and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0");
// EOF Separate Pricing Per Customer, hide products and categories for groups
if (tep_db_num_rows($child_categories_query)) {
  while ($child_categories = tep_db_fetch_array($child_categories_query)) {
	$products_count += tep_count_products_in_category($child_categories['categories_id'], $include_inactive);
  }
}

return $products_count;
 }

 

I dont know if i must simply replace all that code... but loosing the ability to hide products to customers.

 

I see the same code on top of admin/includes/configuration_cache.php

Could I past the sppc code there???

 

In other case the instructions says:

8. Navigate to Admin ~ Configuration ~ My Store, click the edit button, and click the update button.

Where is that button. All I see is the Store Name xxxx on top and edit on the right. Is that??

Edited by bhbilbao
Link to comment
Share on other sites

  • Replies 154
  • Created
  • Last Reply

Top Posters In This Topic

I get a white page on products listings with sppc.

 

I edited the admin/includes/configuration_cache.php

 

and modified the

tep_function count_products_in_category

to

function count_products_in_category

 

example:

<?php
/*
$Id: configuration_cache.php,v 1.32 2004/04/06 20:24:09 daemonj Exp $
*/
$rQuery  = tep_db_query('SELECT `categories_id` FROM `categories`');
$aResult = array();
while ($r = tep_db_fetch_array($rQuery)) {
  $aResult[] = $r['categories_id'];
}

// Return the number of products in a category
// TABLES: products, products_to_categories, categories
 function count_products_in_category($category_id, $include_inactive = false) {

 // Unless Customer logged in show products
 // BOF Separate Pricing Per Customer, hide products and categories for groups
	 global $sppc_customer_group_id;
	 if(!tep_session_is_registered('sppc_customer_group_id')) {
	 $customer_group_id = '0';
	 } else {
	  $customer_group_id = $sppc_customer_group_id;
	 }
	$products_count = 0;
	if ($include_inactive == true) {
	  $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_CATEGORIES . " c using(categories_id) where p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$category_id . "' and find_in_set('".$customer_group_id."', products_hide_from_groups) = 0 and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0");
	} else {
	  $products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join " . TABLE_CATEGORIES . " c using(categories_id) where p.products_id = p2c.products_id and p.products_status = '1' and p2c.categories_id = '" . (int)$category_id . "' and find_in_set('".$customer_group_id."', products_hide_from_groups) = 0 and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0");
	}
			$products = tep_db_fetch_array($products_query);
	$products_count += $products['total'];
// no need to find child categories that are hidden from this customer or have a higher level category that is hidden
	$child_categories_query = tep_db_query("select categories_id from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$category_id . "' and find_in_set('" . $customer_group_id . "', categories_hide_from_groups) = 0");
// EOF Separate Pricing Per Customer, hide products and categories for groups
	if (tep_db_num_rows($child_categories_query)) {
	  while ($child_categories = tep_db_fetch_array($child_categories_query)) {
			$products_count += tep_count_products_in_category($child_categories['categories_id'], $include_inactive);
	  }
	}

	return $products_count;
 }


function count_has_category_subcategories($category_id) {

 

For the moment seems to work.

Edited by bhbilbao
Link to comment
Share on other sites

Also a white page with a modified products_new.php file:

 

index.php

<?php  
// needed for the new products module shown below
   $new_products_category_id = $current_category_id;
?>
<tr>
  <td><?php include(DIR_WS_MODULES . FILENAME_NEW_PRODUCTS); ?></td>
</tr>

 

 

includes/modules/products_new.php

<?php
 $info_box_contents = array();
 $info_box_contents[] = array('text' => sprintf(TABLE_HEADING_NEW_PRODUCTS, strftime('%B')));

//  new contentBoxHeading($info_box_contents);

 if ( (!isset($new_products_category_id)) || ($new_products_category_id == '0') ) {

  $new_products_query = tep_db_query("select p.products_id, p.products_quantity, p.products_image, p.products_tax_class_id, pd.products_name, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.latest_product='1' and p.products_status = '1' and p.products_id = pd.products_id and quotes_email_address NOT LIKE '%@%' and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id " . $new_products_where . " order by p.products_date_added desc limit " . MAX_DISPLAY_NEW_PRODUCTS);


 } else {
  $new_products_query = tep_db_query("select distinct p.products_id, p.products_quantity, p.products_image, p.products_tax_class_id, pd.products_name, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_CATEGORIES . " c where p.products_id = p2c.products_id and p2c.categories_id = c.categories_id" . $new_products_where . " and c.parent_id = '" . (int)$new_products_category_id . "' and p.latest_product='1' and p.products_status = '1' and quotes_email_address NOT LIKE '%@%' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added desc limit " . MAX_DISPLAY_NEW_PRODUCTS);

 }

 $row = 0;
 $col = 0;
 $info_box_contents = array();
 while ($new_products = tep_db_fetch_array($new_products_query)) {
   $new_products['products_name'] = tep_get_products_name($new_products['products_id']);

$sql = 'SELECT `products_short` FROM `products_description.............

 

 

Only works in product_listings pages. Im thinking on unistalling it and install Optimize Category Box as says Jan.

The contribution works great with a vanilla 2.2rca2 install, but not in a high modified case like me. Too much problems.

Link to comment
Share on other sites

  • 3 years later...

Hi !

Many worry to adapt this addon to multishop addon.

Finally, i have tested the to-be-cached query into catalog/application_top.php:

select configuration_key as cfgKey, configuration_value as cfgValue from configuration

On the server that i use, this give me 388 lines in 0.0003 s. This is unsignifiant for a page during 0.500 s begin to end !

 

I dont have necessity to use this addon!

Please, make this test before to use this addon !!

 

J.D

Version OSCOM CE Phoenix v1.0.5.9 + french language (v1.0.5.8 & Merge pull request #955 from gburton/1.0.5.9

php 7.1.3 MySQL 5.7.17  local with easyphp 

adds on: shipping spu 

common browser: Chrome

Shop multishop 2.2 with many addons.

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