Pour ton issue, personne n'a sans doute eu le temps de s'y pencher, dommage.
Tu peux tout à faut fabriquer un petit module, avec un controleur qui accepte les URLs contenant reference et quantite (le fameux "simple lien"), pas exemple quelque chose de la forme http://domain.tld/ajout-panier/REFERENCE/QANTITE.
Tu définis dans le module une route qui appelle la méthode suivante de ton contrôleur:
class Cart extends BaseFrontController
{
public function add($ref, $qty)
{
if (null !== $this->getSession()->getCustomerUser()) {
try {
if (null !== $product = ProductQuery::create()->findOneByRef($ref)) {
$cartEvent = new CartEvent($this->getSession()->getSessionCart($this->getDispatcher()));
$cartEvent
->setQuantity(intval($qty))
->setAppend(true)
->setProduct($product->getId())
->setProductSaleElementsId($product->getDefaultSaleElements()->getId());
$this->getDispatcher()->dispatch(TheliaEvents::CART_ADDITEM, $cartEvent);
return new Response('OK', 200);
} else {
return new Response('Product not found', 404);
}
} catch (\Exception $e) {
return new Response($e->getMessage(), 500);
}
} else {
return new Response('Please login', 403);
}
}
}
Et pour la route, tu aurais par exemple :
<route id="tonmodule.add-to-cart" path="/ajout-panier/{ref}/{qty}" methods="get">
<default key="_controller">TonModule\Controller\Cart::add</default>
<requirement key="ref">.*</requirement>
<requirement key="qty">\d+</requirement>
</route>
En fonction de ce que tu veux afficher comme réponse, tu retravailleras peut-être ce que retourne la méthode add().