用語一覧ページを下記のように作りたいと思っているのですが、うまくいきません。。
ブログ記事のnameと言うカスタムフィールドに入力されたキーワードを、かな、漢字、カタカナ問わず50音順に並べ、
さらに"あかさたなはまやらわ"のカテゴリにまとめようとしています。
あ
┣ice
┣あか
┣飴
か
┣柿
┣カメ
まず、nameのふりがなを、huriganaと言うカスタムフィールドに入力し、
categoryと言うフィールドのラジオボタンで、"あかさたなはまやらわ"の中から
該当の文字にチェックを入れカテゴリ分けさせようとしています。
下記サイトを参考にしていますが、最初の"あ"の見出しの後に全てのリストが出てきてしまいました。。
ちなみにカテゴリとカテゴリ説明は既に使用しているため使えません。
参考サイト:<a href="http://wp.mersy.jp/?p=236" target="_blank">http://wp.mersy.jp/?p=236</a><MTEntries sort_by="hiragana" sort_order="ascend">
<MTSetVarBlock name="push(letter)"><MTcategory></MTSetVarBlock>
</MTEntries>
<$MTSetVar name="i" value="0"$>
<MTEntries sort_by="hiragana" sort_order="ascend">
<$MTVar name="letter" index="$i" setvar="letternow"$>
<$MTVar name="i" op="-" setvar="x"$>
<$MTVar name="letter" index="$x" setvar="letterprev"$>
<MTIf name="__first__">
<h2><$MTVar name="letternow"$></h2>
<ul>
<MTElseIf name="letternow" ne="$letterprev">
</ul>
<h2><$MTVar name="letternow"$></h2>
<ul>
</MTIf>
<li><a href="<$MTEntryPermalink$>"><MTname></a></li>
<MTIf name="__last__">
</ul>
</MTIf>
<$MTSetVar name="i" op="++"$>
</MTEntries>
<MTElse>
複雑で申し訳ありませんが、ご教授いただけますでしょうか。。
よろしくお願いします。

記事が古い上に参考になっていないようでスミマセン。
ちょっと書かれたソース見てみますね。
多分、みたいになっているということですよね?
実際のコードは間違っていないかもしれませんが、ひとまず最初の所は「hiragana」というカスタムフィールドとのことなので、
こんな感じになるんじゃないでしょうか?
実際のテンプレートは正しいかもしれないので一応ですが、その後のところにある
ここもcustomfieldでの値にソートする様にsort_byが違うかもしれないですね。
現在出力されているHTMLも抜粋でもあるとわかりやすいです。
「Movable Typeのカテゴリリストにダミーの親カテゴリを表示する」(http://www.koikikukan.com/archives/2011/09/05-015555.php)
で説明されているような、一旦ハッシュに突っ込んでループで取り出す方法もありますよ。
たしかにその方がスマートかもしれないですね。
まーしーさん、guimihanuiさんコメントありがとうございます。
カテゴリとカテゴリの説明欄は既に別で使用しているので、
使うことができません。。
まーしーさんの方法で修正をしたところ表示できたのですが、
さらにキーワードというカスタムフィールドで、"ゲスト"が選択されている記事だけを表示させたいのですが、
上記のように入力したところ"あかさたな"の見出しが表示されなくなってしまいました。。
出力されているHTMLはまーしーさんのご指摘の通りリスト表示する予定です。
すみませんがご教授いただけますでしょうか。。
>さらにキーワードというカスタムフィールドで、"ゲスト"が選択されている記事だけを表示させたいのですが、
とのことなのですが、キーワードというカスタムフィールドの形式は何になりますか?
MTタグはMTkeywordsという指定になっているということですよね?
はい、MTタグはになります。
形式はラジオボタンになります。複数選択肢がある中で、
ゲストを選んだブログ記事になります。
ソースの全体をはっていただけるとわかりやすいのですが、
の部分を
で囲んで
という感じになっているという認識であっていますか?
たとえばそのキーワードというカスタムフィールドに入っている値をみてみるために
等としてみた場合、ちゃんとそのキーワードカスタムフィールドの値は出力されています??
はい、認識は合っています。
<li><a href="<$MTEntryPermalink$>"><MTname></a>:<MTKeywords></li>
</MTIf>
とした場合、値はちゃんと出力されています。
ただ見出しが先にきている名前の見出ししか表示されていません。
このような表示になっています。
あ、ごめんなさい、そもそもなのですが、
みたいなかんじで、2箇所あるMTEntriesの方で先にフィルタリングをかけてあげればいいようなきがしますがどうでしょう?
こんなかんじとかで。
ご指示いただいた通りにしたところ、ゲストの記事が10件しか出てこなかったので
(おそらく設定の10件表示がきいていると思います)
としたところ、全件でてきました!
これで問題なさそうです!お付き合いいただいて本当にありがとうございました!
度々本当にすみません。。もし可能ならなのですが、
ページ上部に各見出しへのリンク(アンカー)を張れたら
理想的なのですが、、わかりますでしょうか。。
"あ〜わ"までの見出しがあり、"あ"をクリックすると"あ"の見出しのところにページ内リンクするイメージです。。
できていたと思ったのですが、
の、MTEntries lastn="0"と記述してしまうと、
50音順にならなくなってしまい、最新記事順になってしまいました。。
何も入れないと、設定の10件がきいてしまい、10件を0件にしたり、
と入力してみたりもしたのですが、最新記事順になってしまいます。。
ページ内アンカーについては
と入力をさせたところ、うまくいきました!
lastn="9999"とかにしてみるとか
もしくはlimit="N"をつかえばよさそうなきがしますがどうでしょう?
MTEntries | テンプレートタグリファレンス
http://www.movabletype.jp/documentation/appendices/tags/entries.html
今気づいたのですが、lastn="9999"で全件表示はできたのですが
その前に、それとは関係なくあいうえお順ではなく、最新記事順に並んでいました。。
field:keywords="ゲスト"が優先されてしまっているようです。。何かわかりますでしょうか。。
limit="N"
でもいかないということです?
limit="N"だとフィールドにチェックをいれていない記事の最新10件が並んでしまいます
スミマセン、一度MTのソース的にどうなっているか貼ってみていただいてもいいです??
現状のソースを貼ります。よろしくお願いします。
ソースには件数の指定が入っていないようですが、limitの場合何件を指定されました?
limitは全件表示させたいので、0や9999など試しましたが思い通りになりませんでした
なるほどなるほど。
思い通りにならなかったというのはlimit="999"でも最新順になったということであっています?
それとも「チェックをいれていない記事」が表示された感じですか?一応確認ですが、この「チェック」は「キーワード」というラジオボタンのカスタムフィールドのゲスト以外ということですよね?
書かれたMTテンプレートとはき出されているソースがどうなっているのかこちらは想像しているのみなのでずれていると無駄なので具体的に書いていただくとかしていただけると少しはわかるかもです。。。
関係無いかもしれないですが、貼っていただいたソースの最後のMTElseは何用ですか?
limit="999"の場合はカスタムフィールドのゲスト以外が一番上に並んでいて、その下にゲストの記事が並んでいます。
順序は昇順(古い記事が一番上)になっています。
ソースの最後のMTElseは参考にしたサイトに張ってあったので、そのままにしていましたが不要です。
りんご
キウイ
パイナップル
桃
か
┣柿
┣カメ
ま
┣豆
あ
┣ice
┣あか
┣飴
現状こんな並びで、本当であれば下のようになってほしいのです。
あ
┣ice
┣あか
┣飴
か
┣柿
┣カメ
ま
┣豆
りんご
キウイ
パイナップル
桃
MTEntries field:keywords="ゲスト"
のフィルタリングがうまく動いていないみたいな気がするのですが、上に書かれているこうなってほしい側ので
「あ」
から
「桃」
までをこのソース1つで再現しようとしています??
りんご〜桃
はなんか表示内容が違うみたいですが現状のコードだとそもそもこうならない様な気がしますがどうでしょう??
りんご〜桃までは、ゲストではない記事です。
ソース側はこのようになっています。
か
ま
あ
間違えました、もう一度貼り付けます
すみません、エンコードできていなかったのですが、
になります。ゲストのチェックが入っていないものが出ているのは少々謎なのでそこはどの指定が引っかかっているのか見る必要があるかと思いますが、guimihanuiさんが書かれているようにハッシュでやってもいいかもしれません。
<mt:Entries field:keywords="ゲスト"> <$mt:category setvar="letter"$> <mt:SetVarBlock name="list{$letter}" append="1"> <li><a href="hoge"><$mt:name$></a></li> </mt:SetVarBlock> </mt:Entries> <mt:loop name="list"> <h2><mt:GetVar name="__key__"></h2> <ul><mt:GetVar name="__value__"></ul> </mt:loop>件数とkeywordsのフィルタリングがきいているのかどうかは一度単純なコードを出力してみる必要がありそうです。