There may have been a typo. Whenever a whitescreen occurs, there likely is an error log generated: http://www.zen-cart.com/content.php?124-blank-page
There may have been a typo. Whenever a whitescreen occurs, there likely is an error log generated: http://www.zen-cart.com/content.php?124-blank-page
ZC Installation/Maintenance Support <- Site
Contribution for contributions welcome...
Ok thanks
I am getting:
WARNING: An Error occurred, please refresh the page and try again.
WARNING: An Error occurred, please refresh the page and try again.
So, not a blank screen, but same basic troubleshooting process: https://www.zen-cart.com/content.php...-and-try-again
ZC Installation/Maintenance Support <- Site
Contribution for contributions welcome...
Oh, wait. I forgot that ZC 1.5.1 doesn't give as much resolution detail as more recent if not modern versions of ZC. If the issue is related to a SQL query, then will need to install mydebug backtrace in order to get some useful information about the problem.
ZC Installation/Maintenance Support <- Site
Contribution for contributions welcome...
I'm testing this on a newly installed V1.5.5 - that's where I am getting the error message. This is what the error log reads:
[04-Feb-2019 20:04:58 Europe/London] Request URI: /db_155/index.php?main_page=index&cPath=31, IP address: 81.154.21.188
#1 mysqli_query() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/classes/db/mysql/query_factory.php:45]
#2 queryFactory->query() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/classes/db/mysql/query_factory.php:261]
#3 queryFactory->Execute() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/functions/functions_categories.php:159]
#4 zen_get_subcategories() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/functions/functions_categories.php:164]
#5 zen_get_subcategories() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/modules/categories_tabs.php:33]
#6 include(/home/sites/digibooks.org.uk/public_html/db_155/includes/modules/categories_tabs.php) called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/template_default/templates/tpl_modules_categories_tabs.php:14]
#7 require(/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/template_default/templates/tpl_modules_categories_tabs.php) called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/responsive_classic/common/tpl_header.php:133]
#8 require(/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/responsive_classic/common/tpl_header.php) called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/responsive_classic/common/tpl_main_page.php:119]
#9 require(/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/responsive_classic/common/tpl_main_page.php) called at [/home/sites/digibooks.org.uk/public_html/db_155/index.php:97]
[04-Feb-2019 20:04:58 Europe/London] PHP Warning: mysqli_query(): (HY000/2008): Out of memory in /home/sites/digibooks.org.uk/public_html/db_155/includes/classes/db/mysql/query_factory.php on line 45
[04-Feb-2019 20:04:58 Europe/London] Request URI: /db_155/index.php?main_page=index&cPath=31, IP address: 81.154.21.188
#1 trigger_error() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/classes/db/mysql/query_factory.php:171]
#2 queryFactory->show_error() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/classes/db/mysql/query_factory.php:143]
#3 queryFactory->set_error() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/classes/db/mysql/query_factory.php:270]
#4 queryFactory->Execute() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/functions/functions_categories.php:159]
#5 zen_get_subcategories() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/functions/functions_categories.php:164]
#6 zen_get_subcategories() called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/modules/categories_tabs.php:33]
#7 include(/home/sites/digibooks.org.uk/public_html/db_155/includes/modules/categories_tabs.php) called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/template_default/templates/tpl_modules_categories_tabs.php:14]
#8 require(/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/template_default/templates/tpl_modules_categories_tabs.php) called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/responsive_classic/common/tpl_header.php:133]
#9 require(/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/responsive_classic/common/tpl_header.php) called at [/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/responsive_classic/common/tpl_main_page.php:119]
#10 require(/home/sites/digibooks.org.uk/public_html/db_155/includes/templates/responsive_classic/common/tpl_main_page.php) called at [/home/sites/digibooks.org.uk/public_html/db_155/index.php:97]
[04-Feb-2019 20:04:58 Europe/London] PHP Fatal error: 2008:Out of memory :: select categories_id
from categories
where parent_id = '6122' ==> (as called by) /home/sites/digibooks.org.uk/public_html/db_155/includes/functions/functions_categories.php on line 159 <== in /home/sites/digibooks.org.uk/public_html/db_155/includes/classes/db/mysql/query_factory.php on line 171
[04-Feb-2019 20:04:58 Europe/London] PHP Fatal error: Out of memory (allocated 15466496) (tried to allocate 2787 bytes) in /home/sites/digibooks.org.uk/public_html/db_155/includes/classes/db/mysql/query_factory.php on line 171
Last edited by DigiBooks; 5 Feb 2019 at 10:17 AM.
Just looking at the out of memory error message and wondering if the patch you posted is trying to browse the entire catalog or just a selected Top-level category?
The Adult category does not have that many books linked to it but guessing this could be a problem later with things like Thrillers. At present we hold nearly 24,500 books on file so maybe the server will never be able to handle these quantities.
If that is the case then would it be possible to browse in a similar way as the New Products sidebox but to restrict that to the selected Top-Level Category?
Well, as I said, that was just a example to link the first category to the last.
Ex: 36_34_56 ( 36 will link to 56)
But I only tested with one product with a similar categories structure.
If you remove that piece of code and everything is ok again, well, something is wrong inside that while loop.
However, more or less, that's the process needed. This has some comments.
Try to check that $subcategories_array with a print_r($subcategories_array) , or using a die(), to debug.
Or maybe I did somthing wrong, but I can't test it write now.... and I don't have 24000 products to list
PHP Code:
while (!$categories_tab->EOF) {
$path = $categories_tab->fields['categories_id'];
// currently selected category
if ((int) $cPath == $categories_tab->fields['categories_id']) {
$new_style = 'category-top';
$categories_tab_current = '<span class="category-subs-selected">' . $categories_tab->fields['categories_name'] . '</span>';
} else {
$new_style = 'category-top';
$categories_tab_current = $categories_tab->fields['categories_name'];
$subcategories_array = array(); // this is gathering all subcategories in a array
// using zen_get_subcategories
zen_get_subcategories($subcategories_array, $categories_tab->fields['categories_id']);
if (!empty($subcategories_array)) { // if there is a subcat
// create a new path ex: 36_35_54 , so it will link to the last subcat found
$path = $categories_tab->fields['categories_id'] . '_' . implode('_', $subcategories_array);
}
}
// create link to according to the path
$links_list[] = '<a class="' . $new_style . '" href="' . zen_href_link(FILENAME_DEFAULT, 'cPath=' . $path) . '">' . $categories_tab_current . '</a> ';
//$links_list[] = '<a class="' . $new_style . '" href="' . zen_href_link(FILENAME_DEFAULT, 'cPath=' . (int)$categories_tab->fields['categories_id']) . '">' . $categories_tab_current . '</a> ';
$categories_tab->MoveNext();
}
“Though the problems of the world are increasingly complex, the solutions remain embarrassingly simple.” ― Bill Mollison
Thanks very much for taking another look at this. I am a little confused though. The Adult category currently starts off with 56 sub-categories so I put a counter in to ensure I wasn't stuck in an infinite loop and the count stopped at 53 before crashing with the exception errors.
I have explored the various products tables trying to identify the top-level category but none of the tables show a link back to Adult Top-Level category #31. I guess that it is a case of top-level passing to sub-category downwards etc.
Thinking out of the box I am considering making an amendment to the Add / Edit products routine. At the top of the page it will show for example:
Adult ==> A J Carella ==> The Game
so Top-Level has already been identified somewhere along the line so if I can grab Top-Level #31 (for example) and automatically populate the Model No. field with that then I should be able to make a definite correlation between Top-Level and Products contained at bottom level.
I will explore the coding and see if I can write a patch script to populate model for all products and see where that goes.
That piece of code was to add a link in the index page. So one could return to the adult category.
If you want to always link the first to the last, then instead try the changes below.
Testing on a clean zc156 and replicating the adult category, for me works fine.
If I click on "software" category that has more subcats, I'll go from 2 to 20. ( main_page=index&cPath=2_18_19_20)
But there is no link back. Only breadcrumbs is available to list those subcats in the middle.
But with thousands of products maybe is not the best way....PHP Code:
while (!$categories_tab->EOF) {
$path = $categories_tab->fields['categories_id'];
// currently selected category
$subcategories_array = array();
zen_get_subcategories($subcategories_array, $categories_tab->fields['categories_id']);
if (!empty($subcategories_array)) {
$path = $categories_tab->fields['categories_id'] . '_' . implode('_', $subcategories_array);
}
if ((int) $cPath == $categories_tab->fields['categories_id']) {
$new_style = 'category-top';
$categories_tab_current = '<span class="category-subs-selected">' . $categories_tab->fields['categories_name'] . '</span>';
} else {
$new_style = 'category-top';
$categories_tab_current = $categories_tab->fields['categories_name'];
// etc, etc,
}
“Though the problems of the world are increasingly complex, the solutions remain embarrassingly simple.” ― Bill Mollison
Note, product won't be directly linked to a some top category from a sub-category. Going back to table relationships: product are assigned to a master category (this is primarily to support sale discounts). To support a one to many relationship they are related to a category: products_to_categories table. If the product exists in two categories then it is considered linked to the non-master category.
Then categories have a parent. If the parent is 0 then the category is a main category at the top of the store. Otherwise, the category is a sub-category.
So looking at a product, it can have one or more "parent" categories depending on if it is linked; however, the convention is to base the product in the master category as far as html identification of the canonical link so that search engines don't consider the displayed page a duplicate page. When the product appears in some other category then there is a separate "path" to get to it and it could have a different tree available.
So in your search/review, would want to look at products_to_categories, products and categories tables.
ZC Installation/Maintenance Support <- Site
Contribution for contributions welcome...
Bookmarks