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

記事タイトルの後ろのサイトタイトルを出力させないようにしたい

yuko > 記事タイトルの後ろのサイトタイトルを出力させないようにしたい @ 2014/10/17 19:45
現状では
記事タイトルの後ろにサイトタイトルも入ってしまいます。

seo的に記事タイトルだけ表示させたほうがいいと聞きましたのでそうしたいのですが
どうすればいいかわかりません。

http://basercms.net/reference_3/archives/84

の部分が関係していると思うのですが
phpなど全くわからないため
どこを触っていいか・・・・

どなたかご教授お願いいたします。

■ BaserCMSのバージョン:3.0.7
■ レンタルサーバー名:lolipop
■ スマートURLの利用: OFF
■ 設置フォルダ: [よく分かりません・・・]
■ 利用しているデータベース: [よく分かりませ

n1215 > Re: 記事タイトルの後ろのサイトタイトルを出力させないようにしたい @ 2014/10/17 20:51
yuko 様

BcBaserHelper::getTitle()やBcBaserHelper::title()はブログのカテゴリをタイトルに含むかどうかを決定する引数があるものの、
サイトタイトルの有無を決めるための設定はないですね。

2通りの方法を紹介します。


●文字列を置換してサイト名消去
BcBaserHelper::getTitle()で取得できるタイトルの文字列に置換をかけて後ろのサイト名を消すというのが一番手軽です。

テーマのレイアウトテンプレートにてtitleタグを出力している
<?php $this->BcBaser->title() ?>

の代わりに
<title><?php echo str_replace("|" . $siteConfig['name'], '', $this->BcBaser->getTitle()) ?></title>

と記述します。



2.テーマヘルパーとメソッドを追加
1は簡単ですが、一度baserCMSが行った処理の逆を行うので二度手間な感じもします。
テーマに組み込んで利用できる独自のテーマヘルパーを追加する方法もあります。
BcBaserHelperを継承し、getTitle()の動作を上書きします。

1)テーマ内にHelperディレクトリがなければ作成
{baserCMSルート}/app/webroot/theme/{テーマ名}/Helper

2)ヘルパークラスを作成
{baserCMSルート}/app/webroot/theme/{テーマ名}/Helper/MyBaserHelper.php
<?php
/**
 * [テーマ]MyBaserHelper テーマヘルパー
 * MyBaserという部分はなんでも好きな名前でOK(ファイル名と合わせる)
 */
class MyBaserHelper extends BcBaserHelper {

/**
 * タイトルタグを取得する
 *
 * 下層ページではサイト名を省略する仕様に変更
 *
 * @param string $separator 区切り文字
 * @param string $categoryTitleOn カテゴリタイトルを表示するかどうか boolean で指定
 * @return string メタタグ用のタイトルを返す
 */
    public function getTitle($separator = '|', $categoryTitleOn = null) {
        //トップページならサイト名を返す
        if($this->isHome()) {
            return $this->siteConfig['name'];
        }

        $title = array();
        $crumbs = $this->getCrumbs($categoryTitleOn);
        if ($crumbs) {
            $crumbs = array_reverse($crumbs);
            foreach ($crumbs as $key => $crumb) {
                if ($this->BcArray->first($crumbs, $key) && isset($crumbs[$key + 1])) {
                    if ($crumbs[$key + 1]['name'] == $crumb['name']) {
                        continue;
                    }
                }
                $title[] = $crumb['name'];
            }
        }

        //サイトタイトルは追加しない

        return implode($separator, $title);

    }
}


これでMyBaserHelper::getTitle()およびMyBaserHelper::title()の動作がご希望通りのものになります。

3)レイアウトテンプレートに記述
BcBaserHelperの代わりに今作成したMyBcBaserHelperを利用します。
<?php $this->MyBaser->title() ?>



2と似たような手法として、app/View/Helper/以下にlib/Baser/View/Helper/BcBaserHelper.phpをコピーしてgetTitle()のみ書き換えるという手法もあります。

Twitter: @n_1215

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


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

検索

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

フォーラムガイド


関連リンク

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

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