「カテゴリ/フォルダ/ブログ記事/ウェブページを並べ替えるプラグイン」の第4回目として、並び順どおりにカテゴリ/フォルダ/ブログ記事/ウェブページを出力するテンプレートタグ等を解説します。
1.MTSortedEntriesタグ
ブログ記事を並び順に沿って出力するには、「MTSortedEntries」というブロックタグを使います。
このタグは、以下のようにブログ記事を出力します。
| 条件 | 出力されるブログ記事 |
|---|---|
|
個々のカテゴリに属するブログ記事を並び順に出力します。 |
|
どのカテゴリにも属さない記事を並び順に出力します。 |
また、MTSortedEntriesタグでは、lastnモディファイアを使って、出力する記事の数を制限することもできます。
このモディファイアを指定しない場合は、ブログ記事設定(ブログのメニューの「設定」→「ブログ記事」)の「ブログ記事の表示数」で指定した数の記事が出力されます。
また、「lastn="all"」とすると、すべての記事を出力することができます。
MTSortedEntriesタグのブロックの中では、MTEntry系のタグを使って、ブログ記事の情報を出力することができます。
2.MTSortedPagesタグ
MTSortedEntriesタグのウェブページ版です。
MTSortedEntriesタグの説明を、以下のように読み替えた動作をします。
| 読み替え前 | 読み替え後 |
|---|---|
| カテゴリ | フォルダ |
| ブログ記事 | ウェブページ |
| Categories | Folders |
| Entries | Pages |
| Entry | Page |
3.sort_methodモディファイア
カテゴリとフォルダの並べ替えは、従来のプラグインと同様に、MTSubCategories/MTTopLevelCategories/MTSubFolders/MTTopLevelFoldersタグに「sort_method="SortCatFld::Sort"」のモディファイアを付加することで行います。
4.例
以下の例は、ブログ内のすべての記事を、並び順のとおりに出力するものです。
インデックステンプレートを作成して以下の例を入力すると、動作を試すことができます。
<MTIgnore>カテゴリに属さないブログ記事を並び順のとおりに出力</MTIgnore> <h1>カテゴリに属さないブログ記事</h1> <ul> <MTSortedEntries lastn="all"> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle></a>(<$MTEntryDate format="%x %X">)</li> </MTSortedEntries> </ul> <MTIgnore>各カテゴリのブログ記事を並び順のとおりに出力</MTIgnore> <MTTopLevelCategories sort_method="SortCatFld::Sort"> <h1><MTParentCategories glue=":"><$MTCategoryLabel$></MTParentCategories></h1> <ul> <MTSortedEntries lastn="all"> <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle></a>(<$MTEntryDate format="%x %X">)</li> </MTSortedEntries> </ul> <MTSubCatsRecurse> </MTTopLevelCategories>










コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
いつもお世話になっております。
「MTEntries」タグでは、「__first__」・「__last__」・「__odd__」・「__even__」等の変数が使えると思いますが、「MTSortedEntries」等のタグでも使用できるようにはならないでしょうか?
>J Wolfさん
こんにちは。
すでに、MTSortedEntriesタグの中でも、変数を使えるようにしてあります。
そちらではうまく動作しなかったということでしょうか?
>すでに、MTSortedEntriesタグの中でも、変数を使えるようにしてあります。
>そちらではうまく動作しなかったということでしょうか?
申し訳ありませんでした。
変数が使用できることを確認いたしました。
変数のスペル間違いでもしていたのでしょうか?私の不注意で貴重なお時間を無駄にさせてしまい、大変申し訳ありませんでした。
今後ともご指導いただけますよう、お願いいたします。
ありがとうございました。
>すでに、MTSortedEntriesタグの中でも、変数を使えるようにしてあります。
>そちらではうまく動作しなかったということでしょうか?
申し訳ありませんでした。
変数が使用できることを確認いたしました。
変数のスペル間違いでもしていたのでしょうか?私の不注意で貴重なお時間を無駄にさせてしまい、大変申し訳ありませんでした。
今後ともご指導いただけますよう、お願いいたします。
ありがとうございました。
こんにちは、お世話になっております。
ウェブページを並び順のとおりに一覧で
出力する表記の例はありませんでしょうか?
上記の「2.MTSortedPagesタグ」を見て試してみたのですが、
上手くいかないのです。
大変お手数ですが、よろしくお願いいたします。
>TOKIさん
こんにちは。
本文の「4.例」に挙げた例で、以下のように置換を行えば、ウェブページ用の例になります。
・「Entries」を「Pages」に置換
・「Entry」を「Page」に置換
・「Categories」を「Folders」に置換
・「Category」を「Folder」に置換
壱さん、早速の回答ありがとうございます。
今まで「各カテゴリのブログ記事を並び順のとおりに出力」だけを直して入れていました。
「カテゴリに属さないブログ記事を並び順のとおりに出力」を直して入れたら、上手く行きました。
お手数をお掛けいたしました、ゴメンナサイm(__)m
ウィジェットで、以下のように組んだときになぜかエラーが出ます。「sort_method="SortCatFld::Sort」を外せば正常に構築できるのですが……。「sort_method」を残して「MTSubCatCount」を消してもエラーになりました。
<mt:IfArchiveTypeEnabled archive_type="Category">
<div class="widget-archive widget-archive-category widget">
<h3 class="widget-header">カテゴリ</h3>
<div class="widget-content">
<mt:TopLevelCategories sort_method="SortCatFld::Sort">
<mt:SubCatIsFirst>
<ul class="widget-list">
</mt:SubCatIsFirst>
<mt:If tag="CategoryCount">
<li class="widget-list-item"><a href="<$mt:CategoryArchiveLink$>"<mt:If tag="CategoryDescription"> title="<$mt:CategoryDescription remove_html="1" encode_html="1"$>"</mt:If>><$mt:CategoryLabel$> (<$MTSubCatCount$>)</a>
<mt:Else>
<li class="widget-list-item"><$mt:CategoryLabel$>
</mt:If>
<$mt:SubCatsRecurse$>
</li>
<mt:SubCatIsLast>
</ul>
</mt:SubCatIsLast>
</mt:TopLevelCategories>
</div>
</div>
</mt:IfArchiveTypeEnabled>
書き忘れていましたが、MT5環境で1.10β1を使用したときのエラーとなります。
>教官さん
こんにちは。
ご質問の件ですが、いただいたウィジェットをこちらで試した限りでは、エラーは発生しませんでした。
ただし、「MTSubCatCount」というテンプレートタグはないので、そこはMTCategoryCountに変えました。
申し訳ありませんが、原因は不明です。
その後、プラグイン設定から「カテゴリとブログ記事の並び順の初期化」を実施したのですが、初期化中にエラーが出て初期化できませんでした。情報が壊れている気がします。
手作業でMySQLのデータを削除するなどして、カテゴリのソート情報を初期化することはできないのでしょうか?
>教官さん
こんにちは。
ソート情報を削除する前に、まずデータベースを必ずバックアップして、不測の事態に備えてください。
また、ソート情報を削除してやり直したとしても、それ以外のところに問題の原因があることもあり得ますので、その点もご承知おきください。
削除の手順は以下の通りです。
1.mt_entryテーブルの「entry_order_number」フィールドを削除します。
2.mt_placementテーブルの「placement_order_number」フィールドを削除します。
3.mt_categoryテーブルの「category_order_number」フィールドを削除します。
4.mt_configテーブルを操作する状態にします。
5.テーブルにレコードが1つだけあるはずですので、そのレコードを編集する状態にします。
6.config_dataフィールドから「PluginSchemaVersion super_sort=1.00」の部分を削除して、レコードを保存しなおします。
とりあえず教えていただいたSQLのデータを削除し、SuperSortを再インストールしたのですが、管理画面の「ブログ記事とカテゴリの並び替え」を選択し改めてソート順を設定し直そうとしても、カテゴリ一覧などが正常に表示されないという状態になりました。ブログのエントリ数が2000近く、多すぎるためかもしれません。
仕方がないのでSortCatFldのMT5版のほうを使用して、カテゴリの並べ替えだけ使用するようにしました。現在の所正常に動作しております。
色々とお手数おかけしました。