![]() |
Display manufacturer list on category page
HI,
I have searched for this but only found posts for displaying manufacturer on product page. I would like to display available manufacturers on category/subcategory page. If any product in that category has manufacturer specified it would display a list of those manufacturers below or above product list. Is there a post somewhere that has covered this, is it possible and how would I go about it? Using X-Cart 4.4.2 Please point me in the right direction. Thanks. |
Re: Display manufacturer list on category page
Use webmaster mode and look at the variables assigned on those pages. Here is a tut if you are not familiar with this method:http://forum.x-cart.com/showthread.php?p=335522 #2 on the list currently.
If you can see the variables, you should be good to go to write some Smarty code, if they are not assigned you will need to dive into the DB with PHP and assign them. Kind of a generic response, but hopefully it will help. |
Re: Display manufacturer list on category page
Thanks Mike, I'll try my best but not really sure what variables to look for, where will they be displayed?
I'm surprised that this is not default function in x-cart. |
Re: Display manufacturer list on category page
Products shown on products list pages have manufacturerid specified for them in the product array but not the manufacturer name. If you want to show a list of manufacturers this will stillhas to be custom coded within php to assign the list to smarty with names
|
Re: Display manufacturer list on category page
Quote:
Hey Steve :) Are there any examples on forums that you are aware of? Thanks. |
Re: Display manufacturer list on category page
Not aware of anything like this but there could be something in here. Try searching again. And you know my email if you need professional help with this
|
Re: Display manufacturer list on category page
|
Re: Display manufacturer list on category page
Depending on the skin, the list of Manufacturers should always show in the menu on the side on all pages. Also check that the box is checked in the Manufacturers settings.
|
Re: Display manufacturer list on category page
Quote:
They do but it always displays ALL manufacturers, i'd like to display only manufacturers that exist in products belonging to category you are viewing, if that makes sense. Displaying all manufacturers on homepage is fine but once you click on category it should only display manufacturers from products in that category. |
Re: Display manufacturer list on category page
You could do something like this on the product listing or subcategories tpl (untested):
PHP Code:
|
Re: Display manufacturer list on category page
You will need to make an array of the manufacturers unique to that category. Try something like:
In products.php: Code:
foreach ($products as $k => $v) { Then in the template, probably subcategories.php, you can go through that array: Code:
{if $manuf_this_cat} |
Re: Display manufacturer list on category page
Quote:
We are getting somewhere now O:) That code display this list in array:
Thanks. |
Re: Display manufacturer list on category page
{if $manuf_this_cat}
<hr /> <ul> {foreach from=$manuf_this_cat key=k item=v} <li> manufacturerid:{$k}<br /> number items this cat:{$v}<br /> name: {$manufacturers.$k.manufacturer}<br /> link: <a href="manufacturers.php?manufacturerid={$k}">{$man ufacturers.$k.manufacturer}</a> </li> {/foreach} </ul> <hr /> {/if} --- |
Re: Display manufacturer list on category page
That does it :)
I did notice a bug tho, manufacturer name that is displayed is wrong. What I noticed is that it pulls correct masnufacturer IDs but displays wrong name. Is it in the products.php code? Thanks. |
Re: Display manufacturer list on category page
Take care just when coping and pasting code from the forum - it looks like the forum software put an extra blank space in $manufacturers. I should have enclosed it in code tags
--- |
Re: Display manufacturer list on category page
Quote:
I did caught that blank space and corrected it but still manufacturer name comes out wrong. any idea? Thanks. |
Re: Display manufacturer list on category page
Reviewing the code I provided, it is escaping me how the id could be right and the name be off. You could have something in your cart instance that I am not considering.
You can debug it by using webmastermode and looking at the contents of the $manufacturers array and the $manuf_this_cat array and seeing where the data is wrong, then correcting the code from there. --- |
Re: Display manufacturer list on category page
It looks like the original array only stores id=count with no name.
The manufacturer name is already there in $manufacturers_menu as in my earlier code example. |
Re: Display manufacturer list on category page
I was thinking that $manufacturers used the actual id as the first key of the 2 dimensional array. But I did a quick check and the first key is just a counter - so my code needs to be fixed. No time to try this - syntax may be off, but something like this should do the trick:
In products.php: Code:
foreach ($products as $k => $v) { Then in the template: Code:
{if $manuf_this_cat} |
Re: Display manufacturer list on category page
Now on top of a new array there's an extra query for every product. I really don't recommend doing it like this. I would just use the data that is already there.
|
Re: Display manufacturer list on category page
Good point - to avoid multiple queries you can go back to the original $products array and query for the manufacturer name as well as the id. But the array he is requesting is not already there. You can either add to the query in the php or cycle through the product and manufacturers arrays to get it.
--- |
Re: Display manufacturer list on category page
Here is a way to do it by cycling through the existing product and manufacturer arrays in php and avoiding adding multiple queries. You can also do it in smarty as Cherie suggests, I just find php to be easier.
in products.php: Code:
foreach ($products as $k => $v) { In subcategories.tpl Code:
{if $manuf_this_cat} The most efficient way would be to modify the original query for $products to include the manufacturers name by joining the manufacturers table, then you would not have to cycle through the manufacturers array to get the name. But that query is built in kind of a complex way and is used in many places, so, at least for me, it would take some effort to do it and test it. --- --- |
All times are GMT -8. The time now is 09:57 PM. |
Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.