• 解決済 pedi

    (@pedi)


    例えば以下の階層のカテゴリがあったとします。

    果物(親カテゴリ id=1 カテゴリースラッグはfruit)
     ┣りんご(子カテゴリ id=2)
     ┣みかん(子カテゴリ id=3)
     ┗その他(子カテゴリ id=4~10)

    子カテゴリごとにレイアウトを変えたいので、
    category.phpに以下を記述してテンプレートを分岐させています。
    (親カテゴリの果物はcategory-fruit.phpで別途読み込ませています。)

    <?php
     $post = $wp_query->post;
     if (in_category('2') {
     include(TEMPLATEPATH . '/category2.php');
     } else if (in_category('3') {
     include(TEMPLATEPATH . '/category3.php');
     } else	{
     include(TEMPLATEPATH . '/category4.php');
     }
    ?>

    また、分岐後のcategory2~4.phpでは以下の処理をしています。

    <?php while (have_posts()) : the_post(); ?>
    表示させたい記事
    <?php endwhile ?>

    ここまではOKなのですが、各カテゴリごとにページあたりの表示件数も変えたいです。
    例えば、りんごは10件、みかんは15件、その他は20件といった感じです。

    プラグインCustom Query String Reloadedが子カテゴリに効かないので詰まってしまいました。
    何か良案がありましたらご教授いただきたくお願いします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • ループの前に以下のようにposts_per_pageで表示件数を変えられます。

    query_posts($query_string ."& posts_per_page=N");

    トピック投稿者 pedi

    (@pedi)

    taikikenさん、コメントありがとうございます。
    早速、ご教授の通りやってみました。
    確かに表示件数は制御できるのですが、ページ送りがうまく機能しないようです。

    例えば、質問内のりんごに10件の登録があってcategory2.phpに分岐、ページあたりの表示件数を4件とすると、1~2ページ目までは4件づつ表示されるのですが、最終ページは何故かcategory4.phpに分岐してしまいます。

    管理画面の「表示設定⇒1ページに表示する最大投稿数」のみ設定してある場合は、ページ送りも正しく反映されるのですが。

    これは、category.phpの分岐方法に問題があるんでしょうか?
    もしお分かりでしたら引き続きご教授頂けると幸いです。

    ゴメンなさい、うまく行かない理由は分かりません。
    それと、そもそも論になって申し訳ないと思いますが

    category-2.php
    category-3.php
    category-4.php

    とすれば分岐しなくてもカテゴリ専用のファイルになるのではと思います。
    http://wpdocs.sourceforge.jp/テンプレート階層

    トピック投稿者 pedi

    (@pedi)

    taikikenさん、ご返答ありがとうございますm(__)m

    確かにcategory-番号.phpでもいけるのですが、
    複数の子カテゴリで一つのテンプレートを共有するケースが想定されるので、
    出来ればcategory.php側で分岐させたいと思っています。

    ひょっとして普通にブログとして使用する分にはあまり需要がない機能なんですかね?
    このカテゴリはテキストのみ、このカテゴリは画像とセットという構成にした場合、
    ページのボリュームに応じて表示件数を変えられたら便利だと思うのですが。

    こんにちはpediさん
    並列条件で分岐はいかがですか
    category.php
    <?php get_header(); ?>
    の上に

    <?php if(is_category('category_ID'))
    { include (TEMPLATEPATH . '/category-fruit.php'); return; }
    ?>

    複数の場合は

    <?php if(is_category('10')||is_category('83')||is_category('84')||is_category('109')||is_category('1'))
    { include (TEMPLATEPATH . '/category-fruit.php'); return; }
    ?>

    これでいけますよ^^

    トピック投稿者 pedi

    (@pedi)

    takuzooさん、コメントありがとうございます。

    アドバイスのソースでいけました!
    ページ送りの件も解消されました!
    完璧です!!
    半ばあきらめかけていたので本当にうれしいです。

    念のため、解決済みのソースサンプルを置いておきます。

    【category.php】

    <?php
    // りんごのテンプレート(複数の子カテゴリ)
    if(is_category('2')||is_category('10')||is_category('20'))
    { include (TEMPLATEPATH . '/category1.php'); return; }
    
    // みかんのテンプレート(単一の子カテゴリ)
    else if(is_category('3'))
    { include (TEMPLATEPATH . '/category2.php'); return; }
    
    // その他のテンプレート(残りの子カテゴリ)
    else
    { include (TEMPLATEPATH . '/category3.php'); return; }
    ?>

    【category1.php~category3.php】
    ループ前に以下を追加(Nに表示させたい件数を指定する)

    <?php query_posts($query_string ."& posts_per_page=N"); ?>

    Takuzooさん、taikikenさん本当にありがとうございました。
    特に皆様からコメントがなければ解決済みとさせて頂きます。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「子カテゴリごとに表示件数を変えたい」には新たに返信することはできません。