Forum Moderators: coopster

Message Too Old, No Replies

php code slightly needing alteration?

Am very new and would appreciate help with code

         

Fallen Angel

2:46 pm on Jan 31, 2008 (gmt 0)

10+ Year Member



Hello everyone,

I was wondering please if someone could help me, this is only my second time here and last time you all helped loads.

I am very new to php and all that goes with it and have an oscommerce sight that am still trying to customise!

I decided I would like to put buttons in the left category navigation box and some nice person put a step by step instruction for it on the oscommerce forum.
Unfortunately they only did the code for top level categories and therefore only buttons for these are able to be added.

Can someone help me please and tell me how to alter the code so that all category levels are included or even some code so that the subcategories could have a separate class? Either would be much appreciated.

The code that I have is

<?php
/*
$Id: categories.php,v 1.25 2003/07/09 01:13:58 hpdl Exp $

osCommerce, Open Source E-Commerce Solutions
[oscommerce.com...]

Copyright (c) 2003 osCommerce

Released under the GNU General Public License
*/

function tep_show_category($counter) {
global $tree, $categories_string, $cPath_array;

for ($i=0; $i<$tree[$counter]['level']; $i++) {
$categories_string .= "&nbsp;&nbsp;";
}

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

if ($tree[$counter]['parent'] == 0) {
$cPath_new = 'cPath=' . $counter;
} else {
$cPath_new = 'cPath=' . $tree[$counter]['path'];
}

$categories_string .= tep_href_link(FILENAME_DEFAULT, $cPath_new) . '">';

if (isset($cPath_array) && in_array($counter, $cPath_array)) {
$categories_string .= '<b>';
}

// display category name
if ($tree[$counter]['level'] == 0) {
$categories_string .= '<img class="cats" src="' . $tree[$counter]['image'] . '">';
}
else $categories_string .= $tree[$counter]['name'];

if (isset($cPath_array) && in_array($counter, $cPath_array)) {
$categories_string .= '</b>';
}

if (tep_has_category_subcategories($counter)) {
$categories_string .= '';
}

$categories_string .= '</a>';

if (SHOW_COUNTS == 'true') {
$products_in_category = tep_count_products_in_category($counter);
if ($products_in_category > 0) {
$categories_string .= '&nbsp;(' . $products_in_category . ')';
}
}

$categories_string .= '<br>';

if ($tree[$counter]['next_id']!= false) {
tep_show_category($tree[$counter]['next_id']);
}
}
?>
<!-- categories //-->
<tr>
<td>
<?php
$info_box_contents = array();
$info_box_contents[] = array('text' => BOX_HEADING_CATEGORIES);

new infoBoxHeading($info_box_contents, false, false);

$categories_string = '';
$tree = array();

$categories_query = tep_db_query("select c.categories_id, cd.categories_name,
c.parent_id, cd.categories_description_image from " . TABLE_CATEGORIES . " c, "
. TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '0' and
c.categories_id = cd.categories_id and cd.language_id='" . (int)$languages_id
."' order by sort_order, cd.categories_name");while ($categories =
tep_db_fetch_array($categories_query)) {
$tree[$categories['categories_id']] = array('name' =>
$categories['categories_name'],
'parent' => $categories['parent_id'],
'level' => 0,
'path' => $categories['categories_id'],
'next_id' => false,
'image' => DIR_WS_IMAGES . $categories['categories_description_image']);

if (isset($parent_id)) {
$tree[$parent_id]['next_id'] = $categories['categories_id'];
}

$parent_id = $categories['categories_id'];

if (!isset($first_element)) {
$first_element = $categories['categories_id'];
}
}

//------------------------
if (tep_not_null($cPath)) {
$new_path = '';
reset($cPath_array);
while (list($key, $value) = each($cPath_array)) {
unset($parent_id);
unset($first_id);
$categories_query = tep_db_query("select c.categories_id, cd.categories_name,
c.parent_id, cd.categories_description_image from " . TABLE_CATEGORIES . " c, "
. TABLE_CATEGORIES_DESCRIPTION . " cd where c.parent_id = '" . (int)$value . "'
and c.categories_id = cd.categories_id and cd.language_id='" .
(int)$languages_id ."' order by sort_order, cd.categories_name"); if
(tep_db_num_rows($categories_query)) { $new_path .= $value;
while ($row = tep_db_fetch_array($categories_query)) {
$tree[$row['categories_id']] = array('name' => $row['categories_name'],
'parent' =>
$row['parent_id'], 'level'
=> $key+1, 'path' =>
$new_path . '_' . $row['categories_id'],
'next_id' => false,
'image' => DIR_WS_IMAGES . $categories['categories_description_image']);

if (isset($parent_id)) {
$tree[$parent_id]['next_id'] = $row['categories_id'];
}

$parent_id = $row['categories_id'];

if (!isset($first_id)) {
$first_id = $row['categories_id'];
}

$last_id = $row['categories_id'];
}
$tree[$last_id]['next_id'] = $tree[$value]['next_id'];
$tree[$value]['next_id'] = $first_id;
$new_path .= '_';
} else {
break;
}
}
}
tep_show_category($first_element);

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

new infoBox($info_box_contents);
?>
<table border="0" cellspacing="0" cellpadding="0" width="125">
<tr>
<td align="center"><img src="images/footer1.gif"></td>
</tr>
</table>
</td>
</tr>
<!-- categories_eof //-->

eelixduppy

7:39 pm on Feb 3, 2008 (gmt 0)



Looks like not very many people here are familiar with what you want to achieve. Have you tried posting your problem on the oscommerce forum so that people more familiar are able to help you?

Fallen Angel

11:54 am on Feb 5, 2008 (gmt 0)

10+ Year Member



I have posted it onto the oscommerce forum, but unfortunately there have been no replies there either.

Maybe there isn't a way?

Many thanks tho'

:-)

jatar_k

1:21 pm on Feb 5, 2008 (gmt 0)

WebmasterWorld Administrator 10+ Year Member



I'm sure there is a way

maybe a good first step would be to have the top level as you have it and then add a secondary menu that is top level cat specific somewhere else using the same logic.

Fallen Angel

3:24 pm on Feb 9, 2008 (gmt 0)

10+ Year Member



Thank you for your help, I did try that as someone on the oscommerce forum suggested it but unfortunately for some reason it doesn't recognise it.
I think that I have decided just to keep it as it is. It may well look too fussy with more buttons on it anyway.

Thank you to everyone that took the time to try to help me.

Kindest regards