web-dev-qa-db-fra.com

Définir un cookie après la fin d'un RSForm

J'ai un module (RSForm Pro) qui s'affiche sur mon site au chargement de la page.

Je souhaite que ce module soit affiché à tous les nouveaux visiteurs du site, mais je ne souhaite pas qu'il soit affiché si des détails ont été ajoutés au formulaire ou si le formulaire a été fermé (à l'aide du [x]).

Quelle est la meilleure façon de faire cela? Cela peut-il être fait en utilisant un cookie?

Vous pouvez voir le module en action ici: http://trade.inapub.co.uk/

2
RustyJoomla

Personnellement, je resterais à l'écart des cookies dans ce cas, car ils peuvent être supprimés du navigateur.

Au lieu de cela, vous seriez mieux (Si l'utilisateur doit être connecté en premier):

  1. Création d'une table de base de données avec une colonne appelée user_id
  2. Ecrivez une requête de base de données qui est exécutée une fois le formulaire rempli et ajoutez l'ID utilisateur au fichier user_id colonne dans la base de données.
  3. Une fois qu'un utilisateur a visité votre site, exécutez une requête de base de données pour vérifier si son ID existe dans votre table de base de données.
  4. Obtenez les résultats de la requête et affichez votre formulaire si son ID n'existe pas

Si votre utilisateur n'a pas besoin d'être connecté (le formulaire est destiné à un usage public), je vous conseillerais alors d'utiliser une session PHP) et, bien sûr, de respecter les normes de codage de Joomla.

2
Lodder

Vous pouvez essayer d'utiliser un plugin appelé Simple Pop-Up . C'est un plugin qui affichera n'importe quoi entre {simplepopup} balises dans une fenêtre contextuelle modale. Les balises peuvent être ajoutées à des articles, des modules ou à n’importe quelle partie du contenu pouvant être traitées par des plugins. Le plugin peut être configuré pour ne charger qu'une seule fois pour chaque utilisateur.

Je n'ai pas testé cela, mais si votre formulaire est chargé dans un module, vous pouvez essayer ceci:

{simplepopup}{loadposition YouFormPosition}{/simplepopup}

Une autre option pourrait être d'utiliser MetaMod (extension commerciale). Selon leurs tutoriels, vous pouvez faire quelque chose comme ceci:

$c = JRequest::getInt('SeenIt', 0, 'cookie');
if ($c) return; /* if cookie was set, don't show anything, else... */
setcookie( 'SeenIt', 1, time()+60*60*24*365*10, '/' );
return 101; /* return module 101, but only the first time */ 
2
johanpw