回答:
$this->baseurl;
は基本的にのショートカットですJUri::base()
。configuration.phpファイルでlive_site
変数として指定したURLを取得します。これに値がない場合は、いくつかの変数に基づいたPHPマジックを使用します。
それでは、いくつかのテストを実行しましょう。結果を報告してください:
<?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';
?>
<?php
echo JUri::base();
echo JUri::base(true);
?>
グローバル設定(Joomlaバックエンド)で、URL書き換えをYesに設定してみてください。これが動作しない場合は、手順読ん1、2及び5のこのページのApacheの部分を、再度実行してください。
テンプレートのindex.phpファイルの先頭に、次を追加します
<?php
$this->baseurl = JUri::base();
?>
$this->baseurl;
代わりに呼び出す、テンプレート内から使用するショートカットであるJURI:base();
JURIクラスの、方法。それはコアの一部であり、あなたはそれを見つけることができます/libraries/joomla/environment/uri.php (~line 218).
メソッドを見ると、構成ファイルをチェックして$live_url
変数が定義されているかどうかを確認できます。はいの場合、このURLを返します。それ以外の場合は、他の多くのチェックを経て、実際のベースURIを返します。
ほとんどの場合、末尾にconfiguration.php
を含むlive_url変数が定義されていますindex.php
。確認してください...
別の可能性は、現在のテンプレート/テンプレートシステムが$this->baseurl
プロパティをどこかで定義していることです。次のように、テンプレート$this->baseurl
のindex.php
ファイルの上部でテンプレートを再定義することにより、テンプレート内を簡単にオーバーライドできます。$this->baseurl = JURI::base();
*更新:
更新2-将来の参照用
この投稿で提供された情報を完成させるために、はブールデータ型であるJURI::base($pathonly boolean)
1つの引数を取ります-$pathonly
false
デフォルトです。
を使用$pathonly = true
すると、サイトへのパスのみが返されます。
例:
<?php echo JURI::base(); ?> Would echo something like: http:://localhost/joomla25/
<?php echo JURI::base(true); ?> Would echo: /joomla25
$ pathonly = trueの場合、URIパスの末尾のスラッシュは省略されることに注意してください。
live_site
を自分のURLとして定義し、それ以上何も定義しませんでした(index.phpはどこにも追加しませんでした)。
live_site
私のURLにconfiguration.phpファイルで変数を(何も変更されません)。結果は次のとおりです。ルール1: my-url.com ルール2: /index.php ルール3: / ルール4: /index.php