web-dev-qa-db-ja.com

$ this-> baseurlはjoomlaでどこに定義されていますか?

私は最初にstackoverflow.comでこの質問をしました(質問 ここ )。コメントで、私がここでその質問をした方が良いだろうと読むことができます。

私のjoomlaウェブサイトではecho $this->baseurl;を使用していますが、「/ index.php」を含むURLを返します。これを変更して、baseurlから "/index.php"を削除します。しかし、$this->baseurl;の定義行が見つかりません。

私は this thread を見つけましたが、これは質問の所有者のテンプレートに基づいており、私のテンプレートにはこのようなものはありません。

非常に感謝の提案:)

14
Therk

_$this->baseurl;_は基本的にJUri::base()のショートカットです。 configuration.phpファイルの_live_site_変数として指定したURLを取得します。これに値がない場合、いくつかのPHPいくつかの変数に基づく魔法を使用します。

それでは、いくつかのテストを実行してみましょう。結果を報告してください:

テスト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';
?>
_

テスト2:

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

テスト3:

グローバル設定(Joomlaバックエンド)でRL rewritingYesに設定してみてください。これが機能しない場合は、 このページのApacheセクション の手順12および5を読んでください。再試行。


テスト4:

テンプレートのindex.phpファイルの上部に、以下を追加します

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

_$this->baseurl;_は、JURIクラスのJURI:base();メソッドを呼び出す代わりに、テンプレート内から使用するショートカットです。これはコアの一部であり、/libraries/joomla/environment/uri.php (~line 218).で見つけることができます

メソッドを見ると、設定ファイルで_$live_url_変数が定義されているかどうかを確認することがわかります。はいの場合、このURLを返します。それ以外の場合は、他のいくつかのチェックを行って、実際のベースURIを返します。

live_url変数が_configuration.php_最後に_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パスの最後の末尾のスラッシュは省略されることに注意してください。

8
FFrewin