Jump to content
Denzel

[ADDON] Hide Categories with category cache

Recommended Posts

Hi Forum,

 

I have found the Supportthread for this contrib closed, so I open my own...  B)

 

Does anyone use this contrib and has products in multiple categories ? It stores the hidden categories ids in the $hiddencats array.

 

In my shop the products_new.php displays the products as often as they are joined with different categories.

The build in sql does the correct thing, but if I hide some (or one) category, the bug appears.  

 

My shop is a 2.3 BS Edge one. Here are the querys:

  if (!empty($hiddencats)) {
  $listing_sql = "select " . $select_column_list . " p.products_id, SUBSTRING_INDEX(pd.products_description, ' ', 20) as products_description, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.products_id = pd.products_id and p.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and (not (p2c.categories_id in (" . implode(',', $hiddencats) . ")))";
  } else {
  $listing_sql = "select " . $select_column_list . " p.products_id, SUBSTRING_INDEX(pd.products_description, ' ', 20) as products_description, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "'";
  }

This is the buggy for better view:

select p.products_image, 
       pd.products_name, 
       p.products_id, SUBSTRING_INDEX(pd.products_description, ' ', 20) as products_description, 
       p.manufacturers_id, 
       p.products_price, 
       p.products_tax_class_id, 
         IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, 
         IF(s.status, s.specials_new_products_price, p.products_price) as final_price 
from products_description pd, 
     products_to_categories p2c, 
     products p 
left join manufacturers m on p.manufacturers_id = m.manufacturers_id 
left join specials s on p.products_id = s.products_id 
where p.products_status = '1' and 
      p.products_id = pd.products_id and 
      p.products_id = p2c.products_id and 
      pd.language_id = '2' and 
      (not (p2c.categories_id in (48,48))) 
order by p.products_id DESC limit 0, 20


Maybe there is a SQL-Crack here, who can help me...  :D

 

SEE YA

Denzel.

Share this post


Link to post
Share on other sites

Hello Denzel @@Denzel,

 

for me it would sound more familiar at the end like this:

pd.language_id = '" . (int)$languages_id . "' and (p2c.categories_id not in (" . implode(',', $hiddencats) . "))";
  } else {
pd.language_id = '2' and 
      (p2c.categories_id not in (48,48)) 
order by p.products_id DESC limit 0, 20

but I may be wrong.

 

Merry Christmas

Rainer

Share this post


Link to post
Share on other sites

Hi @@raiwa !
 

Of course you are right. The above is the source code, the below the debug output...  B)

 

SEE YA

Denzel.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×