News:

You may pay someone to create your store, or you visit our seminar and become a professional yourself with the silver certification

Main Menu

Recent posts

#21
Virtuemart Development and bug reports / Problem with virtuemart 4
Last post by nikiC - September 29, 2025, 19:28:14 PM
For a few days now, the mobile view drop-down menu has sometimes not shown all the categories.

I reported the issue to nicepage because the template is theirs.

On your suggestion, I tried running vmDebug.

The result is attached.


1 vmdebug 2 Languages, default joomla language $jDefLang): it_it it-IT
Selected VM language (VmConfig::$vmlang): it_it it-IT SEF: it $lfbs =
2 vmdebug vmTime: time to load config param $lang=1 and iniLang=0 $exeTrig = 0 now = 1: 0.00933313369750977
3 vmdebug Start used Ram 4M
4 vmdebug FE main controller with controller category and task
5 vmdebug VmView loaded with override on
6 vmdebug isFEmanager return false because user is guest
7 vmdebug My Memory Limit in MB 123
8 vmdebug SSL enabled
9 vmdebug Get user, using given id 0
10 vmdebug Get user id 0
11 vmdebug vmTime: sortSearchQuery products: : 0.00252389907836914
12 vmdebug getCurrentUrlBy $get Var0:

Array
(
    [option] => com_virtuemart
    [view] => category
    [virtuemart_category_id] => 51
    [virtuemart_manufacturer_id] => 0
    [limitstart] => 0
    [limit] => 10
    [language] => it-IT
    [keyword] =>
    [Itemid] => 232
)

13 vmdebug vmTime: Manufacturers Dropdown by function: 0.00187110900878906
14 vmdebug getCurrentUrlBy $get Var0:

Array
(
    [option] => com_virtuemart
    [view] => category
    [virtuemart_category_id] => 51
    [virtuemart_manufacturer_id] => 0
    [limit] => 10
    [language] => it-IT
    [keyword] =>
    [Itemid] => 232
)

15 vmdebug vmTime: OrderByList by function: 0.00846219062805176
16 vmdebug isSuperVendor Not a vendor 0 0
17 vmdebug vmTime: getChildCategoryListObject summed up 1_51_c.ordering,category_name1ASC0__0it-IT1: 0.00114297866821289
18 vmdebug Fallback active
19 vmdebug vmTime: getChildCategoryListObject summed up 1_51_10__0it-IT1: 0.00211882591247559
20 vmdebug vmTime: getChildCategoryListObject summed up 0_-1_c.ordering,category_name1ASC0__0it-IT0: 0.00138115882873535
21 vmdebug vmTime: Loading all categories: 0.00145983695983887
22 vmdebug vmTime: sortCats: 0.00296282768249512
23 vmdebug Array
24 vmdebug getParentsList found cached Var0:

89

25 vmdebug getParentsList found cached Var0:

89

26 vmdebug getParentsList found cached Var0:

89

27 vmdebug getParentsList found cached Var0:

88

28 vmdebug vmPagination getPagesLinks getMenu Var0:

51

Var1:

Array
(
    [option] => com_virtuemart
    [view] => category
    [virtuemart_category_id] => 0
    [virtuemart_manufacturer_id] => 0
)

29 vmdebug _buildDataObject $this->_additionalUrlParams virtuemart_category_id Var0:

51

30 vmdebug getPagesLinks Var0:

D:\www\Data\localweb\projects\prova\accessori-custom/templates/motoimco1/html/pagination.php

31 vmdebug End used Ram 6M
32 vmdebug Peak memory peak 6M
33 vmdebug vmTime: "VirtuemartControllerCategory" Finished task in D:\www\Data\localweb\projects\prova\accessori-custom/components/com_virtuemart: 0.3627769947052
34 vmdebug Layout category module Var0:

_:all

35 vmdebug vmTime: getChildCategoryListObject summed up 1_-1_c.ordering,category_name1ASC0__0it-IT0: 0.00235509872436523
36 vmdebug vmTime: Loading all categories: 0.00540781021118164
37 vmdebug vmTime: sortCats: 0.00788784027099609
38 vmdebug vmTime: my categories module time: 0.00251007080078125
39 vmdebug getParentsList found cached Var0:

88

40 vmdebug getParentsList found cached Var0:

93

41 vmdebug getParentsList found cached Var0:

93

42 vmdebug getParentsList found cached Var0:

93

43 vmdebug getParentsList found cached Var0:

95

44 vmdebug getParentsList found cached Var0:

95

45 vmdebug getParentsList found cached Var0:

92

46 vmdebug getParentsList found cached Var0:

92

47 vmdebug Defining custom function convertfromcurrency
48 vmdebug Defining custom function converttocurrency
49 vmdebug vmTime: Time consumed for shipment/payment plugins: 0.0320658683776855
#22
Coding Central / VirtueMart shipping/payment or...
Last post by sandomatyas - September 26, 2025, 14:45:36 PM
Hi everyone,

It seems that for quite a long time people have been struggling with the fact that in VirtueMart you can't really control the order of shipping and payment methods.

Even if you set the list ordering value, the way it works in cart/view.html.php is like this:

$returnValues = vDispatcher::trigger('plgVmDisplayListFEShipment', array($this->cart, $selectedShipment, &$this->shipments_shipment_rates));
This means that first the methods are collected in the order of the vmshipment plugins, and only inside each plugin does the ordering from the database apply.

I was thinking this could be fixed quite easily, because after the trigger the array $this->shipments_shipment_rates['shipment'] already uses the virtuemart_shipmentmethod_id as keys. That makes it simple to reorder the whole list afterwards by the ordering column in the database.

Since I didn't want to hack the core, I tried a different approach: I wrote a tiny vmshipment plugin that I put last in the plugin order. This plugin doesn't need to register any shipment method at all. But because the trigger also runs on it, it receives the $shipments_shipment_rates array by reference and can reorder it before return.

Here's the minimal code:

defined('_JEXEC') or die('Restricted access');

class plgVmShipmentReorder extends vmPSPlugin
{
    function __construct(& $subject, $config)
    {
        parent::__construct($subject, $config);
    }

    public function plgVmDisplayListFEShipment($cart, $selected, &$shipments_shipment_rates)
    {
        if (empty($shipments_shipment_rates['shipment'])) {
            return;
        }

        $db  = JFactory::getDbo();
        $ids = array_keys($shipments_shipment_rates['shipment']);

        $query = $db->getQuery(true)
            ->select($db->quoteName(['virtuemart_shipmentmethod_id', 'ordering']))
            ->from($db->quoteName('#__virtuemart_shipmentmethods'))
            ->where('virtuemart_shipmentmethod_id IN (' . implode(',', $ids) . ')');
        $db->setQuery($query);
        $orders = $db->loadAssocList('virtuemart_shipmentmethod_id', 'ordering');

        if (!$orders) {
            return;
        }

        uksort($shipments_shipment_rates['shipment'], function($a, $b) use ($orders) {
            return $orders[$a] <=> $orders[$b];
        });
    }
}

Of course this is only a custom workaround – ideally this logic should be part of the core (for example in the corresponding model).

What do you think? Would it make sense to handle the ordering like this in VirtueMart itself?

The same approach could be applied for payment methods as well.
#23
Product creation / Re: Category Image
Last post by iWim - September 25, 2025, 11:32:13 AM
Hmyeah...
We need more information: Joomla version, VirtueMart version, etc.

Can you post the URL to your webshop so we can see the code.

Can you post the Joomla Forum Post Assistant?
https://forumpostassistant.github.io/docs/
#24
About VirtueMart - not for support posts / Re: Reports to moderator
Last post by iWim - September 25, 2025, 11:22:55 AM
Thank you. I have reported 4 more...
#25
Product creation / Category Image
Last post by lombiz - September 24, 2025, 23:34:38 PM
Hi,

I have added images in categories but they dont show in front end.
Have default template set.

How can I solve that?

Thanks in advance!
#26
3rd party extension / Re: Simple VM4 Product Cart Va...
Last post by fasterjoomla - September 22, 2025, 23:53:34 PM
Thank you @AH great plugin!
The language format is now incompatible with Joomla 5.3.3, it just wouldn't load any translations at all. Newlines are no longer allowed in the ini files.

I simply removed all space from VMCUSTOM_QVARIANT_EXAMPLES and it works like a charm.

I cannot upload the updated file, just remove all newlines in the string VMCUSTOM_QVARIANT_EXAMPLES in en-GB.plg_vmcustom_qvariant.ini and empty en-GB.plg_vmcustom_qvariant.sys.ini as it's not used in the name or description.

The file en-GB.plg_vmcustom_qvariant.ini should look like this:

; QUORVIA from original idea by Banquet Tables Pro
; Copyright (C)  QUORVIA. All rights reserved.
; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
; Note : All ini files need to be saved as UTF-8 - No BOM
VMCUSTOM_QVARIANT ="Customfield Product variant selection"
VMCUSTOM_QVARIANT_INS ="Product variant selection options"
VMCUSTOM_QVARIANT_STRING = "Product variant options"
VMCUSTOM_QVARIANT_CONFIG_LABEL = "Usage and config"
VMCUSTOM_QVARIANT_EXAMPLES = "<br/>Structure - <b>t@mv,</b><br/><br/><b>t</b> = Item variant - Product variant selection text and Item variant text that will show in cart <br/> Language keys can be used for the Title and Variants e.g. COM_MY_OPTIONS  -  COM_RED,COM_YELLOW you need to add these to your language overrides files <br/><b>@</b> = separates the modifier from the selection text - If there are no additional modifiers nothing else is needed <br/><b>m</b> = modifier either + - * or = <br/><b>v</b> = modifier value <br/><b>,</b> = separates variants <br/><br/><br/>1. <b>Simple selections no price adjust</b> &nbsp;&nbsp;&nbsp;&nbsp;Config: <b>Red,Green,Blue</b>&nbsp;&nbsp;&nbsp;&nbsp;All variants are at Retail <br/><br/>2. <b>Adjust the price + or - </b> &nbsp;&nbsp;&nbsp;&nbsp;Config: <b>Sml,Med@+1,Lrg@+2</b>&nbsp;&nbsp;&nbsp;&nbsp;Give prices of: Sml = Retail, Med = Retail +1, Lrg = Retail +2 <br/><br/>3. <b>Multiply the price * </b> &nbsp;&nbsp;&nbsp;&nbsp;Config: <b>1m,2m@*2,3m@*3</b>&nbsp;&nbsp;&nbsp;&nbsp;Gives prices of: 1m = Retail, 2m = Retail * 2, 3m = Retail * 3 <br/><br/>4. <b>Sell fixed multiples * </b> &nbsp;&nbsp;&nbsp;&nbsp;Config: <b>2kg@*2,4kg@*4,6kg@*6</b>&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/>5. <b>Fix the price of a variant = </b> &nbsp;&nbsp;&nbsp;&nbsp;Config: <b>Red,Green,Blue@=12.50</b>&nbsp;&nbsp;&nbsp;&nbsp;Gives prices of: Red Green = Retail, Blue = 12.50 <br/><br/>6. <b>Append a string to the sku = </b> &nbsp;&nbsp;&nbsp;&nbsp;Config: <b>Sml@@sml,Med@+1@med,Lrg@+2@lrg</b>&nbsp;&nbsp;&nbsp;&nbsp;Give SKU's of: SKU: origsku-sml, origsku-med, origsku-lrg <br/><br/>7. <b>Change the cart weight for variant = </b> &nbsp;&nbsp;&nbsp;&nbsp;Config: <b>Sml,Med@@@2,Lrg@@@4</b>&nbsp;&nbsp;&nbsp;&nbsp;Give cart weight of: Sml = product weight, Med = 2, Lrg = 4 <br/><br/>8. <b>Product variant selections can be a set of mixed types if required</b>&nbsp;&nbsp;&nbsp;&nbsp;Config: <b>Sml@*2,Med@+12,Lrg@-2</b> "
VMCUSTOM_QVARIANT_WEIGHT = "Adjust product weight for options using Multiply modifier * - <br>Note: Setting a 'Change the cart weight for variant' will override this for that specific variant"
VMCUSTOM_QVARIANT_WEIGHT_MULTIPLIER = "This is useful for shipping. The weight of the single product will be multiplied by the price multiplier e.g. product-weight * 3.  Setting a weight for a variant will override this - desc@pricing@skumod@weightset"
VMCUSTOM_WEIGHT_NO = "No "
VMCUSTOM_WEIGHT_YES ="Yes"
VMCUSTOM_QVARIANT_IS_RADIO = "Show options as a Radio list"
VMCUSTOM_QVARIANT_IS_RADIO_DESC = "Use a Radio list for the product variants rather than a drop down selection.<br/> <b>Note that this is likely to be unsuitable for a large quantity of options.</b>"
VMCUSTOM_IS_RADIO_NO = "No"
VMCUSTOM_IS_RADIO_YES = "Yes"
VMCUSTOM_QVARIANT_MULTIPLIER_PRICE = "Show price when using a Multiply modifier"
VMCUSTOM_QVARIANT_MULTIPLIER_PRICE_DESC = "Show the price of the option next to the option when using a Multiply modifier *.</b>"
VMCUSTOM_MULTIPLIER_PRICE_NO = "No"
VMCUSTOM_MULTIPLIER_PRICE_YES = "Yes"
#27
Security (https) / Performance / SEO, SEF, URLs / Dynamic links
Last post by lombiz - September 22, 2025, 19:03:57 PM
Hi,
I have had problems with virtuemart creating dynamic links like .search, by product , descr etc
Try to handle it with robots.txt to dissallow and removal with gsc.

It is really bad for seo.
Isn't there a way to turn this off so I dont have this problem
All my links from web are sef and looking good.

Thanks in advance!
#28
I wrote about the "mod_virtuemart_languages" VM module, which is included in the VM packageYou cannot view this attachment.
#29
Hi ViPeS,

Are you talking about: https://shop.st42.fr/en/products/multi-language-for-virtuemart.htm ?

It seems it's not compatible with VM4.

I also have a problem with canonical URL: While scanning my VirtueMart product pages with Google Search Console and Screaming Frog, I received a warning stating that I don't have canonical URL. When checking the <head> section of my product pages, indeed, I couldn't find any trace of a canonical URL.

Any ideas?
#30
General Questions / Is Virtuemart ready for the ne...
Last post by DadoO - September 22, 2025, 10:35:09 AM
Hello Us

Is Virtuemart ready for the new legislation in France, in September 2026

https://www.economie.gouv.fr/cedef/fiches-pratiques/la-facturation-electronique-entre-entreprises

and

https://entreprendre.service-public.fr/actualites/A15683

I don't know of it's the same in germany, Italy etc....

Is there an issue ? Is it possible ?
Have you plan to this ?

Many thanks by advance

David