$ This-> baseurl joomla'da nerede tanımlanır?


14

Önce bu soruyu stackoverflow.com'da sordum (soru burada ). Yorumlarda, bu soruyu burada sormamın daha iyi olacağını okuyabilirsiniz.

Benim joomla web sitesinde kullanıyorum echo $this->baseurl;ama "/index.php" içeren url döndürür. Baseurl "/index.php" kaldırmak için bunu değiştirmek istiyorum. Ama tanım satırını bulamıyorum $this->baseurl;.

Bu konuyu buldum ama bu soru sahibinin şablonuna dayanıyor ve şablonumda böyle bir şey yok.

Öneriler çok takdir :)

Yanıtlar:


14

$this->baseurl;temel olarak kısayoludur JUri::base(). Configuration.php dosyanızda live_sitedeğişken olarak belirttiğiniz URL'yi alır . Bunun değeri yoksa, birkaç değişkene dayanan bazı PHP sihirleri kullanır.

Şimdi birkaç test yapalım. Lütfen sonuçları geri bildirin:

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:

Genel Yapılandırma (Joomla arka uç) olarak ayarlamayı deneyin yeniden yazma URL için Evet . Bu daha sonra işe Adımlar okumazsa 1 , 2 ve 5 arasında bu sayfada Apache bölümünde , ve tekrar deneyin.


Test 4:

Şablonunuzun index.php dosyasının en üstüne aşağıdakileri ekleyin

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

Merhaba, Cevabınız için teşekkürler. Değiştim live_sitebenim url configuration.php dosyasındaki değişken (hiçbir şey değişti). İşte sonuçlar: Kural 1: my-url.com Kural 2: /index.php Kural 3: / Kural 4: /index.php
Therk

@Therk - ok ve Genel Yapılandırmanızda, URL yeniden yazmanın kapalı mı?
Lodder

@Therk - cevabımda test 2'ye bakın
Lodder

mod_rewrite mı demek istediniz? Bu Joomla yapılandırmasında kapalıdır.
Therk

Test 2: echo JUri::base()" myurl.com " echo JUri::base(true)döndürür ve hiçbir şey döndürmez
Therk

8

$this->baseurl;Yerine çağrı, bir şablon içinde kullanılacak olan bir kısayol JURI:base();JURİ sınıfı, yöntem. Çekirdeğin bir parçası ve onu bulabilirsiniz/libraries/joomla/environment/uri.php (~line 218).

Yönteme bakarsanız, $live_urldeğişkenin tanımlanıp tanımlanmadığını görmek için yapılandırma dosyasında kontrol edildiğini görürsünüz . Evetse bu URL'yi döndürür, aksi takdirde bir dizi başka kontrolden geçer ve gerçek taban URI'nızı döndürür.

Büyük olasılıkla , sonunda içeren live_url değişkenine sahipsiniz . Oraya bakın ...configuration.phpindex.php

Başka bir olasılık, geçerli şablon / şablon sisteminizin özelliği bir yerde tanımlamış olmasıdır $this->baseurl. $this->baseurlŞablonunuzun içindeki en üstte yeniden tanımlayarak şablonunuzun içini kolayca geçersiz kılabilirsiniz index.php, örneğin:$this->baseurl = JURI::base();

*Güncelleme:

  • Yöntemi nerede bulacağınızdan bahsettim, ancak bu oraya gidip çekirdekte herhangi bir değişiklik yapmanız gerektiği anlamına gelmez. Bu sadece bilgilendirme amaçlıydı.

Güncelleme 2 - gelecekteki referanslar için

Bu yayına verilen bilgiyi tamamlamak için, JURI::base($pathonly boolean)bir argüman almaktadır $pathonlybir olduğunu boolean veri türü - falsevarsayılan değerdir.

İle $pathonly = trueyalnızca sitenin yolunu döndürür.

Örnekler:

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

$ Pathonly = true olduğunda , URI yolunun sonundaki sondaki eğik çizginin ommite edildiğini unutmayın.


Cevabınız için teşekkürler, yöntemi buldum. Orada herhangi bir şeyi değiştirmekten kaçınmalı mıyım? Configuration.php dosyasında değişkeni live_siteurl'im ve başka bir şey olarak tanımladım (index.php'yi bir yere eklemedim).
Therk

Evet özünde değişecek bir şey yok. Bunun tek istisnası, daha önce başka birisinin daha önce orada bir şey yapmış olması ... fonksiyonun bu şekilde çalışmasına neden olması. Yapılandırmanızdaki live_url değişkenini gerçekten tanımlamanız gerekiyor mu? Genellikle gerekli değildir.
FFrewin

Tamam :) Live_url değişkenini tanımlamam önemli değil. Hiçbir şey değişmez ... index.php her zaman geliyor. Kod kullanarak sorunu giderebilir ama bu çok hacky ve son derece çirkin olurdu ve bunu yapmak istemiyorum. Bu yüzden index.php içinde olmayan baseurl değiştirmek istiyorum.
Therk

Alternatif ve hızlı bir yol, şablonunuz içinde özel baseurl değişkeninizi tanımlamak ve bunu kullanmaktır. $ mybaseurl = JURI: temel (doğru); echo $ mybaseurl;
FFrewin

Ve kontrol edebileceğiniz bir şey daha, şablonunuzu değiştirmenin $ this-> baseurl üzerinde herhangi bir etkisi olup olmadığıdır.
FFrewin
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.