it-swarm.dev

Dove è $ this-> baseurl definito in joomla?

Ho posto prima questa domanda su stackoverflow.com (domanda qui ). Nei commenti puoi leggere che sarebbe meglio se faccio questa domanda qui.

Sul mio sito Web joomla sto usando echo $this->baseurl; ma restituisce l'URL contenente "/index.php". Voglio cambiarlo per rimuovere "/index.php" da baseurl. Ma non riesco a trovare la linea di definizione di $this->baseurl;.

Ho trovato questo thread ma questo si basa sul modello del proprietario della domanda e nel mio modello non esiste qualcosa del genere.

Suggerimenti molto apprezzati :)

14
Therk

$this->baseurl; È fondamentalmente la scorciatoia per JUri::base(). Ottiene l'URL che hai specificato come variabile live_site Nel tuo file configuration.php. Se questo non ha alcun valore, utilizzerà alcuni PHP magia basata su alcune variabili.

Quindi, eseguiamo alcuni test. Si prega di riportare i risultati:

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:

Nella Configurazione globale (backend Joomla), prova a impostare Riscrittura URL su . Se questo non funziona, leggi i passaggi 1 , 2 e 5 del sezione Apache in questa pagina e riprovare.


Test 4:

Nella parte superiore del file index.php del modello, aggiungi quanto segue

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

$this->baseurl; È un collegamento da utilizzare dall'interno di un modello, invece di chiamare il metodo JURI:base();, della classe JURI. Fa parte del core e puoi trovarlo in /libraries/joomla/environment/uri.php (~line 218).

Se guardi il metodo, vedrai che controlla nel file di configurazione per vedere se la variabile $live_url È definita. Se sì, restituirà questo URL, altrimenti passerà attraverso una serie di altri controlli e restituirà l'URI di base effettivo.

Molto probabilmente hai la live_url variabile definita nella tua configuration.php che include index.php alla fine. Controlla lì ...

Un'altra possibilità è che l'attuale sistema di template/template abbia da qualche parte definito la proprietà $this->baseurl. Puoi facilmente sostituire $this->baseurl All'interno del tuo modello ridefinendolo nuovamente nella parte superiore del file index.php Del tuo modello, come: $this->baseurl = JURI::base();

* Aggiornamento:

  • Ho detto dove puoi trovare il metodo, ma questo non significa che dovresti andare lì e fare qualsiasi modifica al core. Questo era solo a scopo informativo.

Aggiornamento 2 - per riferimenti futuri

Per completare le informazioni fornite in questo post, la JURI::base($pathonly boolean) accetta un argomento, il $pathonly Che è un tipo di dati booleano - false è il predefinito.

Con $pathonly = true, Restituirà solo il percorso del sito.

Esempi:

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

Si noti che quando $ pathonly = true, la barra finale alla fine del percorso URI viene selezionata.

8
FFrewin