Closed seto1 closed 3 months ago
@seto1 実装経緯を教えて下さい〜
@ryuring 特定のページでcanonicalを変更したいのがそもそもの動機となります。 例として以下のような使い方を想定しています。
Configure::write('BcApp.outputMetaCanonical', false);
$this->assign('canonicalUrl', Router::url('/sample', true));
<?php $canonicalUrl = $this->fetch('canonicalUrl') ?>
<?php if ($canonicalUrl): ?>
<link rel="canonical" href="<?php echo h($canonicalUrl) ?>">
<?php endif ?>
@seto1 なるほど、では、「アプリケーション全体の設定」というより、「特定ページのコンテンツテンプレートより書き換えることができるようにするための設定」ということですね。
そうであれば、setCanonicalUrl()
を変更して、View変数 canonicalUrl
を設定できる仕様にしてはいかがでしょう?
public function setCanonicalUrl() {
$canonicalUrl = $this->_View->get('canonicalUrl');
if(!$canonicalUrl) {
// 従来の処理
}
$this->_View->set('meta',
$this->BcHtml->meta('canonical',
$this->BcHtml->url($canonicalUrl, true),
書き換え時
// コンテンツテンプレートにて
$this->set('canonicalUrl', '{任意のcanonicalUrl}');
@ryuring 無効化して非表示にしたい場合は以下のようにするとか応用が効きそうですね。
$this->set('canonicalUrl', false);
ただ気になるのが setCanonicalUrl
関数の名称ですね。
どうせなら $this->BcBaser->setCanonicalUrl('https://test');
みたいに使いたいですね。
他の setTitle/title
setKeywords/metaKeywords
setDescription/metaDescription
みたいに関数2つにするのはどうでしょうか。
けどそこまでするとなると、他のmetaタグのようにビューに置きたくなりますね。 https://github.com/baserproject/basercms/blob/dev-4/lib/Baser/Config/theme/bc_sample/Layouts/default.php#L24 今のafterRenderにある状態だと触りづらいんですよね。
まぁ..正直canonical系のヘルパーは無くてもいいんじゃないかとは思いますけどね。
@seto1
どうせなら $this->BcBaser->setCanonicalUrl('https://test'); みたいに使いたいですね。
そうだよねぇ、そうするとスッキリする。
ただ、コンテンツテンプレートからレイアウトテンプレートに影響を与えるという目的なので、ビュー変数( $this->set('canonicalUrl', '{任意のcanonicalUrl}');
)でコントロールする方がいいかなと思いました。
けどそこまでするとなると、他のmetaタグのようにビューに置きたくなりますね。 確かに、、、今回はこちらは見送りましょう ^^;
@ryuring 調整しましたのでご確認お願いします!
@seto1 ありがとうございます、マージします!
canonicalタグの出力を無効化するオプションを追加しました。 ご確認お願いします。