ブロックに特定のカテゴリの記事だけを表示させたい


投稿ツリー


前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2010/5/27 19:03
きーたー 

ブロックに表示させる記事を、ブログ全体の最新記事ではなく指定したカテゴリの最新記事にするにはどうすれば良いでしょうか?

このブロックのテンプレートである、block_diarylist.htmlの

を変更すればできるかと思いやってはみたものの、代わりに何を書くべきかわからずはまってしまいました。

ご教授いただけませんでしょうか?
よろしくお願いします。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/5/27 22:32 | 最終変更
なーお  長老   投稿数: 1784

きーたーさん、こんにちは。

引用:
きーたーさんは書きました:
ブロックに表示させる記事を、ブログ全体の最新記事ではなく指定したカテゴリの最新記事にするにはどうすれば良いでしょうか?

そうですね、かなり強引な方法ですが、「block_diarylist.html」を

<!-- start module contents -->
 
<table>
<{foreach item=entry from=$block.entry}>
<{if $entry.cname=="カテゴリー名"}>  ←追加
 
 :中略
 
    </table>
    </td>
    </tr>
<{/if}>  ←追加
<{/foreach}>
    <tr>
    <td style="text-align:right;">
    <img src="<{$xoops_url}>/modules/<{$block.mydirname}>/images/arrow1.png" border=0 style="vertical-align:middle;" />
    <a href="<{$xoops_url}>/modules/<{$block.mydirname}>/index.php?page=diarylist">
    <{$block.lang.more}></a>
    </td>
    </tr>
</table>

なんてのは、どうでしょうか。 (「カテゴリー名」のところを、検索したいカテゴリ名に変更) ただ、この方法ですと共有カテゴリ以外でも全ユーザーの同じ名称のカテゴリがすべて引っかかることと、件数を指定できないどいう欠点があります。

将来的には、ブロックオプション設定できるように検討してみますね。 :roll:

投票数:2 平均点:5.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/5/28 15:02
ゲスト 

なーおんさん、こんにちは。
ご回答ありがとうございます。
とても参考になりました。

トップページに複数のブロックを配置して、1ブロックにつき1カテゴリの最新記事を表示させたいと考えています。
ブロックタイトルをカテゴリ名と同じにして、
block_diarylisy.htmlを

1
2
中略
&gt;

と書いてみたのですがb_diarylist.php に$block.title が定義されていないためか、ブロックのタイトルが取得できませんでした。
b_diarylist.phpにどのように記述すれば良いでしょうか?

よろしくお願いいたします。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/5/28 15:07
きーたー 

コードの部分を書き間違えてしまいました。
正しくは以下の通りです。
失礼致しました。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/5/28 15:16
きーたー 

何度もミスしてしまい申し訳ありません。
コードの表示がうまくいかず…。

書きたかったコードは以下の通りです。

 ←ここです
投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/5/28 15:22
きーたー 

何度やってもコードの埋め込みがうまくできません。
申し訳ありません。

教えていただいた、
$entry.cname=="カテゴリー名"

$entry.cname==$block.title
と変更したことをコード表示でお伝えしたかったのです。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/5/28 16:00 | 最終変更
なーお  長老   投稿数: 1784

きーたーさん

ここではコードは、

1
BBcodeの[code]タグ

を使って書いてくださいね。

ところで、複数カテゴリですか。
ブロック名は、smartyの$xoops_crblocksなどの場所に応じた配列に格納されるので、$block.titleでは取得できません。$xoops_crblocks[0].title などですね。。 でもこれですと、目的のことができませんね。 (試しにやってみたのですが、アサインされるタイミングが遅いのか、入ってきません。)

block_diarylist.htmlの中のコードを、必要なカテゴリ分、何回も書けば、私の提示した方法で表示されると思いますよ。

どうしてもブロックを分けたい、とのことでしたら、ALTSYSでカスタムテンプレートを作って内容をコピペし、ブロックオプションでそのテンプレートを指定すれば、同じ方法で絞り込めるはずです。 :-)

しかし、元々このブロックはかなり重いので、複数配置したら大変なことになりそうです。。 xugj_blockなどを使う方法もあります。 難しいですがそちらのほうが速そうです。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/5/28 17:37
きーたー 

すぐにご返答いただきありがとうございます。

どうしてもブロックを分けたかったので教えていただいた、カスタムテンプレートを使う方法でやってみましたところ、カテゴリごとに表示させることができました!
本当にありがとうございます。
現在ローカルで試しているのであまり重さは感じませんが、いずれサーバーで動すときのことも考えてxugj_blockも見ておこうと思います。

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2010/12/2 8:55
ゲスト 

カテゴリではなく、特定の"タグ"の記事だけを表示させる方法はありますでしょうか?

この部分を、タグに該当する関数?に変えればいいのかなとは思うのですが、プログラムはよくわかっていないもので。。
ヒントだけでも、教えていただけるとありがたいです

投票数:0 平均点:0.00
返信する
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2010/12/2 11:27 | 最終変更
なーお  長老   投稿数: 1784

ゲストさん、こんにちは。

引用:
カテゴリではなく、特定の"タグ"の記事だけを表示させる方法はありますでしょうか?

残念ながら、現時点ではブロックのテンプレート変数にタグ情報は渡しておりませんので、テンプレート編集だけでご希望の表示は不可能です。

また、ブロックのスクリプトでコールしている内部の関数自体が、そもそもタグをデータベーステーブルから抽出しておりませんので、 表示させる為にはその部分を含めてしっかりした改造が必要です。

ということで、この件は、カテゴリでの抽出と合わせて、ご要望として今後の開発バージョンへの課題とさせてください。 いつ実装できるかは未定です。案外早くできるかもしれませんし、かなり先になるかもしれません。

では。

投票数:0 平均点:0.00
返信する

このトピックに投稿する

題名
ゲスト名
投稿本文
  条件検索へ