Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Spry Category Menu


pinkequine

Recommended Posts

Hi

 

I am new to this forum and new to oscommerce and know pretty much nothing about PHP, though did do a video course for basics.

 

Anyway, I am trying to customize the bm_categories.php script to get it working. Tried and failed miserably to customize the standard script on account of its not done in list format so found a script on your resources forum that was and have customized (well probably more like butchered - apologies there) that script to get it working as best I can.

 

It does work, but not exactly how I wanted it to, but I just do not know enough about php to write anything that might work, so wondered if anyone can help with my script.

 

Basically - at the moment it works like this http://www.theoutletvillage.co.uk/shop1/index.php?cPath=1 on the subcategory menu and this http://www.theoutletvillage.co.uk/shop1/index.php on the main menu (its not showing subcats)

 

And I really want to put the category icons in as an image link. (see how it works in pure html, css) here http://www.theoutletvillage.co.uk/shop1/verticalmenu.html

 

I have tried to add this . tep_image(DIR_WS_IMAGES . $categories['categories_image'], but cant get it in the right place to wrap within the css. Also, for this css to work the list needs the class style 'leftmenu' to be on the top level <li> but not the <ul> sublevels. It seems the script knows if the level is top or sub and only shows the variations at sub level.

 

This code does work, but I have now spent 2 days trying to get it right and the only way I can effect it, is make a change on the page, upload it, view the page source and see if its made the right change, then go back and repeat the process. Now I am well and truly stuck and was wondering if there is any one out there who can help (at least with the image icon)

 

Many many thanks in advance... Denise

 

 

 

<?php


class bm_categories {
var $code = 'bm_categories';
var $group = 'boxes';
var $title;
var $description;
var $sort_order;
var $enabled = false;

function bm_categories() {
 $this->title = MODULE_BOXES_CATEGORIES_TITLE;
 $this->description = MODULE_BOXES_CATEGORIES_DESCRIPTION;

 if ( defined('MODULE_BOXES_CATEGORIES_STATUS') ) {
 $this->sort_order = MODULE_BOXES_CATEGORIES_SORT_ORDER;
 $this->enabled = (MODULE_BOXES_CATEGORIES_STATUS == 'True');

 $this->group = ((MODULE_BOXES_CATEGORIES_CONTENT_PLACEMENT == 'Left Column') ? 'boxes_column_left' : 'boxes_column_right');
 }
}

function tep_show_category($counter) {
 global $tree, $categories_string, $cPath_array, $pCounter;		 //added $pCounter
 //additional Variables
 //$pCounter is also globally defined and initialized in getData() and gets changed at the end of this fuction

 $nCounter = $tree[$counter]['next_id'];

 //Get item Levels
 if($pCounter == 0){
 $pLevel = 0;
 }else{
 $pLevel = $tree[$pCounter]['level'];
 }

 $cLevel = $tree[$counter]['level'];
 $nLevel = $tree[$nCounter]['level'];

 //Start of UnsortedList <ul> if Category level > 0
 if($cLevel > 0){
 if($cLevel != $pLevel){
	 $categories_string .= '<ul ' . $cLevel . '">';
 }
 }

 //Start of ListItem <li> and determines if List Item is Current
 if (isset($cPath_array) && in_array($counter, $cPath_array)) {
 if($cLevel == 0){
	 $categories_string .= '<li class="leftmenu"><a href="';
 }else{
	 $categories_string .= '<li class="leftmenu"><a href="';
 }
 }else{
 $categories_string .= '<li class="leftmenu"><a href="';
 }

 //Gets and inserts URL path for link
 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) . '">' ;


 //Gets CatgoryCounts if Set in Admin -- Seperator is also located here
// if (SHOW_COUNTS == 'true') {
//	 $products_in_category = tep_count_products_in_category($counter);
//	 if ($products_in_category > 0) {
//		 $showCount_string = '';
//	 }
// }

 //Start of Span <span> around Category Name
 if (isset($cPath_array) && in_array($counter, $cPath_array)) {
 $categories_string .= '' . $tree[$counter]['name'] . '</a>' .$showCount_string;
 } else {
$categories_string .= ''. $tree[$counter]['name'] . '</a>' . $showCount_string . '</li>';
 }

 //This is used to determin the level and place the correct number of closing tags
 if($cLevel > 0){
 if ($cLevel > $nLevel){
	 $j = abs($cLevel - $nLevel);
	 $categories_string .= str_repeat('</ul></li>', $j);
 }elseif ($nCounter == false){
	 $categories_string .= str_repeat('</ul></li>', $tree[$counter]['level']);
 }
 }

 $pCounter = $counter;

 if ($tree[$counter]['next_id'] != false) {
 $this->tep_show_category($tree[$counter]['next_id']);
 }
}

function getData() {
 global $categories_string, $tree, $languages_id, $cPath, $cPath_array, $pCounter;		 //added $pCounter
 $pCounter = 0; //initialize $pCounter
 $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;
	 }
 }
 }

 $this->tep_show_category($first_element);

 $data = '<div id="categoryBoxContainer" class="ui-widget infoBoxContainer">' .
		 ' <div class="ui-widget-header infoBoxHeading">' . MODULE_BOXES_CATEGORIES_BOX_TITLE . '</div>' .
		 ' <ul id="css3menu3" class="leftmenu">' . $categories_string . '</li></ul>' .
		 '</div>';


 return $data;
}

function execute() {
 global $SID, $oscTemplate;

 if ((USE_CACHE == 'true') && empty($SID)) {
 $output = tep_cache_categories_box();
 } else {
 $output = $this->getData();
 }

 $oscTemplate->addBlock($output, $this->group);
}

function isEnabled() {
 return $this->enabled;
}

function check() {
 return defined('MODULE_BOXES_CATEGORIES_STATUS');
}

function install() {
 tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Categories Module', 'MODULE_BOXES_CATEGORIES_STATUS', 'True', 'Do you want to add the module to your shop?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
 tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Content Placement', 'MODULE_BOXES_CATEGORIES_CONTENT_PLACEMENT', 'Left Column', 'Should the module be loaded in the left or right column?', '6', '1', 'tep_cfg_select_option(array(\'Left Column\', \'Right Column\'), ', now())");
 tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_BOXES_CATEGORIES_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())");
}

function remove() {
 tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
}

function keys() {
 return array('MODULE_BOXES_CATEGORIES_STATUS', 'MODULE_BOXES_CATEGORIES_CONTENT_PLACEMENT', 'MODULE_BOXES_CATEGORIES_SORT_ORDER');
}
}
?>

Link to comment
Share on other sites

Hi,

 

I havent had any replies so am wondering if perhaps what I am asking to do is too much since reading it back it does look a lot. Would it just be possible to tell me how I can get the category image in the menu?

 

Many thanks in advance

 

Denise

Link to comment
Share on other sites

Archived

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

×
×
  • Create New...