Je dois définir le groupe d'acheteurs pour les utilisateurs invités en fonction d'un paramètre de région (qu'ils ont choisi).
Je pensais qu'utiliser les éléments suivants dans un plugin système (onAfterDispatch) fonctionnerait:
// Getting a registered user and piggy-backing on that.
$user = JFactory::getUser(801);
/** @var TableVmusers $vm_user */
$vm_user_model = new VirtueMartModelUser();
$vm_user = $vm_user_model->getUser();
$vm_user->JUser = $user;
$region = JFactory::$application->input->get('region');
$vm_user->shopper_groups = [0 => $region];
Mais cela ne semble pas fonctionner.
J'ai découvert que les groupes de clients sont complètement liés à un utilisateur connecté et ne peuvent pas être manipulés dans votre pile d'événements (même avec un plugin Système). Vous devez être connecté en tant qu'utilisateur et attribuer à cet utilisateur un groupe de clients dans le composant Virtuemart.
En fin de compte, j'ai créé un utilisateur pour chacun des groupes d'acheteurs que je souhaitais utiliser, puis à l'aide d'un plug-in.
Un travail épouvantable, mais je ne suis toujours pas convaincu qu'il existe un autre moyen.