ti-enxame.com

Onde $ this-> baseurl é definido no joomla?

Eu fiz essa pergunta no stackoverflow.com primeiro (pergunta aqui ). Nos comentários, você pode ler que seria melhor fazer essa pergunta aqui.

No meu site joomla eu estou usando echo $this->baseurl; mas retorna o URL que contém "/index.php". Eu quero mudar isso para remover "/index.php" do baseurl. Mas não consigo encontrar a linha de definição de $this->baseurl;.

Eu encontrei este tópico mas isso é baseado no modelo do proprietário da pergunta e no meu modelo não existe algo parecido com isto.

Sugestões muito apreciadas :)

14
Therk

$this->baseurl; É basicamente o atalho para JUri::base(). Ele obtém o URL que você especificou como a variável live_site No seu arquivo configuration.php. Se isso não tiver valor, ele usará alguma mágica PHP mágica com base em algumas variáveis.

Então, vamos fazer alguns testes. Por favor, reporte os resultados de volta:

Teste 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';
?>

Teste 2:

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

Teste 3:

Na Configuração Global (back-end do Joomla), tente definir a reescrita de URL para Sim Se isso não funcionar, leia as etapas 1 , 2 e 5 do seção Apache nesta página e tente novamente.


Teste 4:

Na parte superior do arquivo index.php do seu modelo, adicione o seguinte

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

O $this->baseurl; É um atalho para ser usado dentro de um modelo, em vez de chamar o método JURI:base();, da classe JURI. Faz parte do núcleo e você pode encontrá-lo em /libraries/joomla/environment/uri.php (~line 218).

Se você observar o método, verá que ele verifica o arquivo de configuração para ver se a variável $live_url Está definida. Se sim, ele retornará esse URL, caso contrário, passará por várias outras verificações e retornará seu URI base real.

Provavelmente você tem a variável live_url definida em sua configuration.php que inclui a index.php no final. Verifique lá ...

Outra possibilidade é que o seu sistema de modelo/modelo atual tenha definido em algum lugar a propriedade $this->baseurl. Você pode substituir facilmente o $this->baseurl Dentro do seu modelo, redefinindo-o novamente na parte superior do arquivo index.php Do seu modelo, como: $this->baseurl = JURI::base();

* Atualização:

  • Mencionei onde você pode encontrar o método, mas isso não significa que você deve ir lá e fazer quaisquer modificações no núcleo. Isso foi apenas para fins informativos.

Atualização 2 - para futuras referências

Para completar as informações fornecidas neste post, a JURI::base($pathonly boolean) usa um argumento, o $pathonly Que é um tipo de dados booleano - false é o padrão.

Com $pathonly = true, Ele retornará apenas o caminho para o site.

Exemplos:

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

Observe que quando $ pathonly = true, a barra final no final do caminho do URI é omitida.

8
FFrewin