カテゴリを表示件数を制限して一覧表示させたいと思っています。
ならlastnなどを使用して制限をかけられますが、
カテゴリの場合はどうやって制限すればよいのでしょうか?
具体的には、
5件以下の場合は5件表示、
5件以上の場合は4件表示して最後に「その他のカテゴリはこちら」
のように表示させたいです。
悩みこんでしまっているのでよろしくお願いいたします。
カテゴリを表示件数を制限して一覧表示させたいと思っています。
ならlastnなどを使用して制限をかけられますが、
カテゴリの場合はどうやって制限すればよいのでしょうか?
具体的には、
5件以下の場合は5件表示、
5件以上の場合は4件表示して最後に「その他のカテゴリはこちら」
のように表示させたいです。
悩みこんでしまっているのでよろしくお願いいたします。
すみません、MTタグをエンコードしていませんでした。
「MTEntriesならlastnなどを使用して...」です。
以下の方法ではいかがでしょうか。
<$mt:TemplateNote comment="5以下の場合、全て出力"$>
<mt:Categories>
<p><$mt:CategoryLabel$></p>
</mt:Categories>
<mt:else>
<$mt:TemplateNote comment="6以上の場合、一度配列に入れて4件出力"$>
<mt:Categories>
<mt:SetVarBlock name="push(categories)"><$mt:CategoryLabel$></mt:SetVarBlock>
</mt:Categories>
<mt:for var="i" from="0" to="3">
<p><$mt:Var name="categories[$i]"$></p>
</mt:for>
<p><a href="/hoge/">その他のカテゴリはこちら</a></p>
</mt:if>
ありがとうございます!
無事、思い通りの動作になりました!
分かりやすい記載でしたのですんなり動きました。
MTで配列が使えるとは知らなかったです。
本当にありがとうございました。
カテゴリページに、
サブカテゴリの表示件数を制限して一覧表示させたいです。
例えば、カテゴリの中にサブカテゴリが5つあった場合、
2カラムのレイアウトで、
左側に1~3件目まで表示、
右側に4~5件目までを表示したいです。
もし、カテゴリの中にサブカテゴリが4つの場合は、
2カラムのレイアウトで、
左側に1~2件目まで表示、
右側に3~4件目までを表示したいです。
こちらのやり方を参考に、いろいろ試してみたのですが、
やりたいことが出来ず困っております。
どうぞ宜しくお願い致します。
こんにちは。
以下、カテゴリテンプレートに書かれているものとし、
サブカテゴリ総数÷2を四捨五入した件数を、左カラムに入れるものとします。
(合ってますか?)
<$mt:TemplateNote comment="サブカテゴリを配列へ"$>
<mt:SubCategories>
<mt:SetVarBlock name="push(categories)"><$mt:CategoryLabel$></mt:SetVarBlock>
</mt:SubCategories>
<$mt:TemplateNote comment="Forループ用の配列数計算"$>
<$mt:Var name="count(categories)" op="--" setvar="categoriesCount"$>
<$mt:TemplateNote comment="配列数÷2を四捨五入してカラム切り替え用に中間点を出す"$>
<$mt:Var name="count(categories)" op="/" value="2" setvar="halfNum"$>
<$mt:Var name="halfNum" op="+" value="0.5" sprintf="%d" setvar="halfNum"$>
<mt:for var="i" from="0" to="$categoriesCount">
<$mt:TemplateNote comment="ループ初回に左カラムを開始"$>
<mt:If name="__first__"><div style="float:left"></mt:If>
<p><$mt:Var name="categories[$i]"$></p>
<$mt:TemplateNote comment="ループ中間点で左カラムを閉じ、右カラムを開始"$>
<mt:If name="__counter__" eq="$halfNum"></div><div style="float:right"></mt:If>
<$mt:TemplateNote comment="ループ終点で右カラムを閉じる"$>
<mt:If name="__last__"></div></mt:If>
</mt:for>
非常にややこしくなってしまったので細かい解説は省きますが、
出力内容を変更したい場合はSubCategoriesの中の変数セット部分などを変更してみてください。
すみませんっ。
四捨五入って何回も書いてるけど、間違いです。
全部切り上げでした。
お忙しいところ本当にありがとうございます。
感謝致します。
MTでカテゴリの順番を制御するのは大変なのですね。。
>出力内容を変更したい場合はSubCategoriesの中の
>変数セット部分などを変更
わかりました。トライしてみます!
変数なども、まだまだ私にとっては難しく・・頑張って試してみます!
今朝からトライしています。
やってみたところ、
●サブカテゴリが5個ある場合、以下のように
左:サブカテゴリ1 右:サブカテゴリ1
左:サブカテゴリ2 右:サブカテゴリ2
左:サブカテゴリ3 右:サブカテゴリ3
左:サブカテゴリ4 右:サブカテゴリ4
左:サブカテゴリ5 右:サブカテゴリ5
と、同じものが左右に繰り返し出てきてしまいました。
これを、
左:サブカテゴリ1 右:サブカテゴリ4
左:サブカテゴリ2 右:サブカテゴリ5
左:サブカテゴリ3
となるようにするにはどこを修正すれば良いのでしょうか。
度々申し訳ございません。
よろしくお願いいたします。
すみません。
カテゴリテンプレートへコピペしてみましたが5件でも問題ないようです。
どこか変更されましたか?
計10件出ているということは、何らかの原因で配列に10件入っているからだと思います。
ちなみに、
<mt:SubCategories>
の部分を2回書くと、同様の出力結果になりますが...。 そんなことはしてないですよね。<mt:SetVarBlock name="push(categories)"><$mt:CategoryLabel$></mt:SetVarBlock>
</mt:SubCategories>
SA様
こんばんは。お世話になっております。
大変お騒がせしました!
自分が作業したタグなどを削除してコピペしたところ、
バッチリ表示されました。
>そんなことはしてないですよね。
おっしゃるとおり、そんな事をしていたようです(お恥ずかしい)...。
思ったとおりの状態を表示することができました。
本当にありがとうございました。
SAさんの配列数÷2を切り上げてカラム切り替え用に中間点を出す方法のタグですが
このカラムで折り返していくのを、例えば配列数÷2ではなくて
5件ごとなどにカラムを分けていくのは可能でしょうか。
左:サブカテゴリ1 右:サブカテゴリ6 さらに右:サブカテゴリ11
左:サブカテゴリ2 右:サブカテゴリ7 さらに右:サブカテゴリ12
左:サブカテゴリ3 右:サブカテゴリ8 以下カテゴリが続く…
左:サブカテゴリ4 右:サブカテゴリ9
左:サブカテゴリ5 右:サブカテゴリ10
といったイメージです。
こんばんはっ。
lovelydashさんの2カラム版と同様に、カテゴリテンプレートに書く前提で、
最終的にどんな並びになるのか分からないので全部左寄せです。
現在のループ回数が5で割り切れる回数であればカラムを区切る感じです。
後半のmt:Ifのvalue="5"の数字を変更すればその他の件数で分割もできるかと思います。
<mt:for var="i" from="0" to="$categoriesCount"> <$mt:TemplateNote comment="ループ初回に左カラムを開始"$> <mt:If name="__first__"> <div style="float:left;"> </mt:If><mt:If name="__last__"> <$mt:TemplateNote comment="ループ終点だったらカラムを閉じる"$> </div> <mt:ElseIf name="__counter__" op="%" value="5" eq="0"> <$mt:TemplateNote comment="終点ではなくループ回数が5の倍数であればカラム閉じて開始"$> </div> <div style="float:left"> </mt:If> </mt:for>>SAさん
ありがとうございます!思い通りに表示されました。
全部左寄せ、むしろ理想通りです。