Hope some one can help, since updating from VM 3.6.10 to 3.8 whatever (have tried 3.8.2 and 3.8.4) we seem to have an issue whereby some parent category pages load but they are missing all the child categories but you still get the category description, on a refresh the page then loads correctly. The problem occours intermittently so may not then happen for a day or so. Happens on multiple categories but only categories with child categories and also with the standard Protostar template. The issue is resolved by rolling back to VM 3.6.10.
The issue seems to be triggered by the clearing of the virtuemart cache "_virtuemart" but system cache is set to off and the "System - Page Cache" plugin is disabled.
Appreciate any assistance.
Joomla 3.9.19
VirtueMart 3.8.4 10335
try turning off the new setting in vm config -> templates : Use ajax for category content
Thank you for your reply however this was not enabled and has made no difference.
I had this also on one of my clients sites but sadly I can't remember what I did to fix it.. :(
I thought it was the ajax
on the fixed site I also commented the following code - perhaps that what fixed it if u have the same code - the client hasn't reported any further problems
// Show child categories
#if ($this->showcategory and empty($this->keyword) && $manu_id == 0) {
#if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children, 'categories_per_row'=>$this->categories_per_row));
#}
#}
Hi GJC
Thanks for the reply, it kinda of works however causes problems when using the VM search as it then shows all the categories at the top of the page above the search results.
so if one of these conditions is the cause try just disabling each in turn till you find which is flaky
The client that had this problem doesn't use search so I never noticed the display is "always on"
Ill have a play with the category template page and see if i can isolate which part of code is causing the issue. But does it when using the Protostar template so to my understanding this should be using the default VM template files not the customised versions in our template folder.
Quote from: ste-jackson on July 02, 2020, 12:23:57 PM
But does it when using the Protostar template
Which would indicate a configuration issue or an interfering 3rd party plugin/module.
Hi Kelvyn
Thank you for your reply, I will have a look to see if i can work out which plugin is conflicting. But as there is no error messages or debug information it may take a while. I wonder if GJC can you advise if the site you had the same issue with had anything but the standard set of Joomla and VM extensions?
Thanks
no -- is a very standard site with nothing unusual which is why it had me confused as to the problem.
And again no errors displayed and the problem only shows up once and while if u constantly refresh the cat page.
But it did start with VM3.8.x and if u refreshed the page enough times you would see the subcats disappear... commenting as above appears to have solved it.
No other clients have reported problems with VM3.8.4 but I would say that imho displaying subcats is quite rare on most sites so maybe it hasn't been noticed as a bug as it only happens perhaps once or twice in 30 refreshes?
And as u found happened on the standard templates as well
Hi GJC
Thank you for the additional information. I will try and have a look at what plugins we have and see if any likely to cause conflict. For now we are just reverting back to 3.6.10.
Quote from: GJC Web Design on July 01, 2020, 09:43:01 AM
I had this also on one of my clients sites but sadly I can't remember what I did to fix it.. :(
I thought it was the ajax
on the fixed site I also commented the following code - perhaps that what fixed it if u have the same code - the client hasn't reported any further problems
// Show child categories
#if ($this->showcategory and empty($this->keyword) && $manu_id == 0) {
#if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children, 'categories_per_row'=>$this->categories_per_row));
#}
#}
Quote from: ste-jackson on July 01, 2020, 14:44:27 PM
Thanks for the reply, it kinda of works however causes problems when using the VM search as it then shows all the categories at the top of the page above the search results.
Have a client that had this exact same problem with parent categories not showing child categories until the page is refreshed. I tried GJC Web Design's code and although sort of worked had the same issue with child categories showing above search results.
Took a gamble and tweaked this same code, I found just uncommenting the first IF statement (and a closing }) fixes it:
// Show child categories
if ($this->showcategory and empty($this->keyword)) {
# if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children, 'categories_per_row'=>$this->categories_per_row));
# }
}
Joomla 3.1.19 | VirtueMart 3.8.4 | PHP 7.2.30
This is the latest in core 3.8.4 10335 for the category default view:
// Show child categories
if ($this->showcategory and empty($this->keyword)) {
if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children, 'categories_per_row'=>$this->categories_per_row));
}
}
so this must be the inconsistent clause
if (!empty($this->category->haschildren))
this problem has only started from VM3.8.4
I think maybe this is the are for concern
&& $manu_id == 0
if ($this->showcategory and empty($this->keyword) && $manu_id == 0) {
vs the new
if ($this->showcategory and empty($this->keyword)) {
ah -- didn't read back far enough
Quote from: AH on July 08, 2020, 11:05:32 AM
I think maybe this is the are for concern
&& $manu_id == 0
if ($this->showcategory and empty($this->keyword) && $manu_id == 0) {
vs the new
if ($this->showcategory and empty($this->keyword)) {
Hi AH and GJC
Thank you for your replies, i think it is the "if (!empty($this->category->haschildren))" as I do not have "&& $manu_id == 0" in my template code and also the does with Joomla default templates which uses the default VM template. Below is the original code i have in the category template. I have updated with GJC latest version and that seems to work so far including the VM search results.
if (VmConfig::get ('showCategory', 1) and empty($this->keyword)) {
if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children));
}
}
Hi, I have the same problem. No code modifications, you said there, did not help. The problem is the same. Do you have any advice please?
If you have the "same" problem and the fixes given does not help, you need to give much more info.
VM version, Joomla new install, upgrade. Anything that could be of help.
Jörgen
I need to solve an annoying problem. The main menu is Megamenu and the E-shop menu item is the classic Joomla menu - a manually created Virtuemart category.
Left menu - Virtuemart category module.
After clicking on any item (category) that also contains subcategories, a page with all subcategories should appear. This will not happen after the first click. This will not happen until the page is refreshed or the menu item is clicked a second time.
This happens every time, especially when the cache is cleared.
I have settings according to your documentation and demo website.
Joomla 3.9.20
VirtueMart 3.8.4 10335
VP Smart 2.5 (Beez3 and Protostar)
I did everything according to your advice and switched the template to Protostar. The error appears again and again !!!
I switched to Beez3 and the error comes up again and again !!!
***I found that if I turn off SEO in the Virtuemart settings, everything works ok.
website: www.enzosoftware.cz/avhifi
Thank you very much for the advice.
did u also try commenting out these parts in the template?
// Show child categories
#if ($this->showcategory and empty($this->keyword) && $manu_id == 0) {
#if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children, 'categories_per_row'=>$this->categories_per_row));
#}
#}
enzo1, are you using a 3rd party SEF plugin?
Please find below the final version of the code that seems to be working. This is in the category template file.
// Show child categories
if ($this->showcategory and empty($this->keyword)) {
# if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children, 'categories_per_row'=>$this->categories_per_row));
# }
}
Hope this helps.
Thank you very much for your advice. I had to rewrite the template and it already works. Thanks a lot.
Hello,
I had exact the same problem as enzo1.
My versions:
J 3.9.26
VM 3.8.8
Own custom template with overrides
Quote from: enzo1 on August 20, 2020, 17:12:32 PM
After clicking on any item (category) that also contains subcategories, a page with all subcategories should appear. This will not happen after the first click. This will not happen until the page is refreshed or the menu item is clicked a second time.
This happens every time, especially when the cache is cleared.
I have settings according to your documentation and demo website.
Joomla 3.9.20
VirtueMart 3.8.4 10335
VP Smart 2.5 (Beez3 and Protostar)
I did everything according to your advice and switched the template to Protostar. The error appears again and again !!!
I switched to Beez3 and the error comes up again and again !!!
***I found that if I turn off SEO in the Virtuemart settings, everything works ok.
This code override has solved the problem. Thanks!
Quote from: ste-jackson on August 21, 2020, 10:25:26 AM
Please find below the final version of the code that seems to be working. This is in the category template file.
// Show child categories
if ($this->showcategory and empty($this->keyword)) {
# if (!empty($this->category->haschildren)) {
echo ShopFunctionsF::renderVmSubLayout('categories',array('categories'=>$this->category->children, 'categories_per_row'=>$this->categories_per_row));
# }
}