Ja, aber das liegt einfach daran, dass dieses Plugin nicht sauber implementiert ist. Schon mal den Hersteller/Autor mit diesem Problem konfrontiert?
All Deine Versuche oben werden so nicht zum Ziel führen, da Smarty-Code ja kompiliert wird, und diese Seite dann im Cache landet. Somit ist es nicht so ohne weiteres möglich, den Inhalt einer Seite zu dynamisieren. Das {nocache} von Smarty funktioniert mit Shopware nicht, um also einzelne Werte über ESI Tags immer „frisch“ anzufordern, braucht man ein Action-Widget und nutzt dann im Smarty-Code den {action…} Befehl. Siehe auch
Da es das Plugin allerdings irgendwie hinbekommt, den Preis durch „Preis auf Anfrage“ zu ersetzen, sollte es eigentlich im gleichen Zuge auch möglich sein, die Lieferzeit auszublenden und einen anderen Button auszugeben.
Der Ansatz mit JS läuft ja im Browser. Dort allerdings den gesamten DOM zu verbiegen (damit der Button einmal in den Warenkorb legt, und einmal das Anfrageformular triggert) ist ziemlich unsauber.
Wenn, dann würde ich im buy.tpl einfach schon BEIDE Buttons ins HTML schreiben lassen, und den einen (zunächst) unsichtbar machen. In deinem JS Code switcht Du dann nur die Sichtbarkeit der beiden Buttons.
LG Phil