ノードの作成者に連絡する方法として プライベートメッセージ モジュールを使用しています。
「Send author a message」というボタンがユーザーがログインしたときにノードにしか表示されないという問題があります。ユーザーがログインすると、「ログインまたは登録してコメントを投稿できるようにする」(またはそのようなもの)というボタンが表示されます
私が達成したいのは、ユーザー(ログインしていない)がノードで「Send author a message」を表示できることです。そして、このユーザーがこのボタンをクリックすると、最初にログインフォームが表示され、ログイン後、ユーザーはリダイレクトされてノードの作成者へのメッセージを入力します。
どうすればこれを達成できますか?
Privatemsg モジュールは匿名ユーザーには使用できません...以下のように、いくつかの「微調整」の準備ができていない限り...
あなたの質問はD7に関するものだと思いますが、それがD6の場合は、 Issue#490264 で説明されているものを使用することを検討してください。しかし、考えられる回避策についての「アイデア」を得るには、その問題を検討する価値があります...
では、D7はどうでしょうか。 Issue#554238 はD7についてであり、 Comment#7 は私が上記の問題(D6について)を参照しています。ただし、その問題の コメント#8 が解決策になる可能性があります。次のコードサンプルが含まれています。
<?php
$msg = "Hello there";
$source_tag = "from {$_SERVER['REMOTE_ADDR']}";
$result = privatemsg_new_thread( array(user_load(1)), "Browser visit {$source_tag}", $msg, array('author' => user_load(1)) );
// If you wanted to show an error, uncomment the following:
if (!isset( $result['success'] ) || !$result['success'])
{
printf( "<p>Failed to send: %s</p>\n", $result['error'] );
}
?>
上記以外に、(もっと)最近の問題 #2231795 もあります。 コメント#1 コードサンプルも含まれています。したがって、上記のコードが適合しない(または機能しない)場合は、これを代替手段として検討してください。
Privatemsg モジュールを使用し、いくつかの微調整(上記を参照)を使用すると、匿名ユーザーでも何らかの方法で機能させることができます。