httpから始まるURLを取得する
WordPress
該当する関数(テンプレートタグ)はありません。よく似た挙動をする関数に home_url() や site_url() などがあります。
baserCMS(2系)
$bcBaser->getUri( [$url] , [$sessionId] )
[getUri] httpから始まるURLを取得する|baserCMS 2系関数リファレンス
baserCMS(3系)
$this->BcBaser->getUri( [$url] , [$sessionId] )
[getUri] httpから始まるURLを取得する|baserCMS 3系関数リファレンス
メモ
テンプレートファイル内で、特定ページの絶対URLを文字列として取得したいときに使います。よく似た関数に getUrl() がありますが、下記のコード・出力結果のような違いがあります。
《コード》(3系の場合)
<?php echo 'getUrl: ' . $this->BcBaser->getUrl('/foo') ?> <?php echo 'getUri: ' . $this->BcBaser->getUri('/foo') ?>
《出力結果》※スマートURL OFFの場合
getUrl: /index.php/foo getUri: http://example.com/index.php/foo
getUrl() のリファレンス(3系)(2系)にもあるように、getUrl() でも第2引数を true に設定することで getUri() と同様の結果を取得できます。
《コード》(3系の場合)
<?php echo 'getUrl: ' . $this->BcBaser->getUrl('/foo', true) ?> <?php echo 'getUri: ' . $this->BcBaser->getUri('/foo') ?>
《出力結果》※スマートURL OFFの場合
getUrl: http://example.com/index.php/foo getUri: http://example.com/index.php/foo
二つの関数の関係は /lib/Baser/View/Helper/BcBaserHelper.php(3系)にある getUri メソッドの記述をみると、より理解が深まるかとおもいます。
/** * httpから始まるURLを取得する * * @param string $url * @param boolean $sessionId * @return string * @access public * @manual */ function getUri($url, $sessionId = true){ if(preg_match('/^http/is', $url)) { return $url; }else { if(empty($_SERVER['HTTPS'])) { $protocol = 'http'; }else { $protocol = 'https'; } return $protocol . '://'.$_SERVER['HTTP_HOST'].$this->getUrl($url, false, $sessionId); } }
getUri() は、サーバ環境変数から割り出したプロトコルやホスト名に getUrl() の取得結果を結合して返すものだったのですね。