Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

How do I turn category list into a menu?


Guest

Recommended Posts

Hi all-

How do I get the categories infobox to be a drop down menu rather than a list. I have tried a contribution, but it is quite buggy. Is there an easy way to do this?

-dan

Link to comment
Share on other sites

Hi Dan,

 

I was having the same problem last week. One of the contributions I found didn't work, but then I found another which works fine. I can't remember which one it is, but I've pasted the code below. Stick this in as your /boxes/categories file you should be alright!

 

Betty

 

 

 

<?php

/*

$Id: all_categories.php,v 1.6 2002/04/22 20:34:00 clescuyer Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com/

 

Copyright © 2002 Go?lette

Christian Lescuyer <[email protected]>

http://www.goelette.net/

http://oscommerce.goelette.net/

 

History: 1.1 Creation

1.2 Modified query for compatibility with older databases

1.3 Query in 1.2 was wrong for older databases

1.4 SHOW_COUNTS test corrected

1.5 Added COMPACT_CATEGORIES option to display all sub-categories on one line

1.6 Removed COMPACT_CATEGORIES option

Corrected the cpath generation

Bold categories "path" to selected category, an idea from Peter F?rsicht

 

Released under the GNU General Public License

 

*/

 

// Preorder tree traversal

function preorder($cid, $level, $foo, $cpath)

{

global $categories_string, $HTTP_GET_VARS;

 

// Display link

if ($cid != 0) {

for ($i=0; $i<$level; $i++)

$categories_string .= '';

$categories_string .= '<a href="' . tep_href_link(FILENAME_DEFAULT, 'cPath=' . $cpath . $cid) . '">';

// 1.6 Are we on the "path" to selected category?

$bold = strstr($HTTP_GET_VARS['cPath'], $cpath . $cid . '_') || $HTTP_GET_VARS['cPath'] == $cpath . $cid;

// 1.6 If yes, use <b>

if ($bold)

$categories_string .= '<b>';

$categories_string .= $foo[$cid]['name'];

if ($bold)

$categories_string .= '</b>';

$categories_string .= '</a>';

// 1.4 SHOW_COUNTS is 'true' or 'false', not true or false

if (SHOW_COUNTS == 'true') {

$products_in_category = tep_count_products_in_category($cid);

if ($products_in_category > 0) {

$categories_string .= '(' . $products_in_category . ')';

}

}

$categories_string .= '<br>';

}

 

// Traverse category tree

foreach ($foo as $key => $value) {

if ($foo[$key]['parent'] == $cid) {

// print "$key, $level, $cid, $cpath<br>";

preorder($key, $level+1, $foo, ($level != 0 ? $cpath . $cid . '_' : ''));

}

}

}

 

?>

<!-- all_categories //-->

<tr>

<td valign="top">

<br>

<br>

<?php

 

//////////

// Get categories list

//////////

// 1.2 Test for presence of status field for compatibility with older versions

$status = tep_db_num_rows(tep_db_query('describe categories status'));

 

$query = "select c.categories_id, cd.categories_name, c.parent_id

from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd

where c.categories_id = cd.categories_id";

// 1.3 Can't have 'where' in an if statement!

if ($status >0)

$query.= " and c.status = '1'";

$query.= " and cd.language_id='" . $languages_id ."'

order by sort_order, cd.categories_name";

 

$categories_query = tep_db_query($query);

 

// Stuff in an array

while ($categories = tep_db_fetch_array($categories_query)) {

$foo[$categories['categories_id']] = array('name' => $categories['categories_name'], 'parent' => $categories['parent_id']);

}

 

// Initiate tree traverse

$categories_string = '';

preorder(0, 0, $foo, '');

 

//////////

// Display box contents

//////////

$info_box_contents = array();

$info_box_contents[] = array('align' => 'left', 'text' => $categories_string);

new index($info_box_contents);

?>

</td>

</tr>

<!-- all_categories_eof //-->

Link to comment
Share on other sites

Hang on Dan - stop! I've just reread your post. I thought you were looking for a list instead of a drop down, not vice versa....sorry! maybe you need to look in your admin board. i think you can fill in a minimum number, over which the list will become a drop down list. if you set that to 1 then it should work....

 

betty

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...