当サイトには広告が含まれております

【baserCMS】ウィジェットをページごとに表示/非表示、固定ページに表示

この記事は最終更新日から8年経過しています。内容が古い可能性があります。

あるツールを使ってキーワードによる各検索サイトでの順位をチェックしています。今日株式会社RYUSのコーポレートサイトのチェックをしたら10位台だった検索順位が20位台に落ちてしまっています。この対策をするためにbaserCMSで作られているコーポレートサイトにコンテンツを追加することにしました。固定ページにウィジェットを追加したり、ウィジェットでページごとに表示/非表示に対応ができるようにカスタマイズしてみました。

記事をざっと見る

コンテンツをこのように追加しようと思いました

キーワードの順位が落ちていたキーワードは XOOPS でした。当社にとって重要なキーワードの順位が落ちていたというのは問題ですので、対応を考えました。

修正前のトップ画面はこんな感じです

以前のサイトは今現在のXOOPS Cube専門サイトだったために特にコンテンツを意識していなくても10位台の順位でした。しかしコーポレートサイト化してトップページを複合的な要素にした結果、XOOPS というキーワードが減ってしまいました。

また、それだけでなく改めてトップページを見てみると「何をしている会社?」ということがいまいちわかりにくいと思いました。そこで、

サービスページに書いてあるこの文章をすべてのページで表示させたいと思います。構想としてはこんな感じです。

トップページ

トップ以外(サービスページを除く)

株式会社RYUSでのウィジェット表示 修正前

同じコンテンツを複数のページで表示させるのなら、ウィジェットが良いと思いました。

管理画面でウィジェット一覧を見てみます

こんな感じです。ここに追加したいウィジェットを作ります。



ウィジェットエリア新規追加
 をクリック

ウィジェット名 を aboutRYUS として エリア名を保存する をクリック

この画面になりますので、

利用できるウィジェット から テキスト をクリックして右の 利用中のウィジェットまでドラッグして、ドロップします。

このように入力画面になるので

表示させたい文章などを入力し、タイトルを表示のチェックを外し、利用するにチェックを入れて 保存 をクリック。

すぐに表示されるのかな?と思いましたが、

まだ何も変わっていませんでした(^_^;。

固定ページのトップページに新しいウィジェットを表示させる

固定ページのトップページに追加した新しいウィジェットを表示させたいと思います。固定ページ一覧トップページ(index)

編集をクリックします。編集画面で



ソース
 をクリックし

新着情報を表示している部分より上にウィジェットを表示するコードを挿入したいと思います。

ウィジェット一覧で見ると

新しく追加したウィジェットの No は 3 なので

<?php $this->BcBaser->widgetArea(3); ?>

<div class="box" id="news">
<div class="body"><?php $this->BcBaser->blogPosts('news', 2) ?></div>
</div>

<div class="body"><script type="text/javascript" src="/feed/ajax/2.js"></script></div>

一番上に1行

<?php $this->BcBaser->widgetArea(3); ?>

と追加しました。このBcBaser->widgetAreaについてはマニュアルで、ウィジェット番号(No)を指定すると指定のウィジェットが出せる、ということがわかりました。

保存 をクリックし、表示すると、

このように、意図したとおりの表示となっていました(^^)/

指定したページのサイドバーにウィジェットを表示する

次はサイドバーに追加した新しいウィジェットを表示します。

トップページ以外、サービスページ以外 のすべてのページでこの追加したウィジェットを表示したいと思います。

管理画面のウィジェットあたりをいろいろ探したのですが、管理画面上からは表示するページを指定することはできないみたいでした。

ということで、使っているテーマをカスタマイズしようと思います。使っているテーマは logical_jp_baser です。これをコピーしたテーマを使っています。

サイドバーを表示しているのは、テーマフォルダの直下にある Elements\sidebar.php です。

sidebar.phpは、このような内容でした。

<?php
/**
 * サイドバー
 */
?>
<div id="sub" role="complementary">
<?php $this->BcBaser->widgetArea(); ?>
<!--/#sub --></div>

ここでは BcBaser->widgetArea() とNoの指定がありません。これはマニュアルを参照すると、

ウィジェット番号(No)を指定します。
省略した場合は管理画面で設定されている対象ウィジェットエリアが自動的に出力されます。

ということのようです。今は新着情報(blogプラグイン)以外では 標準サイドバー が、新着情報(blogプラグイン)では ブログサイドバーが表示されています。

これを

 標準サイドバー はすべてのページで表示
 ブログサイドバー は 新着情報だけで表示
 aboutRYUS はトップページとサービス以外のページで表示

としたいと思います。sidebar.phpの内容を

<?php
/**
 * サイドバー
 */
?>
<div id="sub" role="complementary">
<?php $this->BcBaser->widgetArea(1); ?>
<?php
if (substr($this->bcBaser->getHere(),0,5) == '/news'){
    $this->BcBaser->widgetArea(2);
}
?>

<?php
if(!$this->BcBaser->isHome()) { 
    // トップページでない
    if (substr($this->bcBaser->getHere(),0,8) != '/service'){
        // サービスページでない
        // サービスページの文章ウィジェットを表示
        $this->BcBaser->widgetArea(3);
    }
}
?>

<!--/#sub --></div>

このように変更します。

<?php $this->BcBaser->widgetArea(1); ?>


標準サイドバー(No:1)
を表示します。条件を指定してないのですべてのページで表示されます。

$this->BcBaser->getHere()現在のページの純粋なURLを取得する関数です(マニュアル)

確認したところ / スラッシュ付きのディレクトリ名が入ってくるようだったので、

if (substr($this->bcBaser->getHere(),0,5) == '/news'){

で表示してるページが新着情報のときという判定をして、

$this->BcBaser->widgetArea(2);


ブログサイドバー(No:2)
を表示します。

if(!$this->BcBaser->isHome()) { 
    // トップページでない
    if (substr($this->bcBaser->getHere(),0,8) != '/service'){
        // サービスページでない

$this->BcBaser->isHome() は現在のページがトップページかどうかを判定します(マニュアル)。ここでは  が着いているので、トップページでないときという判定になり、その次の行で先ほどと同じようにサービスページではないときという判定をして、

        $this->BcBaser->widgetArea(3);

新しく追加したウィジェット aboutRYUS(No:3) を表示します。

これで、

意図したところに追加したウィジェットが表示されました。また、トップページを再度表示しても、

トップのサイドバーには新しいウィジェットは表示されません。

という感じで、固定ページとサイドバーに構想通りのウィジェットを表示できるようになりました(^^)/
実際に株式会社RYUSのWebサイトでご確認ください♪

[amazon_searchlink search=”cakephp”]

この記事が気に入ったら
いいね または フォローしてね!

あなたのシェアが励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントを残す

記事をざっと見る