Hello! :)
I've just created my VirtueMart online shop (VM 4.2.18 11050) on my Joomla 5 site.
My site is in English and French.
I'd like to sell my ebook in several languages (English and French) and several different formats (EPUB, PDF, MOBI). So 6 versions in total, so logically 6 products in VirtueMart.
So I created a parent product (English and EPUB) and 5 child products attached in multi-variant mode (the parent and each child have a custom "VM simple download" field containing a different file). This way, customers can click on the buttons (see below) to choose their version : https://casa-bandera.com/shop-italian-cookbooks/four-seasons-italian-flavours-1/ebook-qs1-english-epub
At present, I've created 2 pages (in English and French) for each of the 6 products.
However, in my opinion this is unnecessarily voluminous. Especially if I offer my ebook in many different languages in the future.
So I'd like to:
1. Simplify my store and show only the versions of the ebook in the site language selected by the user. Example: I select "French" as the language on the site, and only the 3 French ebooks are displayed in my store, the 3 English versions don't appear.
2. Avoid the problem of duplicate content (for SEO), especially in very similar product descriptions (because only the language and format change).
3. Have product pages in a single language (the language of the ebook). Example: Ebook in English -> Page in English, no page in French.
4. Be able to switch languages and formats easily. For example: I'm on the English page of the English/PDF ebook -> I click on the "French" and "MOBI" multi-variant buttons -> I'm redirected to the French page of the French/MOBI ebook.
Thank you in advance for your help. :)
It seems to me that making the language version of an e-book dependent on the language of the website is not a good solution - it is even strange to some extent. For example, I may want to read a website in French, but I will want to buy an e-book in English (e.g. for my friend who wants one). This solution may reduce sales somewhat.
The Falang component (by faboba.com) will be very helpful and much more convenient than the traditional Joomla solution
Thanks for your reply.
You're right in a way. The problem is that I plan to make my site and ebooks in 6 or 7 different languages. So potentially 20/30 very similar products.
For a user, this page will become very busy: https://casa-bandera.com/shop-italian-cookbooks/four-seasons-italian-flavours-1
Why not list the same e-book just once and then have the language as a selectable option? I would use Breakdesigns stockable custom fields for that (https://breakdesigns.net/extensions/joomla/stockable-custom-fields) (Free).
This way every e-book with the same content but different language, will be it's own product but it will only be listed once and that will keep things clean.
On the other hand, since it's a digital product, you don't need stock management, so it could also just be a normal custom field, even easier.
Exactly as Roderyk wrote. You have a free plugin called "Stockable Custom Fields" for this. Each independent product in Virtuemart will correspond to a different language version of the e-book - just like clothes sizes L, XL, XXL - the customer will choose FR, EN, DE
https://breakdesigns.net/extensions/joomla/stockable-custom-fields
Thanks to this plug-in, after paying, the customer will automatically be able to download the appropriately selected version of the product - you will not have to send anything manually, which will be more convenient for you than what you want to do now
By the way, you don't have to display 6 products on your website (it looks like spam) - just one item with 6 options to choose from. you can hide the remaining 5 products - do not assign them to any category and set them as child products, thanks to which they will automatically inherit most of the parameters from the parent product
Thank you very much for your answers.
No problem for trying the "Stockable Custom Fields", but what is the difference with multi-variants custom fields?
I already can select languages and format on the product page, please see her: https://casa-bandera.com/shop-italian-cookbooks/ebook-qs1-english-epub
the difference is small, but the second option is more convenient to use and can be translated into selected languages. It also has different selection styles (radio, button, select, color, image with flags)
PS.
"Add to Compare" - I would remove it from your site - there is nothing to compare there ;-)
I will try this plugin tomorrow, thanks!
I didn't find where to disable "Add to compare" :)
Quote from: VB74 on September 11, 2024, 17:29:43 PMI didn't find where to disable "Add to compare" :)
QIP Shot - Screen 312.png
Perfect, thanks! It's disabled now.
Quote from: hazael on September 11, 2024, 16:30:27 PMExactly as Roderyk wrote. You have a free plugin called "Stockable Custom Fields" for this. Each independent product in Virtuemart will correspond to a different language version of the e-book - just like clothes sizes L, XL, XXL - the customer will choose FR, EN, DE
https://breakdesigns.net/extensions/joomla/stockable-custom-fields
Thanks to this plug-in, after paying, the customer will automatically be able to download the appropriately selected version of the product - you will not have to send anything manually, which will be more convenient for you than what you want to do now
By the way, you don't have to display 6 products on your website (it looks like spam) - just one item with 6 options to choose from. you can hide the remaining 5 products - do not assign them to any category and set them as child products, thanks to which they will automatically inherit most of the parameters from the parent product
You mean that the only product displayed in the shop is one of the 6 children's products? (as I did here: https://casa-bandera.com/shop-italian-cookbooks). So in my case English/EPUB. I would have preferred a parent product with a neutral name.
I removed the categories for child products, but they no longer appear in the results in my search bar.
And why do you need all the derivative products in the search results if it's just a different language version for the parent product? In the parent product, just write information that there are different versions to choose from and that's it. There is no point in repeating this
You can do it like on my website ( https://szeregowe.pl/projekty/emilka-3 ) - the parent product is a house design (which cannot be added to the cart) - it is only preliminary information, and the derivative products are its various versions (displayed at the bottom under the description), which you can finally select and buy. You won't find these versions anywhere on the product list, because it would create chaos -
the customer would get lost because it would seem to him that everything is the same.
That's very interesting, thanks!
I don't need to display all the products if I can display only the neutral parent product. But if I display the English/EPUB version and not the others (as I did yesterday) it would be strange. Your solution is very good. If I'm right, you use "Stockable custom fields"?
I created one product parent (without price, so it can't be added to the cart) and then assigned the 6 children to the parent (with multi-variants custom field), as you can see here: https://casa-bandera.com/shop-italian-cookbooks/ebook-qs1
I think we cannot do it better and easier.
It's ok, but I would just remove the buttons with the selection of the number of products - it is absolutely unnecessary in your store.
These [--select--] buttons also look strange - they suggest that this is a selection list and I have to press it to select something, but there is nothing there. You should at least rename these buttons to something else. Maybe [not selected]?
Enter this fragment of code in the active CSS file on this website, it will hide these unnecessary fields and it will look like in the attached images
.quantity-box, .custom-field-C-container:first-child .btn-vm-customfield:first-child {display: none}
After this, change "Langue (eBook)" to "Select langue (eBook)" - it will be more understandable for the user
I agree with you ;)
I put "Select language first", I think it's better. Please find here the result: https://casa-bandera.com/shop-italian-cookbooks/ebook-qs1
perfect 8)
Many thanks guys! 8)
Hi hazael,
I have 2 more questions:
1/ How do you make your parent product non-addable to the cart? On my site the parent product can be added to the cart and therefore purchased. This doesn't make sense because it doesn't correspond to anything.
2/ Concerning the reviews and ratings of my parent product and my 6 children's products. Do you know how I could merge them into a single entity?
Thanks in advance for your help.
You can always block the [add to cart] button in the initial phase to make it inactive.
If you don't know how to code - just paste this code before the end of the </body> tag.
<script>
document.addEventListener("DOMContentLoaded", () => {
const addToCartButton = document.querySelector('.addtocart-button');
const allRadioButtons = document.querySelectorAll('.cvselection');
addToCartButton.disabled = true;
allRadioButtons.forEach(radioButton => {
radioButton.addEventListener('change', () => {
if (radioButton.value !== 'VM_CUSTOM_NOT_SELECTED') {
addToCartButton.disabled = false;
}
});
});
});
</script>
There are also many other solutions - you can always create a different template for the parent product with a hidden or inactive button.
You can also use stock levels for all child products - the parent product in this case should have the value 0 - then you will also not be able to add it to the cart. Set the child products to some absurdly high number, for example 999999, and you can sleep soundly. ;-)
Thanks for your reply!
I copied the code you indicated before the end of the </body> tag. It's not bad but it doesn't work in the case where you put a child product in the wishlist, then from the wishlist you click on that child product, you'll then see that the "Add to cart" button will be inactive while the format and language are selected.
As for the method with the parent's stock at 0, I've tried it, but the "Add to cart" button is still there. I suppose this is logical, since in the VirtueMart configuration I've selected "Products Out of Stock are orderable, no special action". The problem is that none of the other options are suitable.
The only solution I can see would be to select "Displays 'Notify Me' instead of 'Add To Cart' button" and use CSS to not display the "Notify Me" button.
Why do you need a "wish list"? after all, it is no different from "add to cart" at all. With such a small number of products, a wish list is completely pointless. If you ran a social networking site and had a large number of users and thousands of products to follow, something like this would make sense. On your website, these are just unnecessary fireworks....
As I wrote above, for the default.php file in your template, you can make a copy of the renamed file and remove unnecessary functions such as "wish list" in this file. You can also remove the "add to cart" button from displaying. this new file will also be the name of the template in the product settings, that you can assign to parent products.
This file should be located here:
templates/you-template-name/html/com_virtuemart/productdetails/default.php
Thanks for your advice, I disabled the Wishlist system.
In fact, the problem is not related to the wishlist. The "Add to cart" button is inactive if you go directly to the child product page without going through the parent.
So if a user goes through Google to get to one of my child product pages, the "Add to cart" button will be disabled. It could be very strange for the user. You can try: https://casa-bandera.com/shop-italian-cookbooks/ebook-qs1-english-epub
Do you have a solution to this problem please?
Thanks for your solution, but I don't like manipulating files and I don't know much about code.
Ok, I made a slight modification - change the code and check if it works
PS. delete file: components/com_virtuemart/assets/js/jquery.noconflict.js - this file is nonsense and causes errors. you can also remove it in the jch-optimize component
<script>
document.addEventListener("DOMContentLoaded", () => {
const addToCartButton = document.querySelector('.addtocart-button');
const allRadioButtons = document.querySelectorAll('.cvselection');
const selectedRadioButton = document.querySelector('.cvselection:checked');
if (selectedRadioButton && selectedRadioButton.value === 'VM_CUSTOM_NOT_SELECTED') {
addToCartButton.disabled = true;
} else {
addToCartButton.disabled = false;
}
allRadioButtons.forEach(radioButton => {
radioButton.addEventListener('change', () => {
if (radioButton.value === 'VM_CUSTOM_NOT_SELECTED') {
addToCartButton.disabled = true;
} else {
addToCartButton.disabled = false;
}
});
});
});
</script>
It works, many thanks hazael! 8)
Concerning my second question, would you have a solution too? :)
2/ Concerning the reviews and ratings of my parent product and my 6 children's products. Do you know how I could merge them into a single entity?
I believe that a rating system created and managed by the platform owner adds little to no value and is among the least trustworthy. It's easy to manipulate the reviews or even write them yourself. If someone leaves a negative review, it can be effortlessly removed, leaving only positive feedback. In my view, this makes the rating system in VirtueMart one of the least valuable features in the component, and not worth using.
As we all know, even reviews on Google can be fraudulent—you can simply buy positive feedback. However, there are other alternatives that not only provide credibility but also drive traffic to your website, such as Trustpilot.
Quote from: hazael on September 16, 2024, 12:34:19 PMI believe that a rating system created and managed by the platform owner adds little to no value and is among the least trustworthy. It's easy to manipulate the reviews or even write them yourself. If someone leaves a negative review, it can be effortlessly removed, leaving only positive feedback. In my view, this makes the rating system in VirtueMart one of the least valuable features in the component, and not worth using.
As we all know, even reviews on Google can be fraudulent—you can simply buy positive feedback. However, there are other alternatives that not only provide credibility but also drive traffic to your website, such as Trustpilot.
Thank you so much, do we link such platform on own platform, social media, makes a lot of sense this