it-swarm.com.de

Wo ist $ this-> baseurl in Joomla definiert?

Ich habe diese Frage zuerst auf stackoverflow.com gestellt (Frage hier ). In den Kommentaren können Sie lesen, dass es besser wäre, wenn ich diese Frage hier stelle.

Auf meiner Joomla-Website verwende ich echo $this->baseurl;, Aber es gibt die URL mit "/index.php" zurück. Ich möchte dies ändern, um "/index.php" von baseurl zu entfernen. Aber ich kann die Definitionszeile von $this->baseurl; Nicht finden.

Ich habe diesen Thread gefunden, aber dies basiert auf der Vorlage des Fragenbesitzers und in meiner Vorlage gibt es so etwas nicht.

Vorschläge sehr geschätzt :)

14
Therk

$this->baseurl; Ist im Grunde die Abkürzung für JUri::base(). Sie erhält die URL, die Sie als live_site - Variable in Ihrer configuration.php - Datei angegeben haben. Wenn dies keinen Wert hat, werden einige PHP basierend auf einigen Variablen verwendet.

Lassen Sie uns also ein paar Tests durchführen. Bitte melden Sie die Ergebnisse zurück:

Test 1:

<?php
  echo 'Rule 1: ' . JUri::base() . '\n';
  echo 'Rule 2: ' . $_SERVER['PHP_SELF'] . '\n';
  echo 'Rule 3: ' . $_SERVER['REQUEST_URI'] . '\n';
  echo 'Rule 4: ' . $_SERVER['SCRIPT_NAME'] . '\n';
?>

Test 2:

<?php
    echo JUri::base();
    echo JUri::base(true);
?>

Test 3:

Versuchen Sie, in der globalen Konfiguration (Joomla-Backend) RL-Umschreibung auf Ja einzustellen. Wenn dies nicht funktioniert, lesen Sie die Schritte 1, 2 und 5 im Abschnitt Apache auf dieser Seite und Versuch es noch einmal.


Test 4:

Fügen Sie oben in der Datei index.php Ihrer Vorlage Folgendes hinzu

<?php
    $this->baseurl = JUri::base();
?>
14
Lodder

$this->baseurl; Ist eine Verknüpfung, die innerhalb einer Vorlage verwendet werden kann, anstatt die JURI:base(); -Methode der JURI-Klasse aufzurufen. Es ist Teil des Kerns und kann unter /libraries/joomla/environment/uri.php (~line 218). gefunden werden.

Wenn Sie sich die Methode ansehen, werden Sie feststellen, dass sie in der Konfigurationsdatei überprüft, ob die Variable $live_url Definiert ist. Wenn ja, wird diese URL zurückgegeben, andernfalls werden eine Reihe anderer Überprüfungen durchgeführt und Ihre tatsächliche Basis-URI zurückgegeben.

Höchstwahrscheinlich haben Sie die Variable live_url in Ihrem configuration.php definiert, die am Ende die Variable index.php enthält. Überprüfen Sie dort ...

Eine andere Möglichkeit ist, dass Ihr aktuelles Template/Template-System irgendwo die Eigenschaft $this->baseurl definiert hat. Sie können den $this->baseurl In Ihrer Vorlage leicht überschreiben, indem Sie ihn erneut oben in der index.php - Datei Ihrer Vorlage definieren, z. B .: $this->baseurl = JURI::base();

* Update:

  • Ich habe erwähnt, wo Sie die Methode finden können, aber dies bedeutet nicht, dass Sie dorthin gehen und Änderungen am Kern vornehmen sollten. Das war nur zu Informationszwecken.

pdate 2 - für zukünftige Referenzen

Um die in diesem Beitrag gegebenen Informationen zu vervollständigen, benötigt die JURI::base($pathonly boolean) ein Argument, das $pathonly, Das ein boolescher Datentyp - false ist Standard.

Mit $pathonly = true Wird nur der Pfad zur Site zurückgegeben.

Beispiele:

<?php echo JURI::base(); ?> Would echo something like: http:://localhost/joomla25/
<?php echo JURI::base(true); ?> Would echo: /joomla25

Beachten Sie, dass bei $ pathonly = true der abschließende Schrägstrich am Ende des URI-Pfads weggelassen wird.

8
FFrewin