0

私はCMS(elgg:http ://www.elgg.org )を使用して、テーマ/テンプレートと同等のビューを操作しています。テーマを変更するには、URL内に?view =mythemeという用語を入れる必要があります。

http://www.mydomain.com/index.php?view=mytheme

?view = mythemeを追加しない場合、elggはデフォルトでビューを選択します

だから、私は助けが必要です、特定のユーザーのために、私は私たちをカスタムビューにリダイレクトしたいのですが、デフォルトのビューを見ることができません。

私はこれを私のヘッダーで作成します:

<?php 

  if ((string) $_SESSION['user']->type === '2') {
    // ???
  } else {
    echo 'do nothing';
  }

現在のURLを取得する方法がわかりません。最後に?view = mythemeを追加するだけですか?

ユーザーのタイプが「2」で、URL http://www.mydomain.com/index.phpを参照する場合は、> http://www.mydomain.com/index.php?view に転送する必要があります。 =神話

ありがとう。

4

1 に答える 1

1

これはちょっと汚いですが、次のことができます。

// Stole this from here: http://webcheatsheet.com/php/get_current_page_url.php
function curPageURL() {
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80") {
        $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    } else {
        $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    return $pageURL;
}

$useCustomView = ((string)$_SESSION['user']->type) === '2';
$usingCustomView = isset($_GET["view"]);
// Redirect to custom view if user type is 2 and view is not already set
if ($useCustomView && !$usingCustomView) {
        $newurl = curPageURL() . '?view=mytheme';
        header("Location: $newurl");
}

これは、あなたが求めていることを達成するために私が考えることができる最も基本的な例です。URLでより長いクエリ文字列をサポートする必要がある場合、これではうまくいきません。そのため、ある程度の作業が必要です。

于 2012-01-31T12:32:46.483 に答える