web-dev-qa-db-fra.com

Où est-ce que $ this-> baseurl est défini dans joomla?

J'ai d'abord posé cette question sur stackoverflow.com (question ici ). Dans les commentaires, vous pouvez lire qu'il serait préférable que je pose cette question ici.

Sur mon site Web joomla, j'utilise echo $this->baseurl; mais il retourne l'URL contenant "/index.php". Je veux changer ceci pour enlever "/index.php" de baseurl. Mais je ne trouve pas la ligne de définition de $this->baseurl;.

J'ai trouvé ce fil mais c'est basé sur le modèle du propriétaire de la question et dans mon modèle, il n'y a rien qui ressemble à ceci.

Suggestions très appréciées :)

14
Therk

$this->baseurl; Est fondamentalement le raccourci pour JUri::base(). Il obtient l'URL que vous avez spécifiée sous forme de variable live_site Dans votre fichier configuration.php. Si cela n'a pas de valeur, il utilisera de la magie PHP) basée sur quelques variables.

Alors, permet de lancer quelques tests. Veuillez rapporter les résultats:

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:

Dans la configuration globale (backend Joomla), essayez de définir la réécriture de l'URL sur Oui . Si cela ne fonctionne pas, lisez Étapes 1 , 2 et 5 de section Apache sur cette page , puis réessayez.


Test 4:

En haut du fichier index.php de votre modèle, ajoutez les éléments suivants

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

Le $this->baseurl; Est un raccourci à utiliser à l'intérieur d'un modèle, au lieu d'appeler la méthode JURI:base(); de la classe JURI. Cela fait partie du noyau et vous pouvez le trouver sur /libraries/joomla/environment/uri.php (~line 218).

Si vous regardez la méthode, vous verrez qu'elle vérifie dans le fichier de configuration si la variable $live_url Est définie. Si c'est le cas, il retournera cette URL, sinon il passera par un certain nombre d'autres vérifications et renverra votre URI de base réel.

Très probablement, vous avez la variable live_url définie dans votre configuration.php qui inclut le index.php à la fin. Vérifiez là ...

Une autre possibilité est que votre modèle/système de modèles actuel ait défini quelque part la propriété $this->baseurl. Vous pouvez facilement remplacer le $this->baseurl Dans votre modèle en le redéfinissant en haut du fichier index.php De votre modèle, comme suit: $this->baseurl = JURI::base();

* Mise à jour:

  • J'ai mentionné où vous pouvez trouver la méthode, mais cela ne signifie pas que vous devriez y aller et apporter des modifications au noyau. Ce n'était qu'à titre informatif.

Mise à jour 2 - pour les références futures

Pour compléter les informations données dans cet article, la JURI::base($pathonly boolean) prend un argument, le $pathonly, Qui est un type de données booléen - false est le défaut.

Avec $pathonly = true, Il ne retournera que le chemin d'accès au site.

Exemples:

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

Notez que lorsque $ pathonly = true, la barre oblique finale à la fin du chemin de l'URI est omise.

8
FFrewin