Main page not displaying categories and being marked as 404 not found.
URL:Innerlightcrystals.co.uk/sales
ZC version: 1.5.7b
PHP version:7.2
The main page (top page) is no longer displaying the sub categories (level below top). also the page is returning 404 status.
This behaviour has appeared since 1.5.6c prior to that it worked fine. I have looked at the code and I think I know the cause.
/includes/modules/pages/index/header_php.php
PHP Code:
$category_depth = 'top';
$current_category_not_found = false;
$current_category_is_disabled = false;
$current_category_has_products = false;
$current_category_has_subcats = false;
if (isset($cPath) && zen_not_null($cPath)) {
$category_status_query =
"SELECT categories_status
FROM " . TABLE_CATEGORIES . "
WHERE categories_id = :currentCategoryId
LIMIT 1";
$category_status_query = $db->bindVars($category_status_query, ':currentCategoryId', $current_category_id, 'integer');
$category_status = $db->Execute($category_status_query);
if ($category_status->EOF) {
$current_category_not_found = true;
} elseif ($category_status->fields['categories_status'] == '0') {
$current_category_is_disabled = true;
}
sets $current_category_not found = true;
this causes
PHP Code:
if (!$category_redirect_handled) {
if ($current_category_not_found) {
unset($_GET['cPath']);
$breadcrumb->reset();
$robotsNoIndex = true;
header('HTTP/1.1 404 Not Found');
//-bof-Comment the following four (4) lines out to display disabled categories
} elseif ($current_category_is_disabled) {
$category_depth = 'products';
$robotsNoIndex = true;
header('HTTP/1.1 410 Gone');
//-eof-Comment the above four (4) lines out to display disabled categories
} elseif ($current_category_has_products) {
$category_depth = 'products';
} else {
$category_depth = ($current_category_has_subcats) ? 'nested' : 'products';
}
}
For the index page.
The reason for this is that the $cPath variable is set in includes/init_includes/init_category_path.php during the autoload.
PHP Code:
if (!defined('IS_ADMIN_FLAG')) {
die('Illegal Access');
}
$show_welcome = false;
if (isset($_GET['cPath'])) {
$cPath = $_GET['cPath'];
} elseif (isset($_GET['products_id']) && !zen_check_url_get_terms()) {
$cPath = zen_get_product_path($_GET['products_id']);
} else {
if ($current_page == 'index' && SHOW_CATEGORIES_ALWAYS == '1' && !zen_check_url_get_terms()) {
$show_welcome = true;
$cPath = (defined('CATEGORIES_START_MAIN') ? CATEGORIES_START_MAIN : '');
} else {
$show_welcome = false;
$cPath = '';
}
}
in my case it is $cPath = (defined('CATEGORIES_START_MAIN') ? CATEGORIES_START_MAIN : '');
this sets $cPath to 0 for me as CATEGORIES_START_MAIN=0 for top.
This causes $category_depth to be set to "top" instead of "nested" as it was with 1.5.6c
Am I doing something wrong? or is this a bug?
I hope I have given enough info for you to resolve. I could hardcode a temporary measure (on my site). Unfortunately i do not understand enough of consequence of change to suggest a fix.
Regards
Mark
Re: Main page not displaying categories and being marked as 404 not found.
Re: Main page not displaying categories and being marked as 404 not found.
sounds like it. I have got around it by checking if the $cpath=0 and if it is not performing the first check.
PHP Code:
$category_depth = 'top';
$current_category_not_found = false;
$current_category_is_disabled = false;
$current_category_has_products = false;
$current_category_has_subcats = false;
if (isset($cPath) && zen_not_null($cPath)) {
if($cpath <> 0) {
$category_status_query =
"SELECT categories_status
FROM " . TABLE_CATEGORIES . "
WHERE categories_id = :currentCategoryId
LIMIT 1";
$category_status_query = $db->bindVars($category_status_query, ':currentCategoryId', $current_category_id, 'integer');
$category_status = $db->Execute($category_status_query);
if ($category_status->EOF) {
$current_category_not_found = true;
} elseif ($category_status->fields['categories_status'] == '0') {
$current_category_is_disabled = true;
}
}
Is there another fix?
Re: Main page not displaying categories and being marked as 404 not found.
just seen your fix $cpath > 0.
Will mod my fix to be the same. Thanks sorry for the duplicate.
Re: Main page not displaying categories and being marked as 404 not found.
The problem affected v157, v157a, v157b.
v157c was just released, and contains that fix.