プロが教えるわが家の防犯対策術!

はじめまして。MTをはじめて3週間目で、MT4を使用しております。
現在商品の紹介ページを作成しております。
構成としましては、
Blog:(メーカー)
カテゴリー:商品(A,B,C,D)
サブカテゴリー:A-1,A-2,B-1,B-2,C-1,C-2,D-1,D-2と分類

ブログ記事自体をその商品の紹介ページに見立て、
サブカテゴリーを、最新ニュースに分類しました。

各カテゴリーの記事の中に、サブカテゴリーのエントリータイトルが
表示されるようなブログ記事テンプレートを作成しています。


<MTSetVarBlock name="EntLabel"><$MTCategoryLabel$></MTSetVarBlock>

<MTEntriesWithSubCategories category="$EntLabel" lastn="3">
<dl style="background-color: <$MTStripeColor target="blogbody" oddcolor="#FFF4EA" evencolor="#FAFAFA"$>">
<dt>[<$MTEntryDate format="%Y.%m.%d"$>]</dt>
<dd><a href="<$MTEntrylink$>"><$MTEntryTitle></a>
</dd>
</dl>
</MTEntriesWithSubCategories>

まず、<MTSetVarBlock>で変数としてカテゴリー名を定義して
<MTEntriesWithSubCategories category="$EntLabel" >で
カテゴリー毎に、そのカテゴリーの持つサブカテゴリー記事を表示と
しようとしたのですが、動作しません。

いろいろと、MTGetVarなどを入れてみたりしたのですが、、
どなたかこのような、使い方をされてる方がいましたら
アドバイスをいただければと思い質問させていただきました。

MTの基礎的な知識も浅はかなもので、恐縮です。
どうぞ、ご教授の程をお待ちしております。

A 回答 (6件)

ブログ記事リスト(カテゴリアーカイブページ)ではなく、ブログ記事(個別記事)に、現在のカテゴリのサブカテゴリのエントリを表示したい、ということでしょうか?



記載されているソースをブログ記事テンプレートに直接放り込んでみたのですが、<$MTStripeColor>はいいとして<$MTCategoryLabel$>でエラーが出たので、<MTEntryCategories>タグで<$MTCategoryLabel$>を囲んでみたら、一応現在のカテゴリとそのサブカテゴリのエントリタイトルが出てきましたけれども…。
    • good
    • 0
この回答へのお礼

はじめまして!ご回答ありがとうございます!
上記回答をいただきましたCHI-512様のお礼の文面にも書いたのですが、
(以下、タグが引用で申し訳ありません、、)

インデックスにカテゴリーを表示させているソースが

<!-- カテゴリーでわけた製品リストを表示 トップカテゴリのみ、フィルターでメインメーカー除去--><ul><MTTopLevelCategories><MTFilterCategories exclude="テスト"><MTEntries lastn="1"><li><a href="<$MTEntrylink$>"><$MTCategoryLabel$></a></li></MTEntries></MTFilterCategories></MTTopLevelCategories></ul>
<!--ここまで-->

こちらで書くカテゴリーの記事に飛ぶようにしてます。

アーカイブインデックス>ブログ記事 というテンプレートの中に

<!-- エントリー記事のみを読み込む -->
<div class="entry" id="entry-<$MTEntryID$>">
<h3><$MTEntryTitle$></h3><p><$MTEntryBody$></p>
</div>
でエントリータイトルと本文を表示して

その後に
<!-- サブカテゴリーのエントリー記事をを読み込む -->
<MTSetVarBlock name="EntLabel"><MTEntryCategories><$MTEntryCategory$></MTEntryCategories></MTSetVarBlock><MTEntriesWithSubCategories category="EntLabel"lastn="3"><dl style="background-color: <$MTStripeColor target="blogbody" oddcolor="#FFF4EA" evencolor="#FAFAFA"$>"><dt>[<$MTEntryDate format="%Y.%m.%d"$>]</dt><dd><a href="<$MTEntrylink$>"><$MTEntryTitle></a></dd></dl></MTEntriesWithSubCategories>

こちらで教えていただきました<$MTCategoryLabel$>の読み込みを
してみたのですが、、
こちらですと、やはり何も表示がされないようです。
カテゴリーの名称はいらず、サブカテゴリーのエントリーだけを
抜き出したいのですが、なかなか難しいのですね、、
上記にも書いたのですが猶予が後3日ですので、
もう少々検討をしてみようと思います。
ありがとうございます。

お礼日時:2008/01/11 20:28

こんにちは。



<MTEntryAdditionalCategories>
<h3><MTIfNonZero tag="MTCategoryCount"><a href="<MTCategoryArchiveLink>"><MTCategoryLabel></a><MTElse><MTCategoryLabel></MTElse></MTIfNonZero></h3>
<MTEntries>
<MTEntriesHeader>
<ul>
</MTEntriesHeader>
<li><a href="<MTEntryLink>"><MTEntryTitle></a></li>
<MTEntriesFooter>
</ul>
</MTEntriesFooter>
</MTEntries>
</MTEntryAdditionalCategories>

でサブカテゴリー&エントリーの一覧が出ます。
メインカテゴリーは出ません。

これで希望通りの表示が可能ですが、問題点があります。

(1)エントリーの表示数
上記ソースだと、エントリーの表示数は、ブログの設定>記事の表示数に左右されます。
表示数をコントロールしたい場合は、lastn="X"の属性値を追加してください。
(2)再構築されない
一番の問題点です。
MTはエントリーを投稿すると関連するアーカイブしか再構築してくれません。
商品Bを投稿しても、商品Aのページは再構築されません。
つまり、商品Aのページに表示したサブカテゴリー及びエントリーリストは、エントリー全体の再構築を行わない限り、商品Aを投稿した時のままということになります。

もし、ブログ全体をphp化しているのなら、
カテゴリー名とエントリーリストのみのカテゴリーアーカイブを追加して、そのファイルをインクルードすれば解決できますね。
また、再構築の必要もなくなります。

▼追加カテゴリーアーカイブ
----------
<MTEntries>
<MTEntriesHeader>
<h3><a href="<MTCategoryArchiveLink>"><MTCategoryLabel></a></h3>
<ul>
</MTEntriesHeader>
<li><a href="<MTEntryLink>"><MTEntryTitle></a></li>
<MTEntriesFooter>
</ul>
</MTEntriesFooter>
</MTEntries>
----------
アーカイブマッピングを、template/<MTCategoryBasename>.htmlで出力(例)
lastn="X"を指定しないと、カテゴリーアーカイブですから、そのカテゴリーが持つエントリー全てが並びます。お好みでlastnを設定して下さい。
また、アーカイブは否優先(チェックボックスをチェックしない)で。

▼ブログ記事テンプレート
以下をサブカテゴリー&エントリーリストを表示したい位置に追加
<MTEntryAdditionalCategories>
<? include("<MTBlogSitePath>template/<MTCategoryBasename>.html"); ?>
</MTEntryAdditionalCategories>


うまくいくはずですが、どうかなー…。
phpOKなら、下部分を、php駄目なら上部分をお試し下さい。
URLは貼る必要はありませんよ。
余計なトラブルは避けるに越したことはありません(^_^)

参考になれば幸いです。

この回答への補足

おはようございます。なるほどですね><
上記コードで呼び込みができました!ありがとうございます><
ただ、やはり再構築がされないのは、、PHPを使用するように
なるのですね。。。
PHPになってしまうと
担当外になってしまうので、、やはりこれは
PHPを導入するか、他の手を考えなければならないみたいです。

2週間という長い間、いろいろと、勉強になりました。
本当にありがとうございます。
ただ、まだ、MTに関しての知識不足が一番の原因なので
もう少し根本も踏まえて勉強してみたいとおもいます。
いろいろな見たことの無いタグを一つ一つ調べる楽しさや
覚えれたことがあります。
また、これを機会に苦手なMTを克服していきたいとおもいます。
いろいろと、また、質問にあらわれてしまいますが、、
これを機にCHI-512様と出会えたきっかけを
心から感謝しております。また、お話できる機会があれば
ぜひ!
ありがとうございました!

補足日時:2008/01/25 09:45
    • good
    • 0

こんにちは。


風邪は大丈夫でしょうか?
ん?ブログ記事テンプレートですか。
ブログ記事リストテンプレートを間違ってブログ記事テンプレートだと思っているのでは?と考えましたが、
実際、本当にブログ記事テンプレートのことでいいんですね?

情報を整理させて下さい。
商品Aがあります。
商品Aのメインカテゴリーが“雑貨”、
商品Aのサブカテゴリーが“シンプル”、“セール”、“白系”だとしましょう。

商品Aのページに、サブカテゴリー“シンプル”、“セール”、“白系”のエントリーを表示したいということですか?
    • good
    • 0
この回答へのお礼

CHI-512様 こんにちわ。
おかげさまで、だいぶよくなりました^^;
はい><
アーカイブテンプレートのブログ記事テンプレートです。
CHI-512さまがおっしゃるとおりの感じです。。
私のほうでも、もう一度整理して考えて見ます!
何度も本当にすみません。。

PS。
自分のMT練習用サイトですが
ちょっと情報の不具合がありまして
一度削除をしてますが、、
再構築をして、こちらにURLを貼っても
差し支えはないでしょうか?
OKWAVEさんの質問を始めてつかうので
度重なる質問、誠に申し訳ありません><

お礼日時:2008/01/23 10:11

こんにちは。

もう遅いかな…。
質問文や補足をよく読むに、サブカテゴリーのエントリーリストってこういうことをやりたいのでしょうか?

カテゴリーA
・カテゴリーa
・カテゴリーb
・カテゴリーc
だとしたら、

カテゴリーAのページに、
★カテゴリーa
・エントリー
・エントリー
・エントリー
★カテゴリーb
・エントリー
・エントリー
・エントリー
★カテゴリーc
・エントリー
・エントリー
・エントリー
と並べたい。

だとしたら、
<h2><MTCategoryLabel></h2>
<MTSubCategories>
<h3><MTIfNonZero tag="MTCategoryCount"><a href="<MTCategoryArchiveLink>"><MTCategoryLabel></a><MTElse><MTCategoryLabel></MTElse></MTIfNonZero></h3>
<MTEntries>
<MTEntriesHeader>
<ul>
</MTEntriesHeader>
<li><a href="<MTEntryLink>"><MTEntryTitle></a></li>
<MTEntriesFooter>
</ul>
</MTEntriesFooter>
</MTEntries>
<MTSubCatsRecurse max_depth="3">
</MTSubCategories>
でいけます(多分)
質問文のMTEntriesWithSubCategoriesに惑わされましたが、
よく考えると↑こっちなんじゃ…と思い直しました。
ただ、色々問題もあります。
親カテゴリーアーカイブは自動では再構築されないし、
カテゴリーの階層関係を綿密に表現したいと思ったら、MTHasParentCategoryとか使用してもっと複雑に分岐させなければなりません。
>親カテゴリーアーカイブの自動再構築
こちらはMTカスタマイズで超有名な小粋空間さんでカスタマイズ方法を見かけました。


また、的外れだったらごめんなさい!
でも的当たりだったら嬉しい!頑張って!
    • good
    • 0
この回答へのお礼

こんばんわ!
度々回答をいただいて、レスが遅くなってしまい申し訳ありませんでした。風邪をこじらせておりました><

おっしゃるとおりで、カテゴリーAがサブカテゴリーの名前がでるようにしたいのです。



エントリーの表示ページ
(いじるテンプレートは「ブログ記事テンプレート」です)

カテゴリーAのページに、
★サブカテゴリーa
・エントリー
・エントリー
・エントリー
★サブカテゴリーb
・エントリー
・エントリー
・エントリー
★サブカテゴリーc
・エントリー
・エントリー
・エントリー
というかんじです。

上の教えていただいたものも試してみたのですが
<h2><MTCategoryLabel></h2>
ブログ記事のテンプレートでいじっていますので、
<h2><MTCategoryLabel></h2>だけですと
エラーがでてしまうので、
<MTCategories><h2><MTCategoryLabel></h2></MTCategories>
としてみたのですが
やはりこちらですと、カテゴリーで登録しているもの全てを拾ってきて

<MTSubCategories>
<h3><MTIfNonZero tag="MTCategoryCount"><a href="<MTCategoryArchiveLink>"><MTCategoryLabel></a><MTElse><MTCategoryLabel></MTElse></MTIfNonZero></h3>
<MTEntries>
<MTEntriesHeader>
<ul>
</MTEntriesHeader>
<li><a href="<MTEntryLink>"><MTEntryTitle></a></li>
<MTEntriesFooter>
</ul>
</MTEntriesFooter>
</MTEntries>
<MTSubCatsRecurse max_depth="3">
</MTSubCategories>

なので上のように書き直したのですが、
やはり、カテゴリーと、そのサブカテゴリーの記事を
最新のものからミックスして拾ってしまうようです。
いろいろといじったりしてみたのですが、
やはりサブカテゴリー名をタイトルとして
サブカテゴリーに属する記事のみ拾うのは難しいみたいですね。。

引き出したいサブカテゴリーをBlogとして立ち上げて拾ったほうのが
懸命でしょうか?

私事なのに、度重なるご回答をいただきまして
誠に感謝しております。

お礼日時:2008/01/19 01:48

>インデックスにカテゴリーを表示させているソースが(中略)こちらで書くカテゴリーの記事に飛ぶようにしてます。



カテゴリアーカイブページ(ブログ記事リスト)じゃなく、個別記事(ブログ記事)に直接飛ぶようにされてるんですね…
<MTEntryCategories>タグで<$MTCategoryLabel$>を囲むというのは

<MTEntryCategories>
<MTSetVarBlock name="EntLabel"><$MTCategoryLabel$></MTSetVarBlock></MTEntryCategories>
<MTEntriesWithSubCategories category="$EntLabel" lastn="3">
<dl>
<dt>[<$MTEntryDate format="%Y.%m.%d"$>]</dt>
<dd><a href="<$MTEntrylink$>"><$MTEntryTitle></a>
</dd>
</dl>
</MTEntriesWithSubCategories>

これで個別記事のページに現在のカテゴリとそのサブカテゴリのエントリタイトルが表示されると思うんですけど…
現在のカテゴリのエントリは多分余計なんだろうなと思いつつ、方法がすぐに思いつかないので他の方にお願いしたく(^^;
    • good
    • 0
この回答へのお礼

Muller3様
たびたびのご回答本当にありがとうございます。
そうなんです、、
>現在のカテゴリのエントリは多分余計なんだろうなと思いつつ
エントリーにはその記事自体を含みたくないのですが
なかなかサブカテゴリーというのは
引き出すのが難しいみたいですね><
<MTEntryCategories>
<MTSetVarBlock name="EntLabel"><$MTCategoryLabel$></MTSetVarBlock></MTEntryCategories>
<MTEntriesWithSubCategories category="$EntLabel" lastn="3">
<dl>
<dt>[<$MTEntryDate format="%Y.%m.%d"$>]</dt>
<dd><a href="<$MTEntrylink$>"><$MTEntryTitle></a>
</dd>
</dl>
</MTEntriesWithSubCategories>

こちらに、そのエントリーは表示しないのような
プラグインかなにかがあれば実現できそうですね!
いちどそういった方向でも探してみたいと思います!
ありがとうございました!

お礼日時:2008/01/13 17:02

こんにちは。


カテゴリーアーカイブでは、自動的にそのカテゴリーのエントリーが抽出されるので、MTEntriesWithSubCategoriesにcategory=""は要らないはずです。
<MTEntriesWithSubCategories lastn="3">で大丈夫だと思います。

・・・的外れかな?
    • good
    • 0
この回答へのお礼

はじめまして!ご回答ありがとうございます!
まず、インデックスにカテゴリーを表示させているソースが

<!-- カテゴリーでわけた製品リストを表示 トップカテゴリのみ、フィルターでメインメーカー除去--><ul><MTTopLevelCategories><MTFilterCategories exclude="テスト"><MTEntries lastn="1"><li><a href="<$MTEntrylink$>"><$MTCategoryLabel$></a></li></MTEntries></MTFilterCategories></MTTopLevelCategories></ul>
<!--ここまで-->

こちらで書くカテゴリーの記事に飛ぶようにしてます。

アーカイブインデックス>ブログ記事 というテンプレートの中に

<!-- エントリー記事のみを読み込む -->
<div class="entry" id="entry-<$MTEntryID$>">
<h3><$MTEntryTitle$></h3><p><$MTEntryBody$></p>
</div>
でエントリータイトルと本文を表示して

その後に
<!-- サブカテゴリーのエントリー記事をを読み込む -->
<MTEntriesWithSubCategories lastn="3"><dl style="background-color: <$MTStripeColor target="blogbody" oddcolor="#FFF4EA" evencolor="#FAFAFA"$>"><dt>[<$MTEntryDate format="%Y.%m.%d"$>]</dt><dd><a href="<$MTEntrylink$>"><$MTEntryTitle></a></dd></dl></MTEntriesWithSubCategories>

と、教えていただいたように、削ってみたのですが、
なぜか、カテゴリーが4個あるなかで、一種類のカテゴリーを読み込もうと
してしまいます。
F5でリロードをかけたりもしてみたのですが
変化がありませんでした。
まだ、はじめたばかりなのでブロック単位のタグとかの区別も
うまく出来てないですが、
今回のご回答をいただいただけでもうれしくおもいます。
本当にありがとうございます。
ここ3日で仕上げなければならないので、
再度いろいろな面から検証をしてみようとおもいます。

お礼日時:2008/01/11 20:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!