Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Categories menu question


BBJ

Recommended Posts

John,

 

The hide categories contribution makes changes to the categories.php file.....however, the dynamic menu contribution does NOT use the categories.php file, it uses its own file dm_categories.php

 

So, you will need to try to implement the changes required in categories.php to the dm_categories.php file.

 

 

Chris

Link to comment
Share on other sites

John,

 

The hide categories contribution makes changes to the categories.php file.....however, the dynamic menu contribution does NOT use the categories.php file, it uses its own file dm_categories.php

 

So, you will need to try to implement the changes required in categories.php to the dm_categories.php file.

 

 

Chris

 

yes I realize that, I have tried to make the changes to the dm_categories.php file but can't get it to work, so I was wondering if anyone else had accomplished it.

 

This is what I have and it does not work

 

<?php

/*

$Id: dm_categories.php,v 1.00 2006/05/07 01:13:58 nate_02631 Exp $

 

Ties the store category menu into the PHP Layers Menu library, allowing display

of categories as DTHML drop-down or fly-out menus, collapsable tree-style menus

or horizontal/vertical indented plain menus.

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2006 Nate Welch http://www.natewelch.com

 

Released under the GNU General Public License

*/

 

// BEGIN Configuration Options

 

// Set the value below corresponding to the type of menu you want to render

// 0 = Horizontal Drop-down; 1 = Vertical Flyout; 2 = Tree Menu;

// 3 = Plain Horizontal Menu; 4 = Plain Vertical Menu

// Include the appropriate stylesheet in your store stylesheet, and if rendering

// types '0' or '1', you must also echo (output) the "menu footer" variable

// in your store footer as described in the readme (or submenus won't work)

$menu_type = 1;

 

// Set to false to display the menu output only. Set to true to display in

// a regular box. The former is useful for better integrating the menu with your layout.

$show_dmcats_as_box = true;

 

// Set to 'true' to assign TITLE tags to each of the menu's items, 'false' to leave blank

$menu_use_titles = true;

 

// Name of the icon file to be used preceding menu items. Leave blank for no icons.

// NOTE: Does not apply to plain style menus. Icon should be in the /images directory

$menu_icon_file = '';

 

// Width and height of icons used in menus (does not apply to plain menus).

$menu_icon_width = 16;

$menu_icon_height = 16;

 

// Set the graphic to be used for the forward arrow and down arrow images used in

// drop-down and fly-out menus. Images must reside in your catalog's /images directory

$menu_fwdarrowimg = 'forward-arrow.png';

$menu_downarrowimg = 'down-arrow.png';

 

// Indicates whether or not to render your entire category list or just the root categories

// and the currently selected submenu tree. Rendering the full list is useful for dynamic menu

// generation where you want the user to have instant access to all categories. The other option

// is the default oSC behaviour, when the subcats aren't available until the parent is clicked,

// more suitable for plain-style menus

$show_full_tree = true;

 

// For tree menus, set to true to have only nodes corresponding to the current category path

// expanded. If set to false, the tree menu will retain expanded/collapse nodes the user has

// selected (as well as expanding any for categories they've entered)

$menu_tree_current_path = true;

 

// Set the three numerical values below to adjust the offset of submenus in

// horizontal drop-down and vertical fly-out menus. Values adjust the following (in order)

// Top Offset: # of pixels from top border of previous menu the submenu appears

// Right Offset: # of pixels from right border of previous menu the submenu appears

// Left Offset: # of pixels from left border of previous menu the submenu appears

// if the submenu pops to left (i.e. if window border is reached). Negative values are allowed.

$menu_layer_offset = array (0,4,4);

 

// Show icons on tree menus? If set to false, only expand/collapse icons and connecting lines are shown

$GLOBALS['dm_tree_folder_icons'] = true;

 

// This is the HTML that you would like to appear before/after your categories menu if *not*

// displaying in a standard "box". This is useful for reconciling tables or clearing

// floats, depending on your layout needs. For example if not including in a box in the

// default osC template, you would need opening/closing <tr><td> tags...

$before_nobox_html = '';

$after_nobox_html = '';

 

// Use this option if you have a *lot* of subcategories in a DHTML style menu and your

// submenus won't fit on the page. Set $divide_subcats to the max # of subcategories you want

// to display. The menu will show a "more..." link and display the remaining subcategories

// under that selection. Leave at "0" to not divide your subcategories.

$divide_subcats = 5;

 

// The text you want to display to indicate more subcategories are available

// This can be set a string or to a language constant you define.

$divide_subcats_text = 'more...';

 

// END Configuration Options

 

 

// Misc setting to make folder icon clickable to expand tree menu nodes

$GLOBALS['dm_tree_titleclick'] = true;

 

// Initialize HTML and info_box class if displaying inside a box

if ($show_dmcats_as_box) {

echo '<tr><td>';

$info_box_contents = array();

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

new infoBoxHeading($info_box_contents, true, false);

}

 

// #################### Added Enable / Disable Categories ##############

// $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");

$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.categories_status = '1' and 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");

// #################### End Added Enable / Disable Categories ##############

 

 

 

// Generate the menu data output (uses configuration options above)

$categories_string = tep_make_cat_dmlist();

 

 

 

 

 

// Include required libraries based on menu type

require_once 'includes/functions/dynamenu/lib/PHPLIB.php';

require_once 'includes/functions/dynamenu/lib/layersmenu-common.inc.php';

 

if ($menu_type < 2) { // Setup for DHTML style menus

 

?>

<script language="JavaScript" type="text/javascript">

<!--

<?php require_once 'includes/functions/dynamenu/libjs/layersmenu-browser_detection.js'; ?>

// -->

</script>

<script language="JavaScript" type="text/javascript" src="includes/functions/dynamenu/libjs/layersmenu-library.js"></script>

<script language="JavaScript" type="text/javascript" src="includes/functions/dynamenu/libjs/layersmenu.js"></script>

<?php

 

require_once 'includes/functions/dynamenu/lib/layersmenu.inc.php';

$mid = new LayersMenu($menu_layer_offset[0],$menu_layer_offset[1],$menu_layer_offset[2],1);

 

} elseif ($menu_type > 2) { // Setup for plain style menus

 

require_once 'includes/functions/dynamenu/lib/plainmenu.inc.php';

$mid = new PlainMenu();

 

} else { // Setup for tree style menus

 

?>

<script language="JavaScript" type="text/javascript">

<!--

<?php require_once 'includes/functions/dynamenu/libjs/layersmenu-browser_detection.js'; ?>

 

<?php

 

if ($menu_tree_current_path) {

echo "\n".'var menu_tree_current_path = true';

} else {

echo "\n".'var menu_tree_current_path = false';

}

 

?>

// -->

</script>

<script language="JavaScript" type="text/javascript" src="includes/functions/dynamenu/libjs/layerstreemenu-cookies.js"></script>

<?php

 

require_once 'includes/functions/dynamenu/lib/treemenu.inc.php';

$mid = new TreeMenu();

 

}

 

// Set menu config variables

$mid->setDirroot('./');

$mid->setLibjsdir('./includes/functions/dynamenu/libjs/');

 

if ($menu_type !=2) {

$mid->setTpldir('./includes/functions/dynamenu/templates/');

}

 

$mid->setImgdir('./images/');

$mid->setImgwww('images/');

$mid->setIcondir('./images/');

$mid->setIconwww('images/');

$mid->setIconsize($menu_icon_width, $menu_icon_height);

 

// Generate menus

$mid->setMenuStructureString($categories_string);

$mid->parseStructureForMenu('catmenu');

 

switch ($menu_type) {

case 0: // Horizontal drop-down

$mid->setDownArrowImg($menu_downarrowimg);

$mid->setForwardArrowImg($menu_fwdarrowimg);

$mid->setHorizontalMenuTpl('layersmenu-horizontal_menu.ihtml');

$mid->setSubMenuTpl('layersmenu-horiz_sub_menu.ihtml');

$mid->newHorizontalMenu('catmenu');

$mid->printHeader();

$categories_menu = $mid->getMenu('catmenu');

$GLOBALS['dmfooter'] = $mid->getFooter();

break;

case 1: // Vertical fly-out

$mid->setDownArrowImg($menu_downarrowimg);

$mid->setForwardArrowImg($menu_fwdarrowimg);

$mid->setVerticalMenuTpl('layersmenu-vertical_menu.ihtml');

$mid->setSubMenuTpl('layersmenu-vert_sub_menu.ihtml');

$mid->newVerticalMenu('catmenu');

$mid->printHeader();

$categories_menu = $mid->getMenu('catmenu');

$GLOBALS['dmfooter'] = $mid->getFooter();

break;

case 2: // Tree menu

$categories_menu = $mid->newTreeMenu('catmenu');

break;

case 3: // Horizontal plain menu

$mid->setPlainMenuTpl('layersmenu-horizontal_plain_menu.ihtml');

$categories_menu = $mid->newHorizontalPlainMenu('catmenu');

break;

case 4: // Vertical plain menu

$mid->setPlainMenuTpl('layersmenu-plain_menu.ihtml');

$categories_menu = $mid->newPlainMenu('catmenu');

break;

}

 

 

// Output list inside a box if specified, otherwise just output unordered list

if ($show_dmcats_as_box) {

$info_box_contents = array();

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

new infoBox($info_box_contents);

echo '</td></tr>';

} else {

echo $before_nobox_html;

echo $categories_menu;

echo $after_nobox_html;

}

 

// Create the root category list

function tep_make_cat_dmlist($rootcatid = 0, $maxlevel = 0){

 

global $cPath_array, $show_full_tree, $languages_id;

 

global $idname_for_menu, $cPath_array, $show_full_tree, $languages_id;

 

// Modify category query if not fetching all categories (limit to root cats and selected subcat tree)

if (!$show_full_tree) {

$parent_query = 'AND (c.parent_id = "0"';

 

if (isset($cPath_array)) {

 

$cPath_array_temp = $cPath_array;

 

foreach($cPath_array_temp AS $key => $value) {

$parent_query .= ' OR c.parent_id = "'.$value.'"';

}

 

unset($cPath_array_temp);

}

 

$parent_query .= ')';

} else {

$parent_query = '';

}

 

// #################### Added Enable / Disable Categories ##############

// $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");

$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.categories_status = '1' and 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");

// #################### End Added Enable / Disable Categories ##############

 

 

 

 

$result = tep_db_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 and cd.language_id="' . (int)$languages_id .'" '.$parent_query.'order by sort_order, cd.categories_name');

 

 

 

 

while ($row = tep_db_fetch_array($result)) {

$table[$row['parent_id']][$row['categories_id']] = $row['categories_name'];

}

 

$output .= tep_make_cat_dmbranch($rootcatid, $table, 0, $maxlevel);

 

return $output;

}

 

// Create the branches off the category list

function tep_make_cat_dmbranch($parcat, $table, $level, $maxlevel) {

 

global $cPath_array, $menu_use_titles, $menu_icon_file, $divide_subcats, $divide_subcats_text;

 

$lvl_adjust = 1;

 

$list = $table[$parcat];

 

// Build data for menu

while(list($key,$val) = each($list)){

 

if (isset($cPath_array) && in_array($key, $cPath_array)) {

$this_expanded = '1';

$this_selected = 'dmselected';

} else {

$this_expanded = '';

$this_selected = '';

}

 

if (!$level) {

unset($GLOBALS['cPath_set']);

$GLOBALS['cPath_set'][0] = $key;

$cPath_new = 'cPath=' . $key;

 

} else {

$GLOBALS['cPath_set'][$level] = $key;

$cPath_new = 'cPath=' . implode("_", array_slice($GLOBALS['cPath_set'], 0, ($level+1)));

 

$this_subcat_count++;

}

 

if ($menu_use_titles) {

$this_title = $val;

} else {

$this_title = '';

}

 

if (SHOW_COUNTS == 'true') {

$products_in_category = tep_count_products_in_category($key);

if ($products_in_category > 0) {

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

}

}

 

// Output for file to be parsed by PHP Layers Menu

// Each line (terminated by a newline "\n" is a pipe delimited string with the following fields:

// [dots]|[text]|[link]|[title]|[icon]|[target]|[expanded]

// dots - number of dots signifies the level of the link '.' root level items, '..' first submenu, etc....

// text - text for link; title - tooltip for link; icon - icon for link; target - "dmselected" CSS class if item is selected

// expanded - signifies if the node is expanded or collapsed by default (applies only to tree style menus)

 

// Add "more" submenu if dividing subcategories

if ($this_subcat_count > $divide_subcats && $divide_subcats) {

$output .= str_repeat(".", $level+$lvl_adjust).'|'.$divide_subcats_text.'||'.$this_title.'|'.$menu_icon_file.'|'.$this_selected.'|'.$this_expanded."\n";

$this_subcat_count = 1;

$lvl_adjust ++;

}

 

$output .= str_repeat(".", $level+$lvl_adjust).'|'.$val.'|'.tep_href_link(FILENAME_DEFAULT, $cPath_new).'|'.$this_title.'|'.$menu_icon_file.'|'.$this_selected.'|'.$this_expanded."\n";

 

 

if ((isset($table[$key])) AND (($maxlevel > $level + 1) OR ($maxlevel == '0'))) {

$output .= tep_make_cat_dmbranch($key,$table,$level + $lvl_adjust,$maxlevel);

}

 

} // End while loop

 

return $output;

 

}

 

?>

 

 

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