web-dev-qa-db-ja.com

RSFormの完了後にCookieを設定する

ページの読み込み時に自分のサイトに表示されるモジュール(RSForm Pro)があります。

新しいサイトの訪問者全員にこのモジュールが表示されるようにしたいのですが、フォームに詳細が追加されているか、フォームが閉じられている([x]を使用している)場合は表示されません。

これを行う最良の方法は何ですか?これはCookieを使用して実行できますか?

ここでモジュールの動作を確認できます: http://trade.inapub.co.uk/

2
RustyJoomla

この場合、ブラウザから削除できるため、個人的にはCookieを避けます。

代わりに、(ユーザーが最初にログインする必要がある場合)の方が良いでしょう。

  1. user_idという列を持つデータベーステーブルの作成
  2. フォームに入力した後に実行されるデータベースクエリを記述し、データベースのuser_id列にユーザーIDを追加します。
  3. ユーザーがサイトにアクセスしたら、データベースクエリを実行して、ユーザーのIDがデータベーステーブルに存在するかどうかを確認します。
  4. クエリから結果を取得し、IDが存在しない場合はフォームを表示します

ユーザーがログインする必要がない場合(フォームはパブリックで使用する場合)、PHPセッションを使用し、もちろんJoomlaのコーディング標準に準拠することをお勧めします。

2
Lodder

Simple Pop-Up というプラグインを使用してみてください。これは、モーダルポップアップの{simplepopup}タグの間にあるものをすべて表示するプラグインです。タグは、記事、モジュール、または基本的にプラグインでコンテンツを処理できる任意の部分に追加できます。プラグインは、ユーザーごとに1回だけロードするように構成できます。

私はこれをテストしていませんが、フォームがモジュールにロードされている場合は、これを試すことができます:

{simplepopup}{loadposition YouFormPosition}{/simplepopup}

別のオプションは MetaMod (商用拡張)を使用することです。彼らのチュートリアルによると、次のようなことができます:

$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