web-dev-qa-db-ja.com

URLがXと等しい場合、これを実行します

URLが設定されたURLと一致する場合、コードをエコーする方法はありますか?

私は次のようなメニューIDを使用してこれを実行できることを知っています。

//This is the code for the page with menu ID 3
$menuID = JSite::getMenu()->getActive()->id ;
    if ($menuID == '3')
    {
        echo '';
    }

しかし、URLが一致した場合にコードの一部をエコーできるようにしたいと思います。

1
RustyJoomla

はい、わかった。

以下を使用する場合:

//Get the full URL for sharing purposes
$uri = JFactory::getURI();
$absolute_url = $uri->toString();

これにより、現在のURLが取得されます。私はこれのためにifステートメントを入れることができます:

if ($absolute_url == 'http://mydomain.com/the/url/i/want/to/match/')
    {
        echo '';
    }
0
RustyJoomla

http URLとnothttpsのみを使用しているとすると、次のようにしてURLを取得できます。

$url = "http://$_SERVER[HTTP_Host]$_SERVER[REQUEST_URI]";

チェックを実行するには、これを使用できます:

if($url == "http://www.example.com/ooga/booga") {
    echo "match";
}

更新:

JoomlaのAPIを使用します。これは、httpsをチェックし、無効な文字の小さなクリーンアップを実行してインジェクションを防ぐため、より適切な方法です。これを行うには、以下を使用するだけです。

$url = JUri::getInstance();
echo $url->toString();

if($url == "http://www.example.com/ooga/booga") {
    echo "match";
}
1
Lodder

正確な目的が何であるかは少し異なります。 SEFおよび非SEF URLで機能する必要がありますか?目的は特定のビューを探していますか?

たとえば、特定の記事と一致させる必要がある場合は、JInputを使用して、特定のコンポーネント、ビュー、IDを確認します。この方法では、ユーザーがページにアクセスするURLは関係ありません。 SEFを有効または無効にしても問題ありません。同じ記事を指す複数のURLでも機能します。このような:

_$jinput = JFactory::getApplication()->input;

if ($jinput->get('option') == 'com_content'
        && $jinput->get('view') == 'article'
        && $jinput->get('id') == 123)
{
    echo 'foo';
}
_

しかし、本当に正確なURLに一致し、すべてのバリアントを無視する必要がある場合は、JFactory::getURI();を使用するソリューションが適切な方法です。

0
Bakual