Follow us on Twitter X-Cart on Facebook Wiki
Shopping cart software Solutions for online shops and malls
 

Rearranging and reconfiguring categories problem

 
Reply
   X-Cart forums > X-Cart 4 > Dev Questions > Changing design
 
Thread Tools Search this Thread
  #11  
Old 07-27-2004, 07:06 AM
  BCSE's Avatar 
BCSE BCSE is online now
 

X-Guru
  
Join Date: Apr 2003
Location: Ohio - bcsengineering.com
Posts: 3,067
 

Default

You should be able to modify categories.php to give you the sub categories of the parent category if no sub-sub categories exist. I hope that makes sense.

It would take quite a bit of work. If I weren't so strapped for time right now, I'd look into it further for you.

If I get some spare time, I'll try to figure it out.

Nice looking site BTW!

Carrie
__________________
Custom Development, Custom Coding and Pre-built modules for X-cart since 2002!

We support X-cart versions 3.x through 5.x!

Home of the famous Authorize.net DPM & CIM Modules, Reward Points Module, Point of Sale module, Speed Booster modules and more!


Over 200 X-cart Mods available & Thousands of Customizations Since 2002 - bcsengineering.com

Please E-Mail us for questions/support!
Reply With Quote
  #12  
Old 07-27-2004, 07:24 AM
 
mikea93449 mikea93449 is offline
 

Member
  
Join Date: Jul 2004
Posts: 22
 

Default

Thanks BCSE!
I appreciate both yours and Shans help and advice . Any help you can give me about modifying the categories.tpl file to keep the sub-categories visible would be invaluable. In its current state, it's not going to work very well without it.

Thank you again,
Mike
Reply With Quote
  #13  
Old 07-27-2004, 07:29 AM
  BCSE's Avatar 
BCSE BCSE is online now
 

X-Guru
  
Join Date: Apr 2003
Location: Ohio - bcsengineering.com
Posts: 3,067
 

Default

Well, you're going to have to change the PHP code to do what you want it to do. It's not going to be simple from first glance at categories.php

I have to get a large list of things done today. I'll try to slip it in to see if its possible to do. It should be possible, it's just not going to be easy.

Carrie
__________________
Custom Development, Custom Coding and Pre-built modules for X-cart since 2002!

We support X-cart versions 3.x through 5.x!

Home of the famous Authorize.net DPM & CIM Modules, Reward Points Module, Point of Sale module, Speed Booster modules and more!


Over 200 X-cart Mods available & Thousands of Customizations Since 2002 - bcsengineering.com

Please E-Mail us for questions/support!
Reply With Quote
  #14  
Old 07-27-2004, 08:10 AM
 
mikea93449 mikea93449 is offline
 

Member
  
Join Date: Jul 2004
Posts: 22
 

Default

Thanks Carrie! Just to let you know, this is my first experience in dealing with PHP so any fixes you have to share with me will probably require some patience on your part - but I do catch on to things fairly quickly. I really appreciate your help!

Mike
Reply With Quote
  #15  
Old 07-30-2004, 08:29 AM
  BCSE's Avatar 
BCSE BCSE is online now
 

X-Guru
  
Join Date: Apr 2003
Location: Ohio - bcsengineering.com
Posts: 3,067
 

Default

No problem. I haven't forgotten about this. I'm just super swamped this week with "emergency" X-cart work. It's on my list of to-do.

Carrie
__________________
Custom Development, Custom Coding and Pre-built modules for X-cart since 2002!

We support X-cart versions 3.x through 5.x!

Home of the famous Authorize.net DPM & CIM Modules, Reward Points Module, Point of Sale module, Speed Booster modules and more!


Over 200 X-cart Mods available & Thousands of Customizations Since 2002 - bcsengineering.com

Please E-Mail us for questions/support!
Reply With Quote
  #16  
Old 07-31-2004, 06:18 PM
 
mikea93449 mikea93449 is offline
 

Member
  
Join Date: Jul 2004
Posts: 22
 

Default

Thanks Carrie! I'm anxious to see if this will work. Hope you get your fires put out! Say, can you or anyone else guide me to where I can increase the font size used in the product text display area? I'm sure its in the css file somewhere, but I must be missing it.

Thanks again,
Mike
Reply With Quote
  #17  
Old 08-01-2004, 07:13 PM
  BCSE's Avatar 
BCSE BCSE is online now
 

X-Guru
  
Join Date: Apr 2003
Location: Ohio - bcsengineering.com
Posts: 3,067
 

Default

I think I have it! I had a few minutes tonight to take a stab at it and seem to have it. It's not completely tested though, so let me know if you find any problems with it.

Here's how to try it:
1. - BACK UP skin1/customer/categories.tpl
- BACK UP include/categories.php

2. Add this code to include/categories.php:
Code:
# BCSE Begin if(empty($subcategories)) { $pos=strpos($current_category["category"],"/"); while(!$pos===false) { $previous_pos=$pos; $pos=strpos($current_category["category"],"/",$pos+1); } $parent = substr($current_category["category"],0,($previous_pos+$pos)); if (!empty($parent)) $cur_dir_len = strlen($parent); foreach($all_categories as $all_category) { $category=$all_category["category"]; if(!strstr($category,"/")) { if(empty($parent)) { $super_subcategories[]=$all_category; } } if(!empty($parent) and substr($category,0,$cur_dir_len+1) == $parent."/" and $category!=$parent) { if(!strstr(substr($category,$cur_dir_len+1),"/")) { $all_category["category"]=ereg_replace("^.*/","",$all_category["category"]); $super_subcategories[]=$all_category; } } } if(!empty($super_subcategories)) { $smarty->assign("super_subcategory",$super_subcategories); } } # BCSE End

After:
Code:
# # Put all root categories to $categories array # Put all subcategories of current_category to $categories array # if (!empty($current_category)) $cur_dir_len = strlen($current_category["category"]); foreach($all_categories as $all_category) { $category=$all_category["category"]; if(!strstr($category,"/")) { $categories[]=$all_category; if(empty($current_category)) { $subcategories[]=$all_category; } } if(!empty($current_category) and substr($category,0,$cur_dir_len+1) == $current_category["category"]."/" and $category!=$current_category["category"]) if(!strstr(substr($category,$cur_dir_len+1),"/")) { $all_category["category"]=ereg_replace("^.*/","",$all_category["category"]); $subcategories[]=$all_category; } }

3. Add this code to skin1/customer/categories.tpl
Code:
{* BCSE Begin *} {section name=super_idx loop=$super_subcategory} <font class=CategoriesList>{$super_subcategory[super_idx].category_name}</font> {/section} {* BCSE End *}

Before:
Code:
{/if} {/if} {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title=$lng.lbl_categories menu_content=$smarty.capture.menu }

I tested this on 3.5.10. It should work on 3.5.9.

Hope this helps!

Carrie
__________________
Custom Development, Custom Coding and Pre-built modules for X-cart since 2002!

We support X-cart versions 3.x through 5.x!

Home of the famous Authorize.net DPM & CIM Modules, Reward Points Module, Point of Sale module, Speed Booster modules and more!


Over 200 X-cart Mods available & Thousands of Customizations Since 2002 - bcsengineering.com

Please E-Mail us for questions/support!
Reply With Quote
  #18  
Old 08-02-2004, 06:18 AM
 
mikea93449 mikea93449 is offline
 

Member
  
Join Date: Jul 2004
Posts: 22
 

Default

Hi Carrie,
Thank you for the mod, but I can't seem to get it working. Here is the complete code that I currently have for categories.tpl (including your mod):

Code:
{* $Id: categories.tpl,v 1.19.2.1 2004/03/16 12:12:16 svowl Exp $ *} {capture name=menu} {if $active_modules.Fancy_Categories ne ""} {include file="`$fancycategories_config.modules_path`/fancy_categories.tpl"} {else} {if $config.General.root_categories eq "Y"} {section name=cat_num loop=$categories} <font class=CategoriesList>{$categories[cat_num].category_name}</font> {/section} {else} {section name=cat_num loop=$subcategories} <font class=CategoriesList>{$subcategories[cat_num].category_name}</font> {/section} {* BCSE Begin *} {section name=super_idx loop=$super_subcategory} <font class=CategoriesList>{$super_subcategory[super_idx].category_name}</font> {/section} {* BCSE End *} {/if} {/if} {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title=$lng.lbl_categories menu_content=$smarty.capture.menu }

And here is the code I have currently for categories.php (including your mod). This was found in htdocs/admin. There wasn't a categories.php in the customer directory so I hope I modified the right one.

Code:
# # $Id: categories.php,v 1.18.2.3 2004/03/09 09:13:26 svowl Exp $ # require "./auth.php"; require $xcart_dir."/include/security.php"; require $xcart_dir."/include/categories.php"; if (empty($mode)) $mode = ""; # # Counts products and subcategories # if (is_array(@$subcategories)) { $smarty->assign("subcategories",$subcategories); } # # Ajust category_location array # if (is_array(@$category_location)) { reset($category_location); while(list($key,$cat_loc) = each($category_location)) $category_location[$key][1] = str_replace("home.php","categories.php",$category_location[$key][1]); if(!empty($current_category)) $location = $category_location; } # BCSE Begin if(empty($subcategories)) { $pos=strpos($current_category["category"],"/"); while(!$pos===false) { $previous_pos=$pos; $pos=strpos($current_category["category"],"/",$pos+1); } $parent = substr($current_category["category"],0,($previous_pos+$pos)); if (!empty($parent)) $cur_dir_len = strlen($parent); foreach($all_categories as $all_category) { $category=$all_category["category"]; if(!strstr($category,"/")) { $categories[]=$all_category; if(empty($parent)) { $super_subcategories[]=$all_category; } } if(!empty($parent) and substr($category,0,$cur_dir_len+1) == $parent."/" and $category!=$parent) { if(!strstr(substr($category,$cur_dir_len+1),"/")) { $all_category["category"]=ereg_replace("^.*/","",$all_category["category"]); $super_subcategories[]=$all_category; } } } if(!empty($super_subcategories)) { $smarty->assign("super_subcategory",$super_subcategories); } } # BCSE End # FEATURED PRODUCTS $f_cat = (empty ($cat) ? "0" : $cat); if ($REQUEST_METHOD=="POST") { while(list($key,$val)=each($HTTP_POST_VARS)) { if (strstr($key,"-")) { list($field,$productid)=split("-",$key); if ($field=="avail") $val="Y"; db_query("update $sql_tbl[featured_products] set avail='N', $field='$val' where productid='$productid' AND categoryid='$f_cat'"); } } if ($newproductid!="") { $newavail=($newavail=="on" ? "Y" : "N"); if ($neworder=="") { $maxorder = array_pop(func_query_first("select max(product_order) from $sql_tbl[featured_products] WHERE categoryid='$f_cat'")); $neworder=$maxorder+1; } if (func_query_first("select productid from $sql_tbl[products] where productid='$newproductid'") and array_pop(func_query_first("SELECT COUNT(*) FROM $sql_tbl[featured_products] WHERE productid='$newproductid' AND categoryid='$f_cat'")) == 0) db_query("insert into $sql_tbl[featured_products] (productid, product_order, avail, categoryid) values ('$newproductid','$neworder','$newavail', '$f_cat')"); } func_header_location("categories.php?cat=$cat"); } if ($mode == "delete") { db_query ("DELETE FROM $sql_tbl[featured_products] WHERE productid='$productid' AND categoryid='$f_cat'"); func_header_location("categories.php?cat=$cat"); } $products = func_query ("SELECT $sql_tbl[featured_products].productid, $sql_tbl[products].product, $sql_tbl[featured_products].product_order, $sql_tbl[featured_products].avail from $sql_tbl[featured_products], $sql_tbl[products] where $sql_tbl[featured_products].productid=$sql_tbl[products].productid AND $sql_tbl[featured_products].categoryid='$f_cat' order by $sql_tbl[featured_products].product_order"); $smarty->assign ("products", $products); $smarty->assign ("f_cat", $f_cat); $smarty->assign("location",@$location); $smarty->assign("main","categories"); @include $xcart_dir."/modules/gold_display.php"; $smarty->display("admin/home.tpl"); ?>

Can you see anything I have done wrong?

Thanks again for looking into this .

Mike
Reply With Quote
  #19  
Old 08-02-2004, 06:29 AM
  BCSE's Avatar 
BCSE BCSE is online now
 

X-Guru
  
Join Date: Apr 2003
Location: Ohio - bcsengineering.com
Posts: 3,067
 

Default

It's in include directory. So restore your admin/categories.php file and edit the include/categories.php instead. Sorry about that! Not sure why I said customer/categories.php I reflected the changes in my previous post.

Let me know if that doesn't work!

Carrie
__________________
Custom Development, Custom Coding and Pre-built modules for X-cart since 2002!

We support X-cart versions 3.x through 5.x!

Home of the famous Authorize.net DPM & CIM Modules, Reward Points Module, Point of Sale module, Speed Booster modules and more!


Over 200 X-cart Mods available & Thousands of Customizations Since 2002 - bcsengineering.com

Please E-Mail us for questions/support!
Reply With Quote
  #20  
Old 08-03-2004, 02:38 AM
 
mikea93449 mikea93449 is offline
 

Member
  
Join Date: Jul 2004
Posts: 22
 

Default

Hi Carrie,
I'm not sure if I did something wrong or not but the categories are now kind of screwed up in how they are displaying. You can view what it is doing at http://www.solutionsforliving.biz and clicking on any of the category links across the top portion of the page. I'm posting the code for the 3 files that seem to be affected:

include/categories.php:

Code:
# # $Id: categories.php,v 1.52.2.5 2004/04/21 05:36:49 mclap Exp $ # if ( !defined('XCART_SESSION_START') ) { header("Location: ../"); die("Access denied"); } if (empty($cat)) $cat = 0; # # For users some categories may be disabled # if ($current_area == "C" and !empty($user_account)) { $membership_condition = " AND ($sql_tbl[categories].membership='$user_account[membership]' OR $sql_tbl[categories].membership='') "; } else { $membership_condition = " AND ($sql_tbl[categories].membership='') "; } $categories_data = func_query("select $sql_tbl[categories].*, SUBSTRING_INDEX($sql_tbl[categories].category, '\/', -1) as category_name from $sql_tbl[categories] ".($current_area=="C"?"where $sql_tbl[categories].avail='Y' $membership_condition ":"")." group by $sql_tbl[categories].categoryid order by ".($current_area=="C" ? "order_by" : "category")); # # Put all categories into $all_categories array and find current_category # by categoryid stored in $cat # if(!$categories_data) $categories_data = array(); $current_category = ""; foreach($categories_data as $k=>$category_data) { if ($current_area == "C") { $int_res = func_query_first("SELECT * FROM $sql_tbl[categories_lng] WHERE code='$store_language' AND categoryid='$category_data[categoryid]'"); if (!empty($int_res["category"])) { $categories_data[$k]["category_name_orig"] = $category_data["category_name_orig"] = $category_data["category_name"]; $categories_data[$k]["category_name"] = $category_data["category_name"] = $int_res["category"]; } if (!empty($int_res["description"])) $categories_data[$k]["description"] = $category_data["description"] = $int_res["description"]; } if ($category_data["categoryid"]==$cat) { $current_category = $category_data; } } if (empty($current_category)) $cat = 0; $all_categories = $categories_data; # # # if (!empty($active_modules["Fancy_Categories"])) @include $xcart_dir."/modules/Fancy_Categories/fancy_categories.php"; # BCSE Begin if(empty($subcategories)) { $pos=strpos($current_category["category"],"/"); while(!$pos===false) { $previous_pos=$pos; $pos=strpos($current_category["category"],"/",$pos+1); } $parent = substr($current_category["category"],0,($previous_pos+$pos)); if (!empty($parent)) $cur_dir_len = strlen($parent); foreach($all_categories as $all_category) { $category=$all_category["category"]; if(!strstr($category,"/")) { $categories[]=$all_category; if(empty($parent)) { $super_subcategories[]=$all_category; } } if(!empty($parent) and substr($category,0,$cur_dir_len+1) == $parent."/" and $category!=$parent) { if(!strstr(substr($category,$cur_dir_len+1),"/")) { $all_category["category"]=ereg_replace("^.*/","",$all_category["category"]); $super_subcategories[]=$all_category; } } } if(!empty($super_subcategories)) { $smarty->assign("super_subcategory",$super_subcategories); } } # BCSE End # # Put all root categories to $categories array # Put all subcategories of current_category to $categories array # if (!empty($current_category)) $cur_dir_len = strlen($current_category["category"]); foreach($all_categories as $all_category) { $category=$all_category["category"]; if(!strstr($category,"/")) { $categories[]=$all_category; if(empty($current_category)) { $subcategories[]=$all_category; } } if(!empty($current_category) and substr($category,0,$cur_dir_len+1) == $current_category["category"]."/" and $category!=$current_category["category"]) if(!strstr(substr($category,$cur_dir_len+1),"/")) { $all_category["category"]=ereg_replace("^.*/","",$all_category["category"]); $subcategories[]=$all_category; } } # # Put subcategory_count to $subcategories array # if (!empty($subcategories)) foreach($subcategories as $key =>$subcategory) { $subcategory["subcategory_count"]=0; foreach($all_categories as $all_category) { if ($all_category["categoryid"]==$subcategory["categoryid"]) { $cur_dir_len = strlen($all_category["category"]); $current_subcategory=$all_category["category"]; } } foreach($all_categories as $all_category) { $category=$all_category["category"]; if(substr($category,0,$cur_dir_len+1) == $current_subcategory."/" and $category!=$current_subcategory) if(!strstr(substr($category,$cur_dir_len+1),"/")) $subcategory["subcategory_count"]++; } $subcategories[$key]["subcategory_count"]=$subcategory["subcategory_count"]; } # # Generate category sequence, i.e. # Books, Books/Poetry, Books/Poetry/Philosophy ... # if (!empty($current_category)) { $current_category_array = explode("/",$current_category["category"]); $prev = $current_category_array[0]; list($key,$val)=each($current_category_array); $new_array = array($val); while(list($key,$val)=each($current_category_array)) { $new_array[] = $prev."/".$val; $prev = $prev."/".$val; } unset($current_category_array); # # Generate array for displaying categories sequence in location # $category_location=array(); reset($all_categories); $my_cats = array (); foreach($all_categories as $all_category) { $categoryid=$all_category["categoryid"]; $category=$all_category["category"]; $my_cats [$categoryid] = $category; } asort ($my_cats); foreach ($my_cats as $categoryid => $category) { reset ($new_array); while(list($key,$val)=each($new_array)) { if ($val==$category) { foreach($categories_data as $category_data) { if ($category_data["categoryid"] == $categoryid) $val = $category_data["category_name"]; } $category_location[]=array(ereg_replace(".*/","",$val),"home.php?cat=".$categoryid); } } } } if ($current_area == "C" and !empty($current_category) and $config["Images"]["icons_location"] == "FS") { $current_category["image_path"] = array_pop(func_query_first("SELECT image_path FROM $sql_tbl[icons] WHERE categoryid='$cat'")); if (eregi("^(http|ftp)://", $current_category["image_path"])) { # image_path is an URL $current_category["icon_url"] = $current_category["image_path"]; } elseif (!strncmp($xcart_dir, $current_category["image_path"], strlen($xcart_dir))) { # image_path is an locally placed image $current_category["icon_url"] = $current_location.substr($current_category["image_path"], strlen($xcart_dir)); } } # # Assign Smarty variables # $smarty->assign("allcategories",$all_categories); $smarty->assign("categories",$categories); if (!empty($subcategories)) $smarty->assign("subcategories",$subcategories); if (!empty($current_category)) $smarty->assign("current_category",$current_category); $smarty->assign("cat",$cat); ?>

catagories.tpl:

Code:
{* $Id: categories.tpl,v 1.19.2.1 2004/03/16 12:12:16 svowl Exp $ *} {capture name=menu} {if $active_modules.Fancy_Categories ne ""} {include file="`$fancycategories_config.modules_path`/fancy_categories.tpl"} {else} {if $config.General.root_categories eq "Y"} {section name=cat_num loop=$categories} <font class=CategoriesList>{$categories[cat_num].category_name}</font> {/section} {else} {section name=cat_num loop=$subcategories} <font class=CategoriesList>{$subcategories[cat_num].category_name}</font> {/section} {* BCSE Begin *} {section name=super_idx loop=$super_subcategory} <font class=CategoriesList>{$super_subcategory[super_idx].category_name}</font> {/section} {* BCSE End *} {/if} {/if} {/capture} { include file="menu.tpl" dingbats="dingbats_categorie.gif" menu_title=$lng.lbl_categories menu_content=$smarty.capture.menu }

and head.tpl:

Code:
{* $Id: head.tpl,v 1.30.2.3 2004/03/09 08:28:25 svowl Exp $ *} <table border="0" width="768" cellspacing="0" cellpadding="0"> <tr> <td width="768"> <img src ="{$ImagesDir}/logo1_01.gif" border="0"><img border="0" src ="{$ImagesDir}/logo1_06.gif"><img border="0" src ="{$ImagesDir}/logo1_07.gif"><img border="0" src ="{$ImagesDir}/logo1_08.gif"><img border="0" src ="{$ImagesDir}/logo1_09.gif"><img border="0" src ="{$ImagesDir}/logo1_10.gif"><img border="0" src ="{$ImagesDir}/logo1_11.gif"><img border="0" src ="{$ImagesDir}/logo1_12.gif"></td> </tr> </table> <table width="768" border="0" cellpadding="0" cellspacing="0"><tr><td width="8">[img]{$ImageDir}/logo1_13.gif[/img]</td> {section name=cat_num loop=$categories} <td width="760"> <a href="home.php?cat={$categories[cat_num].categoryid}" > <img src ="{$ImagesDir}/navpics/{$categories[cat_num].categoryid}.gif" border="0"> </a> </td> {/section} </tr> </table> <TABLE border=0 cellPadding=0 cellSpacing=0 width="768"> <TR> <TD colspan=2 class=VertMenuBorder>[img]{$ImagesDir}/spacer.gif[/img]</TD> </TR> <TR> <TD class=HeadLine height=22> {if $usertype eq "C"} { include file="customer/search.tpl" } {/if} </TD> <TD class=HeadLine align=right> {if $usertype eq "C" and $all_languages_numba gt 1} <table border=0 cellpadding=0 cellspacing=0> <FORM action="home.php" method=GET name=sl_form> <INPUT type=hidden name="redirect" value="{$smarty.server.PHP_SELF}?{$smarty.server.QUERY_STRING}"> <tr> <td> {$lng.lbl_select_language}: <SELECT name=sl onChange="javascript: document.sl_form.submit()"> {section name=ai loop=$all_languages} <OPTION value="{$all_languages[ai].code}"{if $store_language eq $all_languages[ai].code} selected{/if}>{$all_languages[ai].language}</OPTION> {/section} </SELECT> </td></tr> </FORM> </table> {elseif ($usertype eq "P" or $usertype eq "A") and $login and $all_languages_numba gt 1} <table border=0 cellpadding=0 cellspacing=0> <FORM action="{$smarty.server.REQUEST_URI}" method=POST name=asl_form> <tr> <td>Current language:</td> <td> <INPUT type=hidden name="redirect" value="{$smarty.server.QUERY_STRING}"> <SELECT name=asl onChange="javascript: document.asl_form.submit()"> {section name=ai loop=$all_languages} <OPTION value="{$all_languages[ai].code}"{if $current_language eq $all_languages[ai].code} selected{/if}>{$all_languages[ai].language}</OPTION> {/section} </SELECT> </td></tr> </FORM> </table> {else} {/if} </TD> </TR> <TR> <TD colspan=2 class=VertMenuBorder>[img]{$ImagesDir}/spacer.gif[/img]</TD> </TR> {*<TR> <TD colspan=2 class=NumberOfArticles align=right>{insert name="productsonline"} {$lng.lbl_products} {if $config.Appearance.show_in_stock eq "N"}{$lng.lbl_and} {insert name="itemsonline"} {$lng.lbl_items} {/if}{$lng.lbl_online}</TD> </TR>*} </TABLE>

I really don't know what to do to fix this at this point so any help you can offer will be much appreciated.

Thanks again,
Mike
Reply With Quote
Reply
   X-Cart forums > X-Cart 4 > Dev Questions > Changing design



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -8. The time now is 08:58 PM.

   

 
X-Cart forums © 2001-2020