web-dev-qa-db-ja.com

そのページからのみログイン後にコンテンツページにリダイレクトする

サイトの特定のページで、ユーザーは次に進む前にログインする必要があります。サイトのコンテンツの残りのほとんどを表示するためにログインする必要はありませんが、この1つの特定のページではログインする必要があります。ユーザーにログインを強制する障壁を設ける方法を理解しましたそのページのコンテンツを表示する前に(つまり、ユーザーがログインしていない場合、ページ全体で唯一「コンテンツを作成するには、最初にログインする必要があります」という行と、ログインページへのリンクがあります)。新しくログインしたユーザーを同じページ(コンテンツが表示されます)に直接リダイレクトして、コンテンツを表示するにはどうすればよいですか?

現時点では、ユーザーがログインすると、プロフィールページに移動するだけです。

つまり、ユーザーが他のページにログインした場合、プロファイルページにリダイレクトされても問題ありませんが、この1つの特定のページでは、そのままの状態を保つ必要があります。私は次のコードの多くのバリエーションを見てきました:

function hook_user_login(&$edit, $account) {
drupal_goto('node/1');
}

しかし、これが私が達成しようとしていることだとは思いません。私がそこに持っている現在のコードは次のようになります:

$sample1 = '<a href="../user">log in</a>.';
$sample2 = 'To create a classified ad, you must' . " " . $sample1;

global $user;
if ($user->uid == false){
return $sample2;

}

私はこのように有望に見えるいくつかのコードを見てきました:

#action' => url($_GET['q'], array('query' => drupal_get_destination()))

しかし、それを機能させる方法がわかりません。誰かアイデアはありますか?

4
Drupguy

これがあなたに与えることを願っています、

Drupal 7では、宛先パラメーターを使用してそれを実現できます。

リダイレクト先のURLに宛先パラメーターを追加するだけです。

たとえば、ログインページにいて、ログイン後に何らかのノードにリダイレクトしたい場合はabout pageと言います。


YOUR_DOMAIN/user/login?destination=about

"コンテンツを作成するには、まずログインする必要があります"リンクにdestination parameterを追加するだけです。このリンクをクリックすると、宛先パラメーターを使用してユーザーログインページにリダイレクトされます。ログイン後、宛先の値で指定したパスにリダイレクトします。

5
inizio

r4032login モジュールを使用すると、アクセス権限のないページにユーザーがアクセスするたびに、ログインページにリダイレクトされます。ログインすると、アクセスしようとしていたページにリダイレクトされます。

1
skwashd

Drupalでは Rules モジュールを使用できます。 「execute custom PHP code」のようなものを使用します。ここで、request_uriを使用して、特定する必要があるページとpreg_matchできます。それだけです。以下は、使用できる簡単なブロックです。

$request_url = $_SERVER['REQUEST_URI'];
if (preg_match("/content-page/", $request_url)) {
  return TRUE;
}
  • 「ユーザーがログインしました」というイベントを保持します。
  • 条件では、「カスタムを実行PHPコード」
  • そのオプションの下にページリダイレクトを作成して、そのページにリダイレクトします。
  • サイトにすでにログインリダイレクトルールがある場合は、このルールに大きな重みを割り当てます。

あなたを働かせるべきです。

1
oliver_48

これは コンテンツアクセスログイントボガン モジュールの組み合わせを使用することで実現できます。ページを制限し、ユーザーにログインしてページにアクセスするように促すことができます。