Topics トピックス

[baserCMS]パンくずリストの使い方

2015/02/02

いつも株式会社ヒニアラタのホームページをご覧いただき、誠にありがとうございます。

今回はホームページ制作でよく利用するbaserCMSの「パンくずリスト」の設定方法、使い方、カスタマイズについてご紹介したいと思います。

実行環境

  • baserCMS 3.0.6.1
  • Vagrantを使った仮想環境(公式リポジトリからダウンロードできます)

パンくずリストってなに?

パンくずリストというのは、現在見ているページからTOPページまでの階層を示すナビゲーションで、多くのホームページで採用されています(下図)。

20150202_crumbs.png

baserCMSでは標準でこのパンくずリストを生成する機能があり、手動で階層を設定する方法と、自動で階層を判定・出力してくれる方法とがあります。一般的には自動でやってしまうのが良さそうですが、何かしらの事情によって、表示させたい階層と内部的な構造が異なる場合などは、手動でリストを好きなように設定する方法を重宝します。

手動で階層を設定し、リストを出力させる

まず手動で階層を設定し、リストを出力する方法からご紹介します。baserCMSの歴史としてはこちらの方法のほうが古く、多くのサイトで利用されているからです。

この方法のポイントは「2段構え」です。「1.まず、階層に表示させたい内容をセット」してから「2.セットした内容を出力させる」というイメージです。

階層に表示させたい内容(カテゴリ名やページ名など)は、固定ページ管理の「コード」にbaserCMS関数を使ってセットします。

20150202_code.png

例えば、「ホーム > カテゴリ名 > ページ名」というリスト階層を表示させたい場合、 ここで「カテゴリ名」と「ページ名」をセットします(最上位階層の「ホーム」は、最終的にリストを出力する際に設定します)。

セットする際に用いる関数は

$this->BcBaser->addCrumb()
パンくずリストの要素を追加する関数。追加するだけで出力はしない。リストを出力するには後述の関数を別途使用する。

です。第1引数にリンク文字、第2引数にURLをとります。今回の例(ホーム > カテゴリ名 > ページ名)であれば、以下のようにセットします。

  <?php $this->BcBaser->addCrumb('カテゴリ名','/category/index') ?>

<?php $this->BcBaser->addCrumb('ページ名') ?>

これで階層のセットはOKです。あとはセットした内容を表示させる必要があります。セットした名用を表示するには、次のbaserCMS関数を使用します。

$this->BcBaser->crumbs()
パンくずリストを出力する。事前にセットされた要素を考慮してくれる。

この関数は、第1引数に区切り文字(表示の際に階層と階層の間を区切る文字)、第2引数に最上位階層(つまりトップページ)を表すテキストをとります。出力用の関数ですので、レイアウトテンプレートに予め記述しておくことが多いように思います。 今回の例ですと、以下のようにして使う事になります。

  
    <?php $this->BcBaser->crumbs('>' , 'ホーム') ?>
  

これで区切り文字が「>」となり、トップページを表すテキストは「ホーム」になります。結果的に、パンくずリストは以下のように出力されます。

  ホーム > カテゴリ名 > ページ名

自動で階層を判断しリストを出力させる

次は自動で階層を判断し、リスト出力する方法をご紹介します。使用する関数は、

$this->BcBaser->crumbsList()
パンくずリストを出力します。出力されるHTMLはElementsフォルダ内に設置されたエレメントファイル「crumbs.php」で調整できます(後述)。

です(ちなみに、よく似た名前でCakePHPの関数「getCrumbsList()」がありますが中身は別物です)。この関数をテンプレートで使用すると、カレントページ(見ているページ)までの階層を出力してくれます

この関数は出力する際にエレメントファイル「crumbs.php」を利用します。このエレメントファイルを調整することで、出力されるHTMLを多少変更する事ができ、例えば(後述するように)パンくずリストをliタグを使って出力させることなどができます。

出力されるHTMLをカスタマイズする

さて実際の制作現場では、前述の自動で階層を判断してくれる「$this->BcBaser->crumbsList()」を使用する事が多いと思います。簡単でとても良いのですが、デフォルト状態のままだと気になる事が1点あります。それは「パンくず”リスト”」という名前にも関わらず、リストタグで出力してくれない事です。

些細なことかもしれませんが、デザイナーさんやコーダーさんから上がってきたHTMLファイルをテーマ化する際、パンくずリストにliタグが使われていることも多く、CSSもそうしたコーディングに適した形で組まれているため、このままliタグを使わないという事になると、新たにスタイルシートを追加することにもなり少し面倒です。ですがご安心ください。ちゃんと解決策が用意されています。

この「$this->BcBaser->crumbsList()」という関数は、下記のエレメントファイルに書かれた処理結果を出力するようになっています。

  /lib/Baser/Elements/crumbs.php

これを以下の場所にコピーします。

  /app/webroot/theme/(お使いのテーマ)/Elements/crumbs.php

コピーを行うのは、appフォルダ以下に移すことによって、将来のバージョンアップ時などに発生する、無用な書き換えを回避するためです。

なお、barketなどで入手したテーマをお使いの場合、すでにこの「crumbs.php」が存在している事があります。その場合は、下記の内容を参考にして必要箇所だけを書き換えてください(ここでは1からデザインを起こし、コーディングしていることを前提で記述しています)。

さて、デフォルト状態で「crumbs.php」の処理部分は以下のように書かれています。

  
if ($this->BcBaser->isHome()) {
     echo '<strong>ホーム</strong>';
} else {
     $crumbs = $this->BcBaser->getCrumbs();
     if (!empty($crumbs)) {
          foreach ($crumbs as $key => $crumb) {
               if ($this->BcArray->last($crumbs, $key + 1)) {
                    if ($crumbs[$key + 1]['name'] == $crumb['name']) {
                         continue;
                    }
               }
               if ($this->BcArray->last($crumbs, $key)) {
                    if ($this->viewPath != 'home' && $crumb['name']) {
                         $this->BcBaser->addCrumb('<strong>' . $crumb['name'] . '</strong>');
                    }
               } else {
                    $this->BcBaser->addCrumb($crumb['name'], $crumb['url']);
               }
          }
     }
     elseif (empty($crumbs)) {
          if ($this->name == 'CakeError') {
               $this->BcBaser->addCrumb('<strong>404 NOT FOUND</strong>');
          }
     }
     $this->BcBaser->crumbs(' &gt; ', 'ホーム');
}
  

詳しい処理内容の説明は省きますが、ここにリストタグを追記していきます。結果的に以下のようになるはずです。

  
echo '<ul>';
if ($this->BcBaser->isHome()) {
     echo '<li>'ホーム'</li>';
} else {
     $crumbs = $this->BcBaser->getCrumbs();
     echo '<li>'. $this->BcBaser->getlink('ホーム', '/') .'</li>';

     if (!empty($crumbs)) {
          foreach ($crumbs as $key => $crumb) {
               if ($this->BcArray->last($crumbs, $key + 1)) {
                    if ($crumbs[$key + 1]['name'] == $crumb['name']) {
                         continue;
                    }
               }
               if ($this->BcArray->last($crumbs, $key)) {
                    if ($this->viewPath != 'home' && $crumb['name']) {
                         echo '<li>'. $crumb['name'] .'</li>';
                    }
               } else {
                    echo '<li>'. $this->BcBaser->getlink($crumb['name'], $crumb['url']) .'</li>';
               }
          }
     }

     elseif (empty($crumbs)) {
          if ($this->name == 'CakeError') {
               echo '<li>404 Not Found</li>';
          }
     }
}
echo '</ul>';
  

ここでは行っていませんが、必要に応じてタグにclassをつけるなども出来るでしょう。また、リストタグ以外のタグを用いることも可能だと思います。状況に応じて、適時カスタマイズしてみてください。

いかがだったでしょうか。パンくずリストはよく使われているナビゲーションです。この記事が、皆さまの参考になれば幸いです。

タグ: 新製品 | HTML | baserCMS | PHP | CakePHP | ホームページ制作

お問い合わせCONTACT

弊社への各種ご相談は下記よりどうぞ

よくある質問

ここでは「ホームページを制作するのにどのくらいの期間が必要?」「島根県以外の遠方からでも依頼できる?」などお客様から寄せられる質問に回答しています。
下記の一覧からご覧になりたい質問内容をクリックしてください。

制作について

どのくらいの制作期間が必要ですか?

2ヶ月半〜3ヶ月程度を目処にお考え下さい。実際の作業自体はそれほどかかりませんが、お客様側でご準備いただくものや、新たに用意するもの(写真など)を考慮すると、結果的にそのくらいの期間がかかってしまうのが実情です。

法人ではなく個人事業主なのですが、制作を依頼できますか?

もちろん可能です。ただし、基本的には法人のお客様を想定したサービスとなっておりますので、気になる点などがございましたら、一度お問い合わせ頂ければと思います。

文章の校正はしてもらえますか?

本格的な校正または文章ライティングは、プロのライターに依頼することで可能です(有料)。なお、お客様からお預かりした原稿の誤字脱字等は、可能な限り確認・修正させていただいておりますが、お客様から弊社に完成原稿として提供いただくものにつきましては、なるべくお客様側にて一度チェックしていただきますよう、お願いいたします。

知り合いのデザイナーにデザインをお願いしたいのですが・・・。

事前にご相談いただければ、社外のデザイナーにデザインをお願いすることも可能です。ただし、その方に対して弊社からWeb構築に関する技術・仕様などの指導は出来ませんので、予めWebデザインが可能かどうかをデザイナーにご確認ください。

他社で作った既にあるホームページを修正したいのですが出来ますか?

他社様が制作したホームページでも修正を承っております。ご相談ください。

スマートフォン対応のホームページを作成してもらえますか?

もちろん可能です。現在主流のレスポンシブデザインという制作手法で構築できます。これはユーザーが利用している端末の画面幅に応じてレイアウトを自動で変更するもので、パソコン用のサイトとスマートフォン用のサイトを別で作る必要がないのが特徴です。

現在ホームページを持っていますが、リニューアルをお願いできますか?

もちろん可能です。リニューアルの仕方にもいろいろとあります。CMS(管理システム)やデザインの入れ替え、URLの変更など目的やご要望に応じた手法をご案内しています。

ホームページと一緒にブログも作りたいのですが、可能ですか?

多くのお客様がホームページの制作と同時にブログ機能(お知らせ、新着情報、トピックスなど呼び方は様々)を利用しています。

ホームページに掲載する内容は、一緒に考えてもらえますか?

はい。打ち合わせの際にスタッフへご相談ください。必要であればプロのライターさんに依頼することも出来ます。(有料)。

制作を依頼した場合、何を用意すれば良いですか?

打ち合わせの中で必要なものを確認して進めていきます。一般的には、会社パンフレットなどお客様の事業内容がわかる資料、ロゴマークなどのデータ、ホームページに載せたい写真・画像、

遠方(島根県以外)からホームページ制作の依頼はしてもらえますか?

リモート会議などで対応可能です。弊社では東京・大阪をはじめ、全国のお客様からのご依頼を承っております。ご相談ください。

WordPressを使ったサイト構築は可能ですか?

対応可能です。また、WordPress以外でも対応できますので、その目的・条件にあったCMSをご提案しております。

デザインのみ、コーディングのみなど、制作の一部の依頼は可能ですか?

対応可能です。弊社ではデザイン会社様、広告代理店様、システム開発会社様、ウェブ制作会社様などからの下請け案件も承っております。ご相談くださいませ。

制作会社、広告代理店からの依頼は可能ですか?

はい、対応可能です。ご相談ください。

写真撮影も行ってもらえますか?

対応可能です。弊社の関連会社もしくはパートナー企業が対応いたします。ご相談ください。

動画を使ったホームページを作成したいのですがお願いできますか?

対応可能です。動画は弊社の得意分野の一つです。撮影・編集は弊社の関連会社で映像制作専門の株式会社モットが対応いたします。

ホームページの更新を簡単にできる方法はありますか?

はい、CMS(コンテンツ・マネジメント・システム)の導入をお勧めします。CMSはホームページの管理システムのことで、IDとパスワードを使って管理画面にログインし、ホームページのデータを更新・変更します。

依頼してから完成まではどのような流れですか?

通常、以下のような流れで進んでいきます。

1.コンテンツの確定
ホームページの内容を決めていきます。どんなページがどこにあるか、というのを確定します。

2.デザインの確定
ホームページのデザインを決めていきます。色や雰囲気など最初にご相談させていただき、叩き台となるデザイン案をご用意します。

3.テストサイト構築
確認用のテストサイトをご用意します。

4.公開(納品)
テストサイトで問題なければ、本番環境へホームページを構築し公開します。

ドメイン、URLアドレスについて

現在持っているドメインを引き継ぐことは可能ですか?

可能です。場合によってはドメインの管理者権限を移す手続きが必要になることがあります。ご相談ください。

新しいドメインを取りたいのですが、取得の手配してもらえますか?

もちろん対応可能です。ドメインは「早いものがち」なので、必ずしもご希望のドメインが取得できるとは限りませんが、

サーバーについて

レンタルサーバーは用意してもらえますか?

もちろん対応可能です。弊社は「CPIサーバー(KDDIウェブコミュニケーションズ社)」「Zenlogic(ソフトバンクグループ

見積・費用・契約について

ホームページ制作に費用はどのくらいかかりますか?

ホームページはオーダーメイドになりますので、お客様のご要望の内容によって金額が変わります。

見積りを依頼するには、どのようにして問い合わせすれば良いですか?

弊社ホームページの「お問い合わせ」か、お電話にてご連絡ください。

分割払いはできますか?

原則一括払いでお願いをしておりますが、提携するクレジット会社を利用して分割することができます。ご相談くださいませ。

契約後のキャンセルはできますか?

契約後のキャンセルにつきましては、既に発生した作業の内容に応じて、キャンセル料を頂くことがあります。ご了承ください。

見積りに料金はかかりますか?

お見積りは無料です。お気軽にお問い合わせください。

制作後・メンテナンスについて

納品後のサポートはできますか?

はい可能です。更新頻度の高いサイトをお持ちのお客様や、Webサービスを運用しているお客様には、保守契約をおすすめ致しますが、保守契約の無いお客様や、他社でホームページを制作して運用中のお客様であっても、都度見積もりで対応させて頂いています。

運用は自分で行いたいのですが可能ですか?

はい、可能です。特に更新頻度が高い部分など、予めわかっていれば更新しやすいように管理機能をカスタマイズすることも出来ます。ご相談ください。

他社が作ったホームページを更新だけしてもらうことはできますか?

はい、可能です。ご相談ください。

アクセス解析・広告運用

アクセス解析はお願いできますか?

はい、可能です。レポート作成からコンサルタントによる毎月の報告会まで対応しています(有料)。ご相談くださいませ。

インターネット広告の運用代行をしてもらえますか?

はい、可能です。出稿先、予算、ターゲットなどをご相談し、最適なプランをご提案します。ご相談くださいませ。