Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

I need to add some more code to categories.php box to change catalog menu display


smallville06

Recommended Posts

Would anybody have an idea as to what code I need to add to my categories.php so as when a customer clicks on a category it will indent the subcategories instead of displaying them under the parent category. It looks confusing on the website.

 

P.S. My website is www.stellaraccessories.com if anybody would like to give some feedback on improvments.

 

Thanks everybody!

 

 

 

 

 

<?php

/*

$Id: categories.php 1739 2007-12-20 00:52:16Z hpdl $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2003 osCommerce

 

Released under the GNU General Public License

*/

 

function tep_show_category($counter) {

global $tree, $categories_string, $cPath_array;

 

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

$categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";

}

 

for ($i=0; $i<$tree[$counter]['level']; $i++) {

$categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";

}

 

$categories_string .= '<a class="whitea" 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

$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 .= ' (' . $products_in_category . ')';

}

}

 

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

 

if ($tree[$counter]['next_id'] != false) {

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

}

}

?>

<!-- categories //-->

<tr>

<td class="center"><span class="whiteheddin"><? echo BOX_HEADING_CATEGORIES;?></span></td>

</tr>

<tr>

<td class="topline"><table width="100%" border="0" cellspacing="0" cellpadding="0">

<?php

 

 

$categories_string = '';

$tree = array();

 

$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='" . (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);

 

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 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);

 

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);

 

echo $categories_string;

?>

</table>

</td>

</tr>

<tr>

<td class="topline"><img src="images/blank.gif" width="1" height="1" /></td>

</tr>

<!-- categories_eof //-->

Link to comment
Share on other sites

Backup all files involved before editing.

 

In your global.css file ADD this code:

 

.whitex {
padding-left: 8px;
}

In the code you posted, change this code:

 

for ($i=0; $i<$tree[$counter]['level']; $i++) {
 $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
}

To:

 

for ($i=0; $i<$tree[$counter]['level']; $i++) {
 if ( $tree[$counter]['level'] != 0 ) (
$categories_string .= "<tr><td  class="whitex"><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
 } else {
$categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
 }
}

I think this will do what you want.

If I suggest you edit any file(s) make a backup first - I'm not perfect and neither are you.

 

"Given enough impetus a parallelogramatically shaped projectile can egress a circular orifice."

- Me -

 

"Headers already sent" - The definitive help

 

"Cannot redeclare ..." - How to find/fix it

 

SSL Implementation Help

 

Like this post? "Like" it again over there >

Link to comment
Share on other sites

That hasn't worked unfortunately the sub categories still remain left justified.!

 

Backup all files involved before editing.

 

In your global.css file ADD this code:

 

.whitex {
padding-left: 8px;
}

In the code you posted, change this code:

 

for ($i=0; $i<$tree[$counter]['level']; $i++) {
 $categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
}

To:

 

for ($i=0; $i<$tree[$counter]['level']; $i++) {
 if ( $tree[$counter]['level'] != 0 ) (
$categories_string .= "<tr><td  class="whitex"><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
 } else {
$categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
 }
}

I think this will do what you want.

Link to comment
Share on other sites

You haven't changed the stylesheet yet.

:huh:

 

Add the code to the stylesheet, then change the code I asked you to modify back to what it was.

 

Then change this code:

 

  if ($tree[$counter]['parent'] == 0) {
$categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
 }

To:

 

  if ($tree[$counter]['parent'] == 0) {
$categories_string .= "<tr><td><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
 } else {
$categories_string .= "<tr><td class="whitex"><img src='images/arro.gif' width='7' height='7' hspace='8' vspace='8' align='absmiddle' />";
 }

Sometimes after changing the stylesheet you have to hold the <Ctrl> key down while doing a page refresh in the browser to force the browser to reload all contents from the server, including the newly changed stylesheet.

 

This works with IE and Firefox.

 

I couldn't test the change so I just gave it my best shot.

 

Like my signature says, I'm not perfect. Far from it actually.

If I suggest you edit any file(s) make a backup first - I'm not perfect and neither are you.

 

"Given enough impetus a parallelogramatically shaped projectile can egress a circular orifice."

- Me -

 

"Headers already sent" - The definitive help

 

"Cannot redeclare ..." - How to find/fix it

 

SSL Implementation Help

 

Like this post? "Like" it again over there >

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...