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

ブログトップページでカテゴリ別に記事一覧を表示

waka > ブログトップページでカテゴリ別に記事一覧を表示 @ 2013/2/6 18:02
お世話になっております @wakakameと申します
表題の件で投稿させて頂いてます

ブログのトップページはカテゴリ等関係なく、投稿順に記事が表示されていくと思いますが、これをカテゴリA、カテゴリBという様にカテゴリ毎に分けて(各カテゴリのアーカイブページをはめ込んで行く様なイメージ)表示ができないでしょうか?
ブロックの間には見出し等が入るため、ソートなどでの連続表示ではなく、カテゴリを取得してその記事(タイトル・詳細記事)を表示したいのです
イメージとして添付ファイルをご参照ください

ブログのindex.phpにarchives.phpで使われていたコードを入力して記事一覧は表示ができたのですが、カテゴリ毎に取得するというのがわかりません
どなたかご教示頂けないでしょうか

以下が使ってみたコードです

<!-- ここからカテゴリA -->
<p>カテゴリA見出し</p>
<?php if(!empty($posts)): ?>
	<?php foreach($posts as $post): ?>

	<h4><?php $blog->postTitle($post,false) ?></h4>
	<?php $blog->postContent($post,true,false) ?>

	<?php endforeach; ?>
<?php else: ?>
<p class="no-data">記事がありません。</p>
<?php endif; ?>
<!-- カテゴリAここまで -->

<!-- ここからカテゴリB -->
<p>カテゴリB見出し</p>
<?php if(!empty($posts)): ?>
	<?php foreach($posts as $post): ?>

	<h4><?php $blog->postTitle($post,false) ?></h4>
	<?php $blog->postContent($post,true,false) ?>

	<?php endforeach; ?>
<?php else: ?>
<p class="no-data">記事がありません。</p>
<?php endif; ?>
<!-- カテゴリBここまで -->


以上、宜しくお願いいたします

■ BaserCMSのバージョン:2.0.5.1
■ レンタルサーバー名:ロリポップ(本場ではさくらに移行)
■ スマートURLの利用:ON
■ 設置フォルダ:サブフォルダ(本番はドキュメントルート)
■ 利用しているデータベース:MySQL
■ PHPスキル(自己評価): 全くわからない

goichi > Re: ブログトップページでカテゴリ別に記事一覧を表示 @ 2013/2/7 10:26
こんにちは(^^
ちょっと出来るかわからないのですが、
この関数ってブログ内のページでは使えないんでしたっけ?
記事の一覧をカテゴリで絞り込めると思いますが、どうでしょうか。
waka > Re: ブログトップページでカテゴリ別に記事一覧を表示 @ 2013/2/7 21:34
goichiさん

こんばんは
返信ありがとうございますm(_ _)m

その関数だと、「記事の投稿日&タイトル」の一覧になってしまうんですよね
(ブログ内でも関数使えました)

今回は上の関数みたいな感じで、「記事のタイトル&概要&本文」の一覧をカテゴリ毎にわけてindex内に表示させたいのです

質問の書き方がわかりにくくてスイマセン(><)
goichi > Re: ブログトップページでカテゴリ別に記事一覧を表示 @ 2013/2/8 9:27
引用:
(ブログ内でも関数使えました)

おお、ならば解決できるかもしれません。

この関数は引っ張ってきた記事のデータをどのように一覧にするかをテンプレートで設定しています。
デフォルトではおっしゃるとおり、日付と記事タイトルくらいしか出ていませんが、
これはテンプレート側でそのような処理になっているからです。

$bcBaser->blogPosts($contentsName, [$num] , [$options] )

という引数のオプションですが、マニュアルで確認していただくとわかるように、
「テンプレート」というのを指定できると思います。

デフォルトの場面では
/app/themed/テーマ/blog/default/posts.php
がテンプレート「default」として読み込まれます。
中身をみてみると、
<?php if($posts): ?>
<ul class="post-list">
	<?php foreach($posts as $key => $post): ?>
		<?php $class = array('clearfix', 'post-'.($key+1)) ?>
		<?php if($bcArray->first($posts, $key)): ?>
			<?php $class[] = 'first' ?>
		<?php elseif($bcArray->last($posts, $key)): ?>
			<?php $class[] = 'last' ?>
		<?php endif ?>
	<li class="<?php echo implode(' ', $class) ?>">
		<span class="date"><?php $blog->postDate($post, 'Y.m.d') ?></span><br />
		<span class="title"><?php $blog->postTitle($post) ?></span>
	</li>
	<?php endforeach ?>
</ul>
<?php else: ?>
<p class="no-data">記事がありません</p>
<?php endif ?>

というように日付と記事タイトルしか表示していません。
そこで、本文を取得できるようにループ内で
<?php $blog->postContent($post); ?>

みたいにすれば本文も取れるはずです。
ここで使用できる関数はマニュアルのblog取得系関数を見て下さい。

waka > Re: ブログトップページでカテゴリ別に記事一覧を表示 @ 2013/2/8 11:26
goichiさん

返信、ありがとうございます
ご教示頂いた方法で無事表示できました!
posts.phpの中は、自分の欲しい情報を取得するように書き換えても大丈夫なんですね

blog取得系関数を参考にgetPostContentを使って記事本文を取得しようとしたんですが、表示できなかったのでpostContentをそのまま使用しました

参考として今回のコードを記載しておきます

◎posts.php

<?php if($posts): ?>
<?php foreach($posts as $key => $post): ?>
	<?php $class = array('clearfix', 'post-'.($key+1)) ?>
	<?php if($bcArray->first($posts, $key)): ?>
		<?php $class[] = 'first' ?>
	<?php elseif($bcArray->last($posts, $key)): ?>
		<?php $class[] = 'last' ?>
	<?php endif ?>
	<h4><?php $blog->postTitle($post,false) ?></h4>
	<?php $blog->postContent($post,true,false) ?>
<?php endforeach ?>
<?php else: ?>
<p class="no-data">記事がありません</p>
<?php endif ?>


◎index.php

<?php $bcBaser->blogPosts('hoge',10,array('category'=>'hogehoge')) ?>


本当にありがとうございました!m(_ _)m
ログイン
ユーザー名:
パスワード:


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

検索

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

フォーラムガイド


関連リンク

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

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