Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

to make categories headings display in the header


stevennickelby

Recommended Posts

Posted

Hi , i just want to have the category headings display in the header. I have the categories box displayed on the left aswell...

 

...i think i've gone about it the wrong way!

 

I setup links in the header and gave them category names, only to realise just now that,

if a customer is loged on and they click on one of these headers it will log them off...

 

..as there is no customer_id for those links. I thought maybe i could just do a simple cut and paste from categories.php to header.php, but it's way over my head,

 

Come guys can someone help!

 

:blink:

Posted

i've worked out that with the following code it will show the categories heading only...

but it's in rows,

 

how about just one row? :blink:

 

 

<?php

/*

$Id: categories.php,v 1.23 2002/11/12 14:09:30 dgw_ Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2002 osCommerce

 

Released under the GNU General Public License

*/

 

function tep_show_category($counter) {

global $foo, $categories_string, $id;

 

for ($a=0; $a<$foo[$counter]['level']; $a++) {

$categories_string .= " ";

}

 

$categories_string .= '<a class="a1" href="';

 

if ($foo[$counter]['parent'] == 0) {

$cPath_new = 'cPath=' . $counter;

} else {

$cPath_new = 'cPath=' . $foo[$counter]['path'];

}

 

$categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new);

$categories_string .= '">';

 

if ( ($id) && (in_array($counter, $id)) ) {

$categories_string .= '<b><a class="a2">';

}

 

// display category name

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

 

if ( ($id) && (in_array($counter, $id)) ) {

$categories_string .= '</b>';

}

 

if (tep_has_category_subcategories($counter)) {

$categories_string .= '';

}

 

$categories_string .= '</a><br>';

 

if (SHOW_COUNTS == 'true') {

$products_in_category = tep_count_products_in_category($counter);

if ($products_in_category > 0) {

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

}

}

 

$categories_string .= '<br>';

 

if ($foo[$counter]['next_id']) {

tep_show_category($foo[$counter]['next_id']);

}

}

?>

<!-- categories //-->

<tr>

<td>

<?php

$info_box_contents = array();

$info_box_contents[] = array('align' => 'left',

'text' => BOX_HEADING_CATEGORIES

);

//new CategoriesBoxHeading($info_box_contents, true, false);

 

$categories_string = '';

 

$categories_query = tep_db_query("select c.categories_id, cd.categories_name, c.parent_id from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and c.categories_id = cd.categories_id and cd.language_id='" . $languages_id ."' order by sort_order, cd.categories_name");

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

$foo[$categories['categories_id']] = array(

'name' => $categories['categories_name'],

'parent' => $categories['parent_id'],

'level' => 1,

'path' => $categories['categories_id'],

'next_id' => false

);

 

if (isset($prev_id)) {

$foo[$prev_id]['next_id'] = $categories['categories_id'];

}

 

$prev_id = $categories['categories_id'];

 

if (!isset($first_element)) {

$first_element = $categories['categories_id'];

}

}

 

//------------------------

 

tep_show_category($first_element);

 

$info_box_contents = array();

$info_box_contents[] = array('align' => 'left',

'text' => $categories_string

);

new CategoriesBox($info_box_contents);

?>

</td>

</tr>

<!-- categories_eof //-->

Posted

change this

$categories_string .= '<br>';

 

to

$categories_string .= '   ';

 

its not too good just to see the effect, but if you wand to have a single row you could move the $info_box_contents[] inside the function. Then utilize it as an multi-dim array where the first index specifies the row. The second is the column. Therefore keeping the same row and incrementing the column will expand it horizontally.

 

$info_box_contents[0][1]

$info_box_contents[0][2]

$info_box_contents[0][3]

etc

 

obviously you have to break at some point the row and start a new one. So you could setup a counter once reached you start a new row.

Archived

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

×
×
  • Create New...