お知らせ

Movable Type 5実践テクニック2010年3月26日

Movable Type 5実践テクニック」が発売されました。
実際的なWebサイト製作事例を通して、テーマと複数ブログ活用を中心に、Movable Type 5の実践的な使いこなし方を解説しています。
Movable Typeでサイト制作をされている皆様はぜひお買い求めください。

他にも多数書籍を執筆しています。
こちらもぜひご覧ください。

カテゴリ/フォルダ/ブログ記事/ウェブページを並べ替えるプラグインβ版(その4)

| コメント(13) | トラックバック(1)

「カテゴリ/フォルダ/ブログ記事/ウェブページを並べ替えるプラグイン」の第4回目として、並び順どおりにカテゴリ/フォルダ/ブログ記事/ウェブページを出力するテンプレートタグ等を解説します。

1.MTSortedEntriesタグ

ブログ記事を並び順に沿って出力するには、「MTSortedEntries」というブロックタグを使います。
このタグは、以下のようにブログ記事を出力します。

条件 出力されるブログ記事
  • MTCategoriesタグ/MTSubCategories/MTTopLevelCategoriesタグ等のブロックの中で使った場合
  • カテゴリアーカイブの中で使った場合
個々のカテゴリに属するブログ記事を並び順に出力します。
  • 上記以外の場合
  • 上記の条件を満たしていても、「root="1"」のモディファイアを指定した場合
どのカテゴリにも属さない記事を並び順に出力します。

また、MTSortedEntriesタグでは、lastnモディファイアを使って、出力する記事の数を制限することもできます。
このモディファイアを指定しない場合は、ブログ記事設定(ブログのメニューの「設定」→「ブログ記事」)の「ブログ記事の表示数」で指定した数の記事が出力されます。
また、「lastn="all"」とすると、すべての記事を出力することができます。

MTSortedEntriesタグのブロックの中では、MTEntry系のタグを使って、ブログ記事の情報を出力することができます。

2.MTSortedPagesタグ

MTSortedEntriesタグのウェブページ版です。
MTSortedEntriesタグの説明を、以下のように読み替えた動作をします。

読み替え前読み替え後
カテゴリフォルダ
ブログ記事ウェブページ
CategoriesFolders
EntriesPages
EntryPage

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>

トラックバック(1)

トラックバックURL: http://www.h-fj.com/mt/mt-tb.cgi/1505.

便利なブラグインSuperSort、ウェブページ・カテゴリーを自由に並び替えるこ... 続きを読む

コメント(スレッド3件,コメント13件)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。

No.1 J Wolf : 変数について

いつもお世話になっております。


「MTEntries」タグでは、「__first__」・「__last__」・「__odd__」・「__even__」等の変数が使えると思いますが、「MTSortedEntries」等のタグでも使用できるようにはならないでしょうか?

No.2  : Re:変数について

>J Wolfさん
こんにちは。

すでに、MTSortedEntriesタグの中でも、変数を使えるようにしてあります。
そちらではうまく動作しなかったということでしょうか?

No.3 J Wolf : (無題)

>すでに、MTSortedEntriesタグの中でも、変数を使えるようにしてあります。
>そちらではうまく動作しなかったということでしょうか?

申し訳ありませんでした。

変数が使用できることを確認いたしました。

変数のスペル間違いでもしていたのでしょうか?私の不注意で貴重なお時間を無駄にさせてしまい、大変申し訳ありませんでした。

今後ともご指導いただけますよう、お願いいたします。

ありがとうございました。

No.4 J Wolf : (無題)

>すでに、MTSortedEntriesタグの中でも、変数を使えるようにしてあります。
>そちらではうまく動作しなかったということでしょうか?

申し訳ありませんでした。

変数が使用できることを確認いたしました。

変数のスペル間違いでもしていたのでしょうか?私の不注意で貴重なお時間を無駄にさせてしまい、大変申し訳ありませんでした。

今後ともご指導いただけますよう、お願いいたします。

ありがとうございました。

No.5 TOKI : ウェブページ

こんにちは、お世話になっております。

ウェブページを並び順のとおりに一覧で
出力する表記の例はありませんでしょうか?

上記の「2.MTSortedPagesタグ」を見て試してみたのですが、
上手くいかないのです。
大変お手数ですが、よろしくお願いいたします。

No.6  : Re:ウェブページ

>TOKIさん
こんにちは。

本文の「4.例」に挙げた例で、以下のように置換を行えば、ウェブページ用の例になります。

・「Entries」を「Pages」に置換
・「Entry」を「Page」に置換
・「Categories」を「Folders」に置換
・「Category」を「Folder」に置換

No.7 TOKI : (無題)

壱さん、早速の回答ありがとうございます。

今まで「各カテゴリのブログ記事を並び順のとおりに出力」だけを直して入れていました。
「カテゴリに属さないブログ記事を並び順のとおりに出力」を直して入れたら、上手く行きました。

お手数をお掛けいたしました、ゴメンナサイm(__)m

No.8 教官 : Widgetで使用したときにエラー

ウィジェットで、以下のように組んだときになぜかエラーが出ます。「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>

No.9 教官 : (無題)

書き忘れていましたが、MT5環境で1.10β1を使用したときのエラーとなります。

No.10  : Re:Widgetで使用したときにエラー

>教官さん
こんにちは。

ご質問の件ですが、いただいたウィジェットをこちらで試した限りでは、エラーは発生しませんでした。
ただし、「MTSubCatCount」というテンプレートタグはないので、そこはMTCategoryCountに変えました。
申し訳ありませんが、原因は不明です。

No.11 教官 : (無題)

その後、プラグイン設定から「カテゴリとブログ記事の並び順の初期化」を実施したのですが、初期化中にエラーが出て初期化できませんでした。情報が壊れている気がします。
手作業でMySQLのデータを削除するなどして、カテゴリのソート情報を初期化することはできないのでしょうか?

No.12  : (無題)

>教官さん
こんにちは。

ソート情報を削除する前に、まずデータベースを必ずバックアップして、不測の事態に備えてください。
また、ソート情報を削除してやり直したとしても、それ以外のところに問題の原因があることもあり得ますので、その点もご承知おきください。

削除の手順は以下の通りです。

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」の部分を削除して、レコードを保存しなおします。

No.13 教官 : (無題)

とりあえず教えていただいたSQLのデータを削除し、SuperSortを再インストールしたのですが、管理画面の「ブログ記事とカテゴリの並び替え」を選択し改めてソート順を設定し直そうとしても、カテゴリ一覧などが正常に表示されないという状態になりました。ブログのエントリ数が2000近く、多すぎるためかもしれません。
仕方がないのでSortCatFldのMT5版のほうを使用して、カテゴリの並べ替えだけ使用するようにしました。現在の所正常に動作しております。
色々とお手数おかけしました。

コメントする