X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Changing design (https://forum.x-cart.com/forumdisplay.php?f=51)
-   -   Rearranging and reconfiguring categories problem (https://forum.x-cart.com/showthread.php?t=8617)

BCSE 07-27-2004 07:06 AM

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

mikea93449 07-27-2004 07:24 AM

Thanks BCSE!
I appreciate both yours and Shans help and advice :D . 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

BCSE 07-27-2004 07:29 AM

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

mikea93449 07-27-2004 08:10 AM

Thanks Carrie! :D 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

BCSE 07-30-2004 08:29 AM

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

mikea93449 07-31-2004 06:18 PM

Thanks Carrie! I'm anxious to see if this will work. Hope you get your fires put out! :D 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

BCSE 08-01-2004 07:13 PM

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

mikea93449 08-02-2004 06:18 AM

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

Mike

BCSE 08-02-2004 06:29 AM

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

mikea93449 08-03-2004 02:38 AM

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


All times are GMT -8. The time now is 10:10 AM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.