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

ページカテゴリーのタイトルだけを出力する方法は?

 

 1  |  2   | 次のページ>

inugami > ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/17 20:33
最近baserCMSでサイトを作り始めたのですが、タイトルのとおり
ページカテゴリーのタイトルだけを出力する方法がどうしてもわからず質問に参りました。

ブログのカテゴリー名の場合だと、リファレンスの中の
$blog->category( $post,[$options] )

この関数で好きな場所に表示できますが、ページカテゴリーでもこれと同じことをしたいのです。
titleの関数だとカテゴリー名以外のコンテンツ名も出力されてしまうので、
なんとかカテゴリー名だけ抜き出してこられないか、ページ一覧やパンくずリストのテンプレートなども見てみたのですが
phpは初心者でさっぱりわからず……。
具体的には、レイアウトテンプレートの中にページのカテゴリー名を出力する関数を書いて
category1(名前はカテゴリー1)の場合なら「カテゴリー1」を、
category2(名前はカテゴリー2)の場合なら「カテゴリー2」を表示するようにしたいのです。

ちょっと説明がわかりにくいかもしれません……。
今は見よう見真似の苦肉の策で
<?php if($bcBaser->getContentsName() == 'Category1'): ?>
<h2>カテゴリー1</h2>
<?php elseif($bcBaser->getContentsName() == 'Category2'): ?>
<h2>カテゴリー2</h2>
:

このようにしてページのカテゴリー名を表示しているのですが、
これをもっと簡素で汎用的なものに書き換えられないだろうか、と頭を悩ませています。
もしかしたらブログを使ったほうが早いのかもしれませんが、
そういった指摘も含めてお知恵をお貸しいただけたらとてもありがたいです。

■BaserCMSのバージョン:2.0.2
■レンタルサーバー名:ロリポップ
■スマートURLの利用:ON
■設置フォルダ:サブフォルダ
■利用しているデータベース:SQLite
■PHPスキル:全くわからな

goichi > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/17 21:45
こんにちは(^^
カテゴリ名ですよね。
ちょっとアイディアが湧いたので参考までに回答します。

ページのパンくずリストって、カテゴリ名が出てきますよね。
そこで取得しているカテゴリ名をヘルパーをちょっといじって、
表示するようにしてはどうでしょうか。

[拡張]bc_baser.php

上記のアドレスにサンプルを作ってみました。
これを解凍すると「bc_baser.php」というファイルが出てくると思います。
そのファイルをそのまま
/app/views/helpers/
に入れて下さい。(デフォルトでは何も入っていない空のフォルダだと思います。)
(/baser/views/helpers/ではありません。必ず「/app/」側にいれてください。。。)

カテゴリ名を表示したい箇所で
<?php $bcBaser->getCategoryName() ?>

といれると出てきませんでしょうか?
(もしかしたら、条件次第で動かないかも知れませんが・・・)
inugami > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/18 0:38
わあ!こんなに早くファイルまで用意していただいて本当に感謝感激です!
さっそくダウンロードして/app/views/helpers/へ入れてみました。
ですが、どうもその「条件次第で動かない」の条件に何かがかち合ってしまったようです。
何がバッティングしてしまったのか探ろうとしてみたものの
やはり皆目見当もつかず、せっかくご用意してくださったのに不甲斐ないです……。

テーマを自作したので、もしかするとそのあたりで何か引っかかったのかとも思って
Demoに戻してカテゴリ名を出力するコードを入れてみたのですが、それでも表示されません。
サブフォルダにbaserCMSを置いているので、それが引っかかっているのでしょうか。

やりたいことはまさにgoichiさんの案のような
コードひとつでカテゴリ名を表示できる方法なので、なんとか条件をクリアしてこれを使えるようになりたいです。
そもそもphpを勉強して何が原因なのかあたりをつけられるようにならないといけないですね……!

■BaserCMSのバージョン:2.0.2
■レンタルサーバー名:ロリポップ
■スマートURLの利用:ON
■設置フォルダ:サブフォルダ
■利用しているデータベース:SQLite
■PHPスキル:全くわからな

goichi > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/18 10:09
お役に立てず、すみません(*o*)
ロリポップの環境が手元になかったので、
ヘテムルでやってみたのですが、私の所では表示されました。
ちょっと強引な事をしているので、
カテゴリ階層の状態なんかに左右されてるんだろうと思います。

お手間を取らせてしまって、すみませんでしたm(__)m
goichi > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/18 11:02
連投ですみません。
なんか悔しかったので作戦を変更しました。(笑
(お役に立てなかったらごめんなさい)

今回は関数名は変わりませんが、
引数にgetContentNameをとり、
ヘルパーから無理矢理カテゴリDBを参照して
その名前だけを取得します。

(再び)bc_baser.php

アップ先は前回と同じで、/app/views/helpers/です。
使い方は、カテゴリ名を表示させたい場所で、
<?php
  $bcBaser->getCategoryName($bcBaser->getContentsName());
?>

という一分を、そのまま書き込んでみて下さい。

例えば、
カテゴリ名:caregory1
カテゴリタイトル:カテゴリ1
というカテゴリに含まれるページ内で、上記のコードを入れると
カテゴリ1

と表示されると思います。
(なお、どのカテゴリにも含まれないページでは、なにも出力されません。)

いかがでしょうか!?(ドキドキ)
inugami > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/18 22:03
本当にありがとうございます、こちらこそお手間をおかけしてすみません!
そしてまたもや残念なお知らせです(;_;)
用意していただいた新しいファイルを/app/views/helpers/に入れ、
レイアウトテンプレートにコードを入れてみたのですが、やはりカテゴリータイトルが表示されません。
ためしにカテゴリーに属している通常の固定ページ作成の画面の方でコードを入れてみたのですが、同じ結果でした。
だめもとでテーマをDemoに戻してもみたのですが、それでも表示されず……。

ページカテゴリーの階層は今のところすべて一段階目です。
もともとの苦肉の策で書いたコードを戻してみると動くので、ContentNameは問題なく取得できていると思うのですが
その先で何かの条件が合わないのか、それともインストール段階でそもそも問題が発生していたのか……
実は一度今のサブフォルダよりさらに深い階層の中にためしにインストールしてみて、その後それを消した後
今のサブフォルダ(こちらはルートのすぐ下です)にインストールし、さらにためした後に
もう一度消して今のサイトを構築している、というわけのわからないことをしています^^;
このようなことがデータベースに影響を及ぼしたりするのでしょうか。
今はロリポップの簡単インストールでインストールしたままの状態を使っていて、
他に入れたものといえばアップローダープラグインくらいのもので、パッチなどは当てていない状態です。
パッチが足りないと動かない、ということもあり得るでしょうか。

うう、基礎の基礎が抜けているので見当違いの質問をしているかもしれません。
とにかく、こちらの条件に合うようにといろいろとファイルを用意してくださって本当に感謝してもし足りません。
ありがとうございます。

■BaserCMSのバージョン:2.0.2
■レンタルサーバー名:ロリポップ
■スマートURLの利用:ON
■設置フォルダ:サブフォルダ
■利用しているデータベース:SQLite
■PHPスキル:全くわからな

goichi > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/18 22:41
どうもですm(__)m
なんかお手数ばかりおかけしてしまっているようで・・・。
ちょっと、別案を考えますので、
その間に以下の事をお確かめいただきたいのです。
(さきほど入れていただいた「bc_baser.php」は、そのままでお願いします)

1.まず管理画面にログインします。
2.システム管理にいって、ページの上の方にある「サーバーキャッシュの削除」を実行します。
3.同じくシステム管理内の「オプション」(設定項目の一番下)をクリックし、出てきた項目の中の「制作・開発モード」を「デバッグモード1」にします。
4.固定ページ管理メニューにいきます。
5.ページの新規作成にいきます。
6.以下の条件でページを作成してみてください。

条件1、なんでも良いのでカテゴリに入れる。
条件2、編集エディタの「ソース」をクリックし、ソースモードにして以下のコードを入れる。
<?php $bcBaser->getCategoryName($bcBaser->getContentsName()); ?>


上記の条件でページを保存してください。
そして、このページにアクセスするとどうなるでしょうか?
この手順で、サーバーキャッシュ、ブラウザキャッシュともに無い状態で、
ヘルパーの動きを確認でき、私が書いたPHPに問題があればエラーメッセージがでるはずです。

いかがでしょうか?
inugami > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/18 23:42
いえいえ、本当にこちらこそ頼りきりで!
さっそく確かめてみたところ、以下のようなエラーメッセージと思しきものが出てきました。

Notice (8): Undefined index: url [CORE/baser/controllers/baser_app_controller.php, line 256]
Warning (2): Cannot modify header information - headers already sent by (output started at /home/users/1/xxx.xx-xxx/web/xxx/cake/basics.php:128) [CORE/cake/libs/controller/controller.php, line 646]

どこまで書けばいいものかわからなかったので、とりあえず出てきたメッセージのURL的なところ以外は全てそのまま書いてあります。
丸投げになってしまって本当に恐縮ですが、これで参考になりますでしょうか。

■BaserCMSのバージョン:2.0.2
■レンタルサーバー名:ロリポップ
■スマートURLの利用:ON
■設置フォルダ:サブフォルダ
■利用しているデータベース:SQLite
■PHPスキル:全くわからな

goichi > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/19 20:48
どうもです。
エラーメッセージですね・・・・。うーん。

他のページ($bcBaser->getCategoryNameを使っていないページ)では、
そんなエラーメッセージは出てこないですもんね。
いま、問題のページに書いてもらっている
<?php
  $bcBaser->getCategoryName($bcBaser->getContentsName());
?>

の部分を削除すると、やっぱりエラーメッセージは消えますでしょうか?

ちょっと環境が違うので、エラーを再現できていないのですが、
[システム管理]→[環境設定情報]で、
PHPのバージョンなんかが出てくると思うので、
もしよければ、その部分を拝見できないでしょうか?
似たような環境を作ってみて、試してみます。


追記です:
引用:
実は一度今のサブフォルダよりさらに深い階層の中にためしにインストールしてみて、その後それを消した後
今のサブフォルダ(こちらはルートのすぐ下です)にインストールし、さらにためした後に
もう一度消して今のサイトを構築している、というわけのわからないことをしています^^;
このようなことがデータベースに影響を及ぼしたりするのでしょうか。

コピーとかじゃなくて、新しくインストールしているなら問題ないと思います(^^

inugami > Re: ページカテゴリーのタイトルだけを出力する方法は? @ 2012/7/19 22:15
わー、すみません!
エラーメッセージが出てきたところですっかり他を試すことが抜けてしまいました。

コードを消して保存しようとしたところ、全く同じエラーメッセージが出てきました。
いろいろ確かめた結果、このエラーメッセージはgoichiさんのコード由来のものではなく、
「サイト内検索の検索結果より除外する」のチェックボックスを外した状態でページを保存しようとすると
出現することがわかりました。もう手抜かりで本当に申し訳ないです!(xox)
他のページは、どうせサイト内検索使わないからチェックつけちゃえ〜という感じで
いちいちちまちまとチェックをつけていたので問題なく保存できていたようです……。

そして、チェックをつけた状態+コードを入れた状態で保存してみたところ
エラーも出ずきれいに保存することができました。
のですが、そのページをブラウザで確認してみてもやはりカテゴリ名は表示されない状態でした。

環境はこのような感じです。

>baserCMS環境
■ スマートURL: ON
■ 設置フォルダ: /home/users/1/xxx.xx-xxx/web/xxx/
■ セーフモード:Off
■ データベース: SQLite3
■ baserCMSバージョン: 2.0.2
■ CakePHPバージョン: 1.2.10

PHPバージョン: 5.2.17

他にも何か必要な情報はありますでしょうか。

引用:
コピーとかじゃなくて、新しくインストールしているなら問題ないと思います(^^

問題なさそうで一安心しました、ありがとうございます!

■BaserCMSのバージョン:2.0.2
■レンタルサーバー名:ロリポップ
■スマートURLの利用:ON
■設置フォルダ:サブフォルダ
■利用しているデータベース:SQLite
■PHPスキル:全くわからな

 

 1  |  2   | 次のページ>

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


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

検索

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

フォーラムガイド


関連リンク

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

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