Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Main Category on front page, sub categories on left and...STS


Kopite

Recommended Posts

Hi,

 

I use STS sytem for my site.

 

I have installed this:

http://www.oscommerce.com/community/contri...categories+main

 

It works great.

 

But I also want to install this:

http://www.oscommerce.com/community/contri...,sub+categories

 

However, when I install the latter I get this:

Fatal error: Cannot redeclare preorder() (previously declared in /home/content/W/O/R/WOM/html/shop/includes/boxes/categories.php:17) in /home/content/W/O/R/WOM/html/shop/includes/modules/main_categories.php on line 68

 

Desperate to get the menu working as it looks really nice. If I remove the main category on front page contribution, the menu works but fomatting seems all over the place on my pages for some reason.

 

Any help appreciated: Thanks.

 

Main Categories:

<?php

/*

$Id: main_categories.php,v 1.0a 2002/08/01 10:37:00 Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com/

 

Copyright © 2002 Barreto

Gustavo Barreto <[email protected]>

http://www.barreto.net/

 

Based on: all_categories.php Ver. 1.6 by Christian Lescuyer

 

History: 1.0 Creation

1.0a Correction: Extra Carriage Returns

1.1 added parameters to change display options -- mdt

 

Released under the GNU General Public License

 

*/

 

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

// PARAMETERS

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

 

$item_column_number = 3; // range of 1 to 9

$item_title_on_newline = true; // true or false

$valign = middle; // middle, top, or bottom (determines the vertical placement of the images)

 

$hover = on; // turns hover effect on or off

 

// The Following Parameters are for customizing the hover effect

// leave the # in the color values or the border may not show

 

$hovercolor = "#BBC3D3"; // color for category when the mouse hovers over it

$hoverborder = "#000000"; // color for category border when hovered (ignore if $borderwidth is set to 0)

$regcolor = "#F8F8F9"; // color for category when not hovered

$regborder = "#F8F8F9"; // color for category border when not hovered (ignore if $borderwidth is set to 0)

$borderwidth = 1; // width of border around categories (in pixels, 0 for none)

 

// for item and subcategory options, suugest that you just put in CSS code

// you can also just define a class and then change it in a template addon like BTS

 

$item_div_options = 'style="text-align:center;font-weight:bold;font-size:larger;margin-top:5px;margin-bottom:5px;"';

$item_subcategories_options = '';

 

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

// CODE - do not change below here

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

 

// error checking on parameters

if($item_column_number < 1)

{

$item_column_number = 1;

}

if($item_column_number > 9)

{

$item_column_number = 9;

}

if($item_title_on_newline)

{

$item_separator = '<br>';

} else {

$item_separator = ' ';

}

 

// 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 == 'false') {

$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

if (is_array($foo)) {

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

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

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

}

}

}

}

 

?>

<!-- main_categories //-->

<tr>

<td>

<?php

//////////

// Display box heading

//////////

$info_box_contents = array();

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

new infoBoxHeading($info_box_contents, false, false);

 

 

//////////

// 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, c.categories_image

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

 

 

// Initiate tree traverse

$categories_string = '';

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

 

//////////

// Display box contents

//////////

 

$info_box_contents = array();

 

$row = 0;

$col = 0;

while ($categories = tep_db_fetch_array($categories_query))

{

if ($categories['parent_id'] == 0)

{

$cPath_new = tep_get_path($categories['categories_id']);

/*"OMITED SO IT DOESNT DISPLAY SUBCATEGORIES" $text_subcategories = '';

$subcategories_query = tep_db_query($query);

while ($subcategories = tep_db_fetch_array($subcategories_query))*/

{

if ($subcategories['parent_id'] == $categories['categories_id'])

{

$cPath_new_sub = "cPath=" . $categories['categories_id']/*"OMITED SO IT DOESNT DISPLAY SUBCATEGORIES" . "_" . $subcategories['categories_id']*/;

$text_subcategories .= '• <a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new_sub, 'NONSSL') . '">';

$text_subcategories .= $subcategories['categories_name'] . '</a>' . " ";

 

} // if ($subcategories['parent_id'] == $categories['categories_id'])

 

} // while ($subcategories = tep_db_fetch_array($subcategories_query))

 

if ($hover == 'on')

{

 

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

'params' => 'class="smallText" style="border:' . $borderwidth . 'px solid ' . $regborder . '" onMouseOver="window.status=\'' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '\'; this.style.backgroundColor=\'' . $hovercolor . '\'; this.style.cursor=\'hand\'; this.style.border=\'' . $borderwidth . 'px solid ' . $hoverborder . '\';" onMouseOut="window.status=\'\'; this.style.backgroundColor=\'' . $regcolor . '\'; this.style.border=\'' . $borderwidth . 'px solid ' . $regborder . '\';" onclick="location.href=\'' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '\'" width="'.intval(100/$item_column_number).'%" valign="' . $valign . '"',

'text' => '<div '. $item_div_options . '><a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '">' . tep_image(DIR_WS_IMAGES . $categories['categories_image'], $categories['categories_name'], SUBCATEGORY_IMAGE_WIDTH, SUBCATEGORY_IMAGE_HEIGHT) . '</a>' . $item_separator . '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '">' . $categories['categories_name'] . '</a><DIV ' . $item_subcategories_options . '>' . $text_subcategories . $spacing . '</DIV></DIV>');

 

}

 

else

 

{

 

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

'params' => 'class="smallText" width="'.intval(100/$item_column_number).'%" valign="' . $valign . '"',

'text' => '<div '. $item_div_options . '><a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '">' . tep_image(DIR_WS_IMAGES . $categories['categories_image'], $categories['categories_name'], SUBCATEGORY_IMAGE_WIDTH, SUBCATEGORY_IMAGE_HEIGHT) . '</a>' . $item_separator . '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '">' . $categories['categories_name'] . '</a><DIV ' . $item_subcategories_options . '>' . $text_subcategories . '</DIV></DIV>');

 

}

 

// determine the column position to see if we need to go to a new row

$col ++;

if ($col > ($item_column_number - 1))

{

$col = 0;

$row ++;

 

} //if ($col > ($number_of_columns - 1))

 

} //if ($categories['parent_id'] == 0)

 

} // while ($categories = tep_db_fetch_array($categories_query))

 

//output the contents

new contentBox($info_box_contents);

?>

</td>

</tr>

<!-- main_categories_eof //-->

 

Categories.php:

<?php

/*

$Id: show_subcategories.php,v 1.0 2003/01/08 10:37:00 Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com/

 

Based on: main_categories.php Ver. 1.0 by Gustavo Barreto

 

History: 1.0 Creation

 

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- this is for older snapshots pre-November 2002

/* 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 . '_' : ''))

;

} */

// Function used for post November 2002 snapshots

function tep_show_category($counter) {

global $foo, $categories_string, $id;

 

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

$categories_string .= " ";

}

}

}

 

?>

<!-- show_subcategories //-->

<tr>

<td class="infoBox_left">

 

<?php

 

//////////

// Display box heading

//////////

$info_box_contents = array();

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

new infoBoxHeading($info_box_contents, true, false, false, true);

 

//////////

// 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')); used for older snapshots

$status = tep_db_num_rows(tep_db_query('describe ' . TABLE_CATEGORIES . ' status'));

 

 

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

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

 

 

// Initiate tree traverse

$categories_string = '';

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

 

//////////

// Display box contents

//////////

$info_box_contents = array();

$row = 0;

$col = 0;

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

if ($categories['parent_id'] == 0)

{

$temp_cPath_array = $cPath_array; //Johan's solution - kill the array but save it for the rest of the site

unset($cPath_array);

 

$cPath_new = tep_get_path($categories['categories_id']);

 

$text_subcategories = '';

$subcategories_query = tep_db_query($query);

while ($subcategories = tep_db_fetch_array($subcategories_query))

{

 

if ($subcategories['parent_id'] == $categories['categories_id'])

{

 

$cPath_new_sub = "cPath=" . $categories['categories_id'] . "_" . $subcategories['categories_id'];

 

$text_subcategories .= '' . '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new_sub, 'NONSSL') . '" class="menusubcateg">' . '   ' . tep_image(DIR_WS_IMAGES . 'pointer_blue_light.gif', '') . $subcategories['categories_name'] . '</a>' . " ";

} // if

} // While Interno

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

'params' => 'class="smallText" width="125" valign="top"',

'text' => '' . '<a href="' . tep_href_link(FILENAME_DEFAULT, $cPath_new, 'NONSSL') . '" class="menucateg"><b>' . ' ' . tep_image(DIR_WS_IMAGES . 'pointer_blue.gif', '') . $categories['categories_name'] . '</b></a>' . $text_subcategories);

$col ++;

if ($col > 0)

{

$col = 0;

$row ++;

}

$cPath_array = $temp_cPath_array; //Re-enable the array for the rest of the code

}

}

new infoBox($info_box_contents, true);

 

 

?>

</td>

</tr>

<!-- show_subcategories_eof //-->

 

Many Thanks!

Link to comment
Share on other sites

If I remove the main categories on front page contribution my formatting is still messed up when using STS, like this:

 

errorfj3.th.jpg

 

If I turn STS off, the menu works fine. All good.

 

But obviously I need to get it working with STS.

 

Thanks.

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...