3.5.8-3.5.9 but may work on others
In the older version of x-cart, disabled categories were still viewable so you could have hidden categories. This was good for hidden categories, not so good if you actually wanted to disable the category.
In the newer x-carts I've noticed they actually disable the category, but you can't have hidden categories.
This mod just allows you to create a hidden category using the admin section. The category won't show up in the navigation, and will still accessible by direct link.
Mod is pretty basic, was just difficult finding where the exclusion took place
-----
First lets get it to allow the hidden categories.
Open up /include/categories.php
FIND:
$categories_data = func_query("select $sql_tbl[categories].*, SUBSTRING_INDEX($sql_tbl[categories].category, '\/', -1) as category_name, SUBSTRING_INDEX($sql_tbl[categories].category, '\/', 1) as root_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"));
REPLACE WITH:
$categories_data = func_query("select $sql_tbl[categories].*, SUBSTRING_INDEX($sql_tbl[categories].category, '\/', -1) as category_name, SUBSTRING_INDEX($sql_tbl[categories].category, '\/', 1) as root_category_name from $sql_tbl[categories] ".($current_area=="C"?"where $sql_tbl[categories].avail='Y' OR $sql_tbl[categories].avail='H' $membership_condition ":"")." group by $sql_tbl[categories].categoryid order by ".($current_area=="C" ? "order_by" : "category"));
The key here is just adding the: OR $sql_tbl[categories].avail='H'
-----
Lets make hidden categories creatable from the admin
Open /skin1/admin/category_modify.tpl
FIND:
<select name=avail>
<option value='Y' {if ($current_category.avail eq 'Y')} selected {/if}>Enabled</option>
<option value='N' {if ($current_category.avail eq 'N')} selected {/if}>Disabled</option>
</select>
REPLACE WITH:
<select name=avail>
<option value='Y' {if ($current_category.avail eq 'Y')} selected {/if}>Enabled</option>
<option value='N' {if ($current_category.avail eq 'N')} selected {/if}>Disabled</option>
<option value='H' {if ($current_category.avail eq 'H')} selected {/if}>Hidden</option>
</select>
-------------------------
Everything is working now, except they are still on the side navigation, so lets remove them.
Open /skin1/customer/categories.tpl
FIND BOTH INSTANCES OF:
<font class=CategoriesList>
{$categories[cat_num].category_name}</font>
CHANGE TO:
{if $categories[cat_num].avail ne "H"}<font class=CategoriesList>
{$categories[cat_num].category_name}</font>
{/if}
NOTE: There are two links in this file, the categories and the subcategories. The modification needs to be made to both.
-------------------------
That should do it. Feel free to paypal a donation to
jon@hitemup.com if you feel this mod has saved you cost of some development time