X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Changing design (https://forum.x-cart.com/forumdisplay.php?f=51)
-   -   Display manufacturer list on category page (https://forum.x-cart.com/showthread.php?t=63034)

gb2world 03-24-2012 03:58 PM

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) {
  $manuf_this_cat[$products[$k]['manufacturerid']] = $manuf_this_cat[$products[$k]['manufacturerid']]+1;
}
$smarty->assign('manuf_this_cat',$manuf_this_cat);


Then in the template, probably subcategories.php, you can go through that array:
Code:

{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 />
</li>
{/foreach}
</ul>
<hr />
{/if}


Powertrain 03-24-2012 10:38 PM

Re: Display manufacturer list on category page
 
Quote:

Originally Posted by gb2world
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) {
  $manuf_this_cat[$products[$k]['manufacturerid']] = $manuf_this_cat[$products[$k]['manufacturerid']]+1;
}
$smarty->assign('manuf_this_cat',$manuf_this_cat);


Then in the template, probably subcategories.php, you can go through that array:
Code:

{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 />
</li>
{/foreach}
</ul>
<hr />
{/if}



We are getting somewhere now O:)

That code display this list in array:
  • manufacturerid:4
    number items this cat:6
    name: Dodge
  • manufacturerid:5
    number items this cat:1
    name: Ford
Now we need to display those manufacturers as links with name as anchor text?

Thanks.

gb2world 03-25-2012 12:19 PM

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}

---

Powertrain 03-25-2012 01:16 PM

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.

gb2world 03-25-2012 01:57 PM

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

---

Powertrain 03-25-2012 04:58 PM

Re: Display manufacturer list on category page
 
Quote:

Originally Posted by gb2world
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

---


I did caught that blank space and corrected it but still manufacturer name comes out wrong.

any idea?

Thanks.

gb2world 03-25-2012 07:34 PM

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.

---

cherie 03-27-2012 01:04 PM

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.

gb2world 03-27-2012 02:24 PM

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) {
  $manufac_id = $products[$k]['manufacturerid'];
  $manuf_this_cat[$manufac_id] = func_query_first_cell ("SELECT manufacturer FROM $sql_tbl[manufacturers] WHERE $sql_tbl[manufacturers].manufacturerid='$manufac_id'");
}
$smarty->assign('manuf_this_cat',$manuf_this_cat);


Then in the template:
Code:

{if $manuf_this_cat}
<hr />
<ul>
{foreach from=$manuf_this_cat key=k item=v}
<li>
manufacturerid:{$k}<br />
name:{$v}<br />
link: <a href="manufacturers.php?manufacturerid={$k}">{$v}</a>
</li>
{/foreach}
</ul>
<hr />
{/if}


cherie 03-27-2012 03:01 PM

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.


All times are GMT -8. The time now is 12:19 PM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.