it-swarm.com.de

Wenn URL gleich X ist, tun Sie dies

Kann ich Code auf irgendeine Weise wiedergeben, wenn die URL mit einer festgelegten URL übereinstimmt?

Ich weiß, dass ich das mit der Menü-ID machen kann, wie zum Beispiel:

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

Aber ich möchte in der Lage sein, ein Stück Code zurückzugeben, wenn die URL übereinstimmt.

1
RustyJoomla

OK habe es.

Wenn ich folgendes benutze:

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

Dadurch erhalte ich die aktuelle URL. Ich kann dazu eine if-Anweisung setzen, wie zum Beispiel:

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

Angenommen, Sie verwenden nur eine http -URL und nichthttps, können Sie die URL folgendermaßen abrufen:

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

Um die Prüfung durchzuführen, könnten Sie folgendes verwenden:

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

Aktualisieren:

Verwenden der Joomla-API, die eine geeignetere Methode darstellt, da nach https gesucht wird und eine kleine Bereinigung ungültiger Zeichen durchgeführt wird, um Injektionen zu verhindern. Dazu können Sie einfach Folgendes verwenden:

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

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

Es kommt ein bisschen darauf an, was der genaue Zweck ist. Muss es für SEF- und Nicht-SEF-URLs funktionieren? Sucht der Zweck nach einer bestimmten Ansicht?

Ich würde wahrscheinlich JInput verwenden und nach einer bestimmten Komponente, Ansicht und ID suchen, wenn ich zum Beispiel einem bestimmten Artikel entsprechen muss. Auf diese Weise spielt es keine Rolle, mit welcher URL der Benutzer die Seite besucht. Es funktioniert mit aktiviertem oder deaktiviertem SEF, egal. Es funktioniert auch für mehrere URLs, die auf denselben Artikel verweisen. So was:

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

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

Wenn Sie jedoch wirklich eine genaue URL finden und alle Varianten ignorieren müssen, ist Ihre Lösung mit JFactory::getURI(); der richtige Weg.

0
Bakual