baserproject / basercms

baserCMS : Based Website Development Project
http://basercms.net
Other
167 stars 129 forks source link

canonical無効オプション追加 #3485

Closed seto1 closed 3 months ago

seto1 commented 4 months ago

canonicalタグの出力を無効化するオプションを追加しました。 ご確認お願いします。

ryuring commented 4 months ago

@seto1 実装経緯を教えて下さい〜

seto1 commented 4 months ago

@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 ?>
ryuring commented 4 months ago

@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}');
seto1 commented 4 months ago

@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系のヘルパーは無くてもいいんじゃないかとは思いますけどね。

ryuring commented 4 months ago

@seto1

どうせなら $this->BcBaser->setCanonicalUrl('https://test'); みたいに使いたいですね。

そうだよねぇ、そうするとスッキリする。 ただ、コンテンツテンプレートからレイアウトテンプレートに影響を与えるという目的なので、ビュー変数( $this->set('canonicalUrl', '{任意のcanonicalUrl}'); )でコントロールする方がいいかなと思いました。

けどそこまでするとなると、他のmetaタグのようにビューに置きたくなりますね。 確かに、、、今回はこちらは見送りましょう ^^;

seto1 commented 4 months ago

@ryuring 調整しましたのでご確認お願いします!

ryuring commented 3 months ago

@seto1 ありがとうございます、マージします!