■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。

固定ページのトップページ(index)へindex.htmlでアクセスすると「$this->BcBaser->isHome()で記述した内容が表示されない。

yuchi > 固定ページのトップページ(index)へindex.htmlでアクセスすると「$this->BcBaser->isHome()で記述した内容が表示されない。 @ 2014/2/16 0:30
■ BaserCMS ver 3.0.1
■ サーバー名:ロリポップ
■ スマートURL:ON
■ 設置フォルダ:サブフォルダ
■ 利用しているデータベース:SQLite or MySQL
■ PHPスキル:E

Layouts フォルダにあるdefault.phpへ、下記を参考にトップページにのみ表示する内容を記述しました。
引用:
<?php if($this->BcBaser->isHome()): ?>
<!-- トップページのみに出力する内容 -->
<?php endif ?>
[isHome] 現在のページがトップページかどうかを判定する|baserCMS 3系関数リファレンス | baser CMS


下記2つの場合は、「トップページのみに出力する内容」は表示されます。
1.example.com/basercms/ 表示OK
2.example.com/basercms/index 表示OK

ところが、下記URLでアクセスすると「トップページのみに出力する内容」が表示されません。
3.example.com/basercms/index.html  ※表示されません。

これは仕様なのでしょうか?

よろしくお願いします。
goichi > Re: 固定ページのトップページ(index)へindex.htmlでアクセスすると「$this->BcBaser->isHome()で記述した内容が表示されない。 @ 2014/2/16 23:53
こんにちは。

引用:
これは仕様なのでしょうか?

気になったので、問題の箇所のソースコードを覗いてみました。
/lib/Baser/View/Helper/BcBaserHelpet.php 471行目から抜粋
	public function isHome() {

		// TODO 2013/07/29 ryuring
		// CakeRequestの仕様として、トップページの場合は、url には、false が設定される。
		// here に変更したいところだが、スマートURLオフの場合、index.php も含まれていたような気がする。
		// スマートURLオフでの動作が確認できるまで見送り。
		return ($this->request->url == false ||
			$this->request->url == 'index' ||
			$this->request->url == Configure::read('BcRequest.agentAlias') . '/' ||
			$this->request->url == Configure::read('BcRequest.agentAlias') . '/index');
	}

というようなことで、TOPページとして判定される条件の中に、「index」「/」はありますが、「index.html」は無いようです。仕様といえば仕様なのかも知れません。。。試していませんが、ここに「index.html」を追記すると、期待通りに動いたりするかも知れません。。。(違ってたらゴメンなさい!)
yuchi > Re: 固定ページのトップページ(index)へindex.htmlでアクセスすると「$this->BcBaser->isHome()で記述した内容が表示されない。 @ 2014/2/17 2:49
goichi様

ご返信頂き、ありがとうございます。

早速に「/lib/Baser/View/Helper/BcBaserHelpet.php 471行目付近」にある「public function isHome()」を下記の通り修正しましたところ、目的の動作をすることを確認しました。

public function isHome() {

	// TODO 2013/07/29 ryuring
	// CakeRequestの仕様として、トップページの場合は、url には、false が設定される。
	// here に変更したいところだが、スマートURLオフの場合、index.php も含まれていたような気がする。
	// スマートURLオフでの動作が確認できるまで見送り。
	return ($this->request->url == false ||
		$this->request->url == 'index' ||
		$this->request->url == 'index.html' ||
		$this->request->url == Configure::read('BcRequest.agentAlias') . '/' ||
		$this->request->url == Configure::read('BcRequest.agentAlias') . '/index');
}

【ご注意】basercmsのバージョンアップの度に、書き換える必要があります。
/lib/Baser/View/Helper/BcBaserHelper.php をコピーし該当箇所を修正した後に /app/View/Helper/ へ
basercmsがバージョンアップ後には、/lib/Baser/View/Helper/BcBaserHelper.phpを要確認。


goichi様、ありがとうございました。


参考までに、はじめに下記のように変更しましたが、動作しませんでした。
public function isHome() {

	// TODO 2013/07/29 ryuring
	// CakeRequestの仕様として、トップページの場合は、url には、false が設定される。
	// here に変更したいところだが、スマートURLオフの場合、index.php も含まれていたような気がする。
	// スマートURLオフでの動作が確認できるまで見送り。
	return ($this->request->url == false ||
		$this->request->url == 'index' ||
		$this->request->url == Configure::read('BcRequest.agentAlias') . '/' ||
		$this->request->url == Configure::read('BcRequest.agentAlias') . '/index' ||
		$this->request->url == Configure::read('BcRequest.agentAlias') . '/index.html');
}


ログイン
ユーザー名:
パスワード:


  新規登録 / パスワード紛失

検索

facebook
フォーラムで悩みが解決した場合など、よかったら「いいね!」をポチっとクリックしてください!質問の回答者や開発者の励みになります

フォーラムガイド


関連リンク

オンライン状況
25 人のユーザが現在オンラインです。 (23 人のユーザが フォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 25