- Posts: 303
- Thank you received: 18
Bootstrap Carousel breaking on Variant Images only
- mojooutdoors-holden
-
Topic Author
- Offline
-- HikaShop version -- : 2.6.3
-- Joomla version -- : 3.6
Very odd problem with the display of product images if the product contains variants. I have implemented a simple bootstrap carousel that only display on mobile. Works fine for every product that doesn't contain a variant. For example: www.mojooutdoors.com/index.php/products/new-products
However, there seems to be some issue with products that contain variants. (1) the images won't display properly in the carousel and (2) the images are duplicated and displayed at the bottom of the page. For example: www.mojooutdoors.com/index.php/spinning-...by-mojo-drake-or-hen
For the carousel, i just duplicated the code in product/show_block_img (which is probably the issue):
However, it's very strange it works for most all product pages, except the ones with variants. Also, there are no errors that show in the chrome inspector console?
Ideally, i would like to pull the first image and put it in a separate div than the remaining images. With the carousel, i must declare one of them the "item active" and the subsequent images are just "tem" in the carousel.
Maybe there's a more elegant way to call the images (even for variants)?? Any help would be greatly appreciated!
Please Log in or Create an account to join the conversation.
You should not specify specific images for your variants.
Otherwise, HikaShop will pre-generate the content for each variant and it perform some JS actions when you change the characteristics in order to push the select content in the product page (product name, prices, images, etc).
Because that content is pushed, all the Javascript that you place in these "blocks" will not be processed (unless you add some extra code to perform the re-initialization of your content after the update of the blocks).
Regards,
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.
Please Log in or Create an account to join the conversation.
- mojooutdoors-holden
-
Topic Author
- Offline
- Posts: 303
- Thank you received: 18
I removed the images from the variants. The carousel still exhibits this strange behavior (doesn't show other images and carousel is being duplicated at the bottom of the page). Is the problem specifically because i have product variants?
How should i reinitialize the JS within this view file?
Please Log in or Create an account to join the conversation.
- mojooutdoors-holden
-
Topic Author
- Offline
- Posts: 303
- Thank you received: 18
Also, I need to count the total number of images as well.
Please Log in or Create an account to join the conversation.
If you have the carousel still display at the bottom of the page ; it means that you have one variant with images.
Just take a look at the view "product / show" and you will see the code which process the variant data for the different parts of the products (cf previous message) while the main data of the product page is in the layout (show_default or show_tabular...)
Regards,
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.
Please Log in or Create an account to join the conversation.
- mojooutdoors-holden
-
Topic Author
- Offline
- Posts: 303
- Thank you received: 18
Please Log in or Create an account to join the conversation.
If you don't have any image in the variants, then you should just remove the piece handling the display of the images of the variants in the product / show.php view file:
Please Log in or Create an account to join the conversation.
- mojooutdoors-holden
-
Topic Author
- Offline
- Posts: 303
- Thank you received: 18
Please Log in or Create an account to join the conversation.
If you look at the HTML of the page in a small window with your browser's developer tool, you can see that the width of the image is set at 0px: monosnap.com/file/xoHBZwscU7Qe0C3EOfRSlGosa7FAk4
That's your problem.
If you deactivate that with for example:
.hikashop_main_image{ width: auto !important; }
it will display.
Please Log in or Create an account to join the conversation.
- mojooutdoors-holden
-
Topic Author
- Offline
- Posts: 303
- Thank you received: 18
However, still there is only one image showing in the carousel instead of the 2 that are set for that product. Again, works properly on all other page except those with variants.
Please Log in or Create an account to join the conversation.
Well, I don't know.
The code you provided in your first message is only for the main image of the product, not for the other images.
If you needed it to work for several images, you would have to have a foreach on $this->element->images or something like that.
So either you didn't provide all the code modifications or your code works the same for products with variants and products without: it only display the main image in the carousel and not the others.
Please Log in or Create an account to join the conversation.
- mojooutdoors-holden
-
Topic Author
- Offline
- Posts: 303
- Thank you received: 18
The mobile carousel works for ALL products without variants and displays multiple pictures. For example, this one has no variants and 5 images: www.mojooutdoors.com/index.php/spinning-.../mojo-flockaflickers
On mobile, the carousel displays properly.
However, here is a product with variants and 2 images added to the main: www.mojooutdoors.com/index.php/spinning-...by-mojo-drake-or-hen
As you can see, the mobile carousel only displays 1 image instead of 2. This seems to be an issue with either (1) variants or (2) how i'm looping over images for the carousel.
However, it's strange that it will work for all products without variants though?
If there's an easier way to pull the images into the carousel, I'm open to suggestions.
Please Log in or Create an account to join the conversation.
The error comes from that code:
if (!empty ($this->element->images) && count($this->element->images) > 2) {
It should be:
if (!empty ($this->element->images) && count($this->element->images) >= 2) {
Otherwise, when you have exactly 2 images in the product it won't add the second image, only the main one.
That's the same issue for products with and without variants.
Please Log in or Create an account to join the conversation.
- mojooutdoors-holden
-
Topic Author
- Offline
- Posts: 303
- Thank you received: 18
Thanks for all of your help! Might be something to add to a patch of Hikashop for mobile display since Hika already has options for bootstrap? Lots of little tools that are prebuilt in bootstrap that might make the product display much more attractive to users who are looking for a more flexible frontend display.
Please Log in or Create an account to join the conversation.
We actually want to get away from bootstrap because different templates use different versions of bootstrap and thus we can't make a generic solution. We had a lot of issues with that with HikaShop 2.x as it relied on bootstrap 2.x (like joomla 3) and many templates didn't include it.
So we'll definitely won't go with a bootstrap approach.
We actually embed our own carousel system with HikaShop 3.2.0 for the carousel system we're using on listing modules. So it could indeed be interesting to add it as an alternative on the product page.
Please Log in or Create an account to join the conversation.