お知らせ

Movable Type 5.1 プロの現場の仕事術2011年6月30日

Movable Type 5.1 プロの現場の仕事術」が発売されました。
Movable Type 5.1の基本から、スマートフォン用サイトの作成、管理画面のカスタマイズなど、まさにプロの方のために書かれたMovable Type 5.1の解説書です。
Movable Typeでサイト制作をされている皆様はぜひお買い求めください。

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

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

| コメント(22) | トラックバック(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モディファイア

カテゴリとフォルダを並べ替えて出力するには、Movable Typeの標準のテンプレートタグを、それぞれ以下のように置き換えます。

Movable Typeの標準のタグ対応するSuperSortプラグインのタグ
MTTopLevelCategoriesMTSortedTopLevelCategories
MTSubCategoriesMTSortedSubCategories
MTTopLevelFoldersMTSortedTopLevelFolders
MTSubFoldersMTSortedSubFolders

なお、SortCatFldプラグインと同様に、MTSubCategories/MTTopLevelCategories/MTSubFolders/MTTopLevelFoldersタグに「sort_method="SortCatFld::Sort"」のモディファイアを付加することもできます。
ただし、Movable Type 5.1の最初のバージョンでは、sort_methodモディファイアに不具合があります。
特に事情がない限りは、MTSortedTopLevelCategories等のタグをお使いください。

4.例

以下の例は、ブログ内のすべての記事を、並び順のとおりに出力するものです。
インデックステンプレートを作成して以下の例を入力すると、動作を試すことができます。

<MTIgnore>カテゴリに属さないブログ記事を並び順のとおりに出力</MTIgnore>
<h1>カテゴリに属さないブログ記事</h1>
<ul>
<MTSortedEntries lastn="all">
  <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle></a>(<$MTEntryDate format="%x %X">)</li>
</MTSortedEntries>
</ul>

<MTIgnore>各カテゴリのブログ記事を並び順のとおりに出力</MTIgnore>
<MTSortedTopLevelCategories>
<h1><MTParentCategories glue=":"><$MTCategoryLabel$></MTParentCategories></h1>
<ul>
<MTSortedEntries lastn="all">
  <li><a href="<$MTEntryPermalink$>"><$MTEntryTitle></a>(<$MTEntryDate format="%x %X">)</li>
</MTSortedEntries>
</ul>
<MTSubCatsRecurse>
</MTSortedTopLevelCategories>

Facebook連携

当記事について「いいね」や「送信」を行っていただけると幸いです。


この記事についてウォールに投稿

トラックバック(1)

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

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

コメント(スレッド8件,コメント22件)

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

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版のほうを使用して、カテゴリの並べ替えだけ使用するようにしました。現在の所正常に動作しております。
色々とお手数おかけしました。

No.15 mayona : (無題)

導入検討中で検証しています。(5.06)
「MTSortedEntries」タグの説明に、「どのカテゴリにも属さない記事を並び順に出力します。」とありました。
すべての記事が何らかのカテゴリーに属している場合で、カテゴリーの所属関係無く、任意の並び順にしたい場合は、
どういった記述になりますか。
何の指定もしないMTEntriesに任意のソートを掛けるシンプルな形を実現したいです。

高機能故の把握不足かと思いますが、ご教授いただきたく。

No.16  : (無題)

>mayonaさん
こんにちは。

申し訳ありませんが、ご希望のような機能はありません。

No.17 mayona : (無題)

壱さま
早速ありがとうございます!
「記事の並び替えが可能」から「任意の順番に変更できる」と安易に考えてしまっていました。
順番の変更はあくまでカテゴリー順に紐づいたものだという事ですね。
カテゴリーと記事の順番が密に関わり合う要件では打って付けです。

ただ、シンプルな形を実現するものではない事はちょっと意外でした。(並び順に困ったらこれしかないと思っていたので)
普通に並び順を変更する機能は本家にも世のplとしても現状では存在していないという事になるかと思いますが、
策は今のところないのでしょうか。

No.18  : (無題)

>mayonaさん
こんにちは。

PowerCMSなら、ブログ記事を任意にグループ化して並べ替える機能があります。
予算が許すのであれば、PowerCMSをお勧めします。

http://alfasado.net/contents/power_cms/itemgroup.html

No.19  : (無題)

>mayonaさん
こんにちは。

仮にSuperSortで行うとすれば、並べ替え専用のカテゴリを1つ追加して、すべてのブログ記事をそのカテゴリにも所属させ、そのカテゴリの中で並べ替えるという荒業(?)もあります。

No.20 mayona : (無題)

壱さま
ありがとうございます!

PowerCMSの方もグルーピングして並び替えみたいな感じなので、
ニュアンスとしてはカテゴライズしているような印象を受けました。
どうであれ価格的に導入はできませんが。。。

専用カテゴリという策も無きにしもあらずです。(出力の制御がやや手間ですが)
アイデアありがとうございます。

「シンプルな並び替えは不可」という新たな発見。
大きな収穫です。
他のCMSではこのへんをどうしているのか気になってきましたが、
いつかMTのデフォルトでできるといいですね。

No.21 mayona : (無題)

お世話になります。
pl専用タグのモディファイアについて確認させてください。
MTSortedTopLevelCategoriesでshow_empty="0"を使いたいのですが、動いていないようでした。
私の使用法が誤っている可能性もあるので、使えるか否かを確認したいです。
MTTopLevelCategoriesやMTSubCategoriesはshow_empty="0"が機能するようです。

No.22  : (無題)

>mayonaさん
こんにちは。

show_emptyモディファイアはMTTopLevelCategoriesタグやMTTopLevelCategoriesタグでは使えません。MTCategoriesタグでのみ使うことができます。
また、MTSortedTopLevelCategoriesタグやMTSortedSubCategoriesタグは、内部的にMTTopLevelCategoriesタグやMTTopLevelCategoriesタグの処理を呼び出していますので、show_emptyモディファイアは使えないことになります。

No.23 mayona : (無題)

ありがとうございます!
MTTopLevelCategoriesタグでは使えないんですね。
使えるという記事があって鵜呑みにしてしまいました。すみません。。。

MTTopLevelCategoriesタグ内で
カテゴリ一覧表示時に記事を内包しない場合のカテゴリー非表示は、記事数を調べて表示/非表示させるように処理します。

コメントする


Facebookでコメント

試験的にFacebookのコメントフォームを設置しました。