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

ブログのタイトル(postTitle)の表示文字数を制限する方法

tomato > ブログのタイトル(postTitle)の表示文字数を制限する方法 @ 2015/8/19 18:54
Blog->postTitle($post) ?>
のタグを使用して、ブログのタイトルを表示しているのですが、
一覧表示の際に、レイアウト崩れを防ぐため、12文字まで表示して
残りの文字は表示しないとしたいのですが、うまくいきません。
どうすれば良いでしょうか?

試しに
Blog->postTitle($post, false, false, 12); ?>
としてみましたが、うまくいきませんでした。

お手数ですが、よろしくお願いします。

スマートURL: OFF
レンタルサーバー名:ロリポップ
セーフモード:Off
データベース: SQLite
baserCMSバージョン: 3.0.7
CakePHPバージョン: 2.5.3
PHPスキル(自己評価):全くわからない

goichi > Re: ブログのタイトル(postTitle)の表示文字数を制限する方法 @ 2015/8/20 0:15
こんにちは。試してないんですが、baserCMSはPHPでできているんで、PHPの関数を使えば解決すると思います。
ちょうど指定した長さで文字列を丸めるものとかあるので、色々と調べてみると良いと思います。ただ

$this->Blog->postTitle($post)

だと、丸める以前に出力しようとするので、

$this->Blog->getPostTitle($post)

を使ったほうが良いかも知れません。

例えば
echo mb_strimwidth($this->Blog->getPostTitle($post), 0, 12);

などです。

通常のPHPなので、検索するれば使用例など出てくると思います。参考にしてみてください。
tomato > Re: ブログのタイトル(postTitle)の表示文字数を制限する方法 @ 2015/8/20 16:21
ご回答ありがとうございます。
いただいた内容でいろいろ試してみたのですが、うまくいかず、、、、
すいません。
記述ミスとかも考えたのですが、私がみたところ、あっているように思うのですが、
根本的にダメなところがあるのでしょうか?
すいません。
いろいろ試したのですが、解決しなくて、、、
※PHPコードの囲いの"<"と">"は記載するとおかしな表示になったので、
[に置き換えて記載しています。

お手数ですが、よろしくお願いします。

結果は以下です。

==



[?php echo mb_strimwidth($this->Blog->getPostTitle($post),0,12,'UTF-8',"…"); ?]



と記載したところ、タイトルが何も表示されなかったので、理由を探すため、



[?php echo mb_strimwidth("hogehogehogehoge",0,4,'UTF-8',"…"); ?]



hogehoge…

という結果を期待しましたが、同様に何も表示されず、、、



[?php echo mb_strimwidth('hogehogehogehoge',0,12,'UTF-8',"…"); ?]




こちらも同様に何も表示されませんでした。、、、


スマートURL: OFF
レンタルサーバー名:ロリポップ
セーフモード:Off
データベース: SQLite
baserCMSバージョン: 3.0.7
CakePHPバージョン: 2.5.3
PHPスキル(自己評価):全くわからない

tecking > Re: ブログのタイトル(postTitle)の表示文字数を制限する方法 @ 2015/8/21 1:36
tomatoさん

ヨコ入り失礼いたします。

[?php echo mb_strimwidth($this->Blog->getPostTitle($post),0,12,'UTF-8',"…"); ?]

原因が2つありそうですね。

1. PHPの mb_strimwidth() の第4引数・第5引数の順序が逆
2. baserCMSの getPostTitle() の第2引数に false を指定していない

2. で第2引数を省略すると getPostTitle() での文字列は記事へのリンクが埋め込まれた状態(=a タグで挟まれた状態)になるので、純粋にタイトル文字列だけを取得したいときは false を指定する必要があります。

それをふまえて、記事へのリンクあり・なし それぞれ下のようなコードでどうでしょう?

《リンクなし》
<?php echo mb_strimwidth($this->Blog->getPostTitle($post, false), 0, 24, '…', 'utf-8') ?>


《リンクあり》
<?php echo $this->Blog->getPostLink($post, mb_strimwidth($this->Blog->getPostTitle($post, false), 0, 24, '…', 'utf-8')) ?>


タイトル文字列を全角12文字に丸めつつ記事へのリンクをつけたいときは、リンクなしと同様の処理をした上で、baserCMSの getPostLink() の第2引数として渡せばうまくいくのではとおもいます(一応検証済みです)。

《関連リファレンス》
関数リファレンス/Blog getPostLink
tomato > Re: ブログのタイトル(postTitle)の表示文字数を制限する方法 @ 2015/8/21 14:44
解決しました。
できました!!

ありがとうございます!!

教えていただいた内容で、もう少しPHPを勉強してみようと思います。

いろいろありがとうございました!!

スマートURL: OFF
レンタルサーバー名:ロリポップ
セーフモード:Off
データベース: SQLite
baserCMSバージョン: 3.0.7
CakePHPバージョン: 2.5.3
PHPスキル(自己評価):全くわからない

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


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

検索

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

フォーラムガイド


関連リンク

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

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