タグをランク順に並べ替える
Movable Type 4.1では、2008年2月現在では、MTTagsブロックタグのモデファイアであるsort_by="rank"ですが、ランク順に並ばないようです。
コード1(MTTags sort_by="rank")
このコードでは、タグはランク順に並ばないようです。以下では「タグのついたエントリ数:タグランク:タグラベル」というフォーマットでデータを作成し、リストを作成しています。
<ul>
<MTTags sort_by="rank">
<li><MTTagCount>:<MTTagRank zero_pad="4">:<MTTagName></li>
</MTTags>
</ul>
このエントリにコード1を貼った動作サンプル
- 2:0006:.htaccess
- 0:0000:About
- 2:0006:Advantage
- 1:0006:Apache
- 2:0006:Archive
- 23:0003:Asset
- 5:0005:Author
- 1:0006:Authority
- 1:0006:AutoSave
- 2:0006:BackUp
- 1:0006:body
- 2:0006:Bug
- 13:0004:Calc
- 21:0003:Category
- 2:0006:Check
- 1:0006:CMS
- 5:0005:Comment
- 1:0006:Company Site
- 22:0003:Config
- 1:0006:Contact
- 10:0004:CORESERVER
- 2:0006:count
- 3:0005:Create
- 1:0006:Creative Commons
- 10:0004:CSS
- 3:0005:Custom Field
- 2:0006:Date
- 2:0006:Default
- 1:0006:delete
- 1:0006:Designer
- 1:0006:DNS
- 2:0006:Domain
- 14:0004:Entry
- 2:0006:Environment
- 1:0006:Eval
- 12:0004:Example
- 2:0006:Export
- 1:0006:Feature
- 11:0004:Feed
- 1:0006:FFFTP
- 1:0006:File
- 6:0005:Folder
- 2:0006:For
- 4:0005:GetVar
- 1:0006:head
- 1:0006:html
- 5:0005:If
- 1:0006:Image
- 1:0006:Import
- 1:0006:Include
- 2:0006:index
- 12:0004:info
- 7:0004:Install
- 2:0006:key
- 1:0006:keyword
- 1:0006:License
- 2:0006:Local
- 4:0005:Loop
- 1:0006:Mail
- 1:0006:Management
- 1:0006:Manager
- 2:0006:Meta
- 10:0004:Modifier
- 2:0006:Module
- 1:0006:MTElse
- 1:0006:MTElseIf
- 5:0005:MTFor
- 2:0006:MTGetVar
- 10:0004:MTIf
- 1:0006:MTIgnore
- 3:0005:MTLoop
- 1:0006:MTSeHashVar
- 16:0004:MTSetVar
- 1:0006:MTSetVarBlock
- 1:0006:MTSetVars
- 1:0006:MTSetVarTemplate
- 1:0006:MTUnless
- 3:0005:MySQL
- 7:0004:Navigation
- 3:0005:Next
- 9:0004:op
- 8:0004:Page
- 1:0006:Perl
- 1:0006:php
- 2:0006:PhpMyAdmin
- 1:0006:Ping
- 3:0005:Plugin
- 1:0006:pop
- 3:0005:Previous
- 1:0006:Principle
- 0:0000:Profile
- 1:0006:push
- 3:0005:ReBuild
- 3:0005:Role
- 121:0001:Sample
- 1:0006:SetUp
- 8:0004:SetVar
- 1:0006:shift
- 0:0000:Site
- 1:0006:Spam
- 8:0004:Tag
- 55:0002:Template
- 4:0005:TrackBack
- 8:0004:Trouble
- 1:0006:undef
- 1:0006:unshift
- 13:0004:UpGrade
- 1:0006:UpLoad
- 1:0006:Usability
- 16:0004:Variable
- 1:0006:Version
- 2:0006:WebPage
- 1:0006:Wizard
- 1:0006:Writer
- 8:0004:XAMPP
- 16:0004:XHTML
- 1:0006:XML
コード2(MTTags sort_by="count")
sort_by="count"モデファイアを用いると、タグランクで並べた場合とほぼ同じと思われる結果が得られました。
<ul>
<MTTags sort_by="count">
<li><MTTagCount>:<MTTagRank zero_pad="4">:<MTTagName></li>
</MTTags>
</ul>
このエントリにコード2を貼った動作サンプル
- 121:0001:Sample
- 55:0002:Template
- 23:0003:Asset
- 22:0003:Config
- 21:0003:Category
- 16:0004:MTSetVar
- 16:0004:Variable
- 16:0004:XHTML
- 14:0004:Entry
- 13:0004:Calc
- 13:0004:UpGrade
- 12:0004:Example
- 12:0004:info
- 11:0004:Feed
- 10:0004:CORESERVER
- 10:0004:CSS
- 10:0004:Modifier
- 10:0004:MTIf
- 9:0004:op
- 8:0004:Page
- 8:0004:SetVar
- 8:0004:Tag
- 8:0004:Trouble
- 8:0004:XAMPP
- 7:0004:Install
- 7:0004:Navigation
- 6:0005:Folder
- 5:0005:Author
- 5:0005:Comment
- 5:0005:If
- 5:0005:MTFor
- 4:0005:GetVar
- 4:0005:Loop
- 4:0005:TrackBack
- 3:0005:Create
- 3:0005:Custom Field
- 3:0005:MTLoop
- 3:0005:MySQL
- 3:0005:Next
- 3:0005:Plugin
- 3:0005:Previous
- 3:0005:ReBuild
- 3:0005:Role
- 2:0006:.htaccess
- 2:0006:Advantage
- 2:0006:Archive
- 2:0006:BackUp
- 2:0006:Bug
- 2:0006:Check
- 2:0006:count
- 2:0006:Date
- 2:0006:Default
- 2:0006:Domain
- 2:0006:Environment
- 2:0006:Export
- 2:0006:For
- 2:0006:index
- 2:0006:key
- 2:0006:Local
- 2:0006:Meta
- 2:0006:Module
- 2:0006:MTGetVar
- 2:0006:PhpMyAdmin
- 2:0006:WebPage
- 1:0006:Apache
- 1:0006:Authority
- 1:0006:AutoSave
- 1:0006:body
- 1:0006:CMS
- 1:0006:Company Site
- 1:0006:Contact
- 1:0006:Creative Commons
- 1:0006:delete
- 1:0006:Designer
- 1:0006:DNS
- 1:0006:Eval
- 1:0006:Feature
- 1:0006:FFFTP
- 1:0006:File
- 1:0006:head
- 1:0006:html
- 1:0006:Image
- 1:0006:Import
- 1:0006:Include
- 1:0006:keyword
- 1:0006:License
- 1:0006:Mail
- 1:0006:Management
- 1:0006:Manager
- 1:0006:MTElse
- 1:0006:MTElseIf
- 1:0006:MTIgnore
- 1:0006:MTSeHashVar
- 1:0006:MTSetVarBlock
- 1:0006:MTSetVars
- 1:0006:MTSetVarTemplate
- 1:0006:MTUnless
- 1:0006:Perl
- 1:0006:php
- 1:0006:Ping
- 1:0006:pop
- 1:0006:Principle
- 1:0006:push
- 1:0006:SetUp
- 1:0006:shift
- 1:0006:Spam
- 1:0006:undef
- 1:0006:unshift
- 1:0006:UpLoad
- 1:0006:Usability
- 1:0006:Version
- 1:0006:Wizard
- 1:0006:Writer
- 1:0006:XML
コード3(MTTags sort_by="rank"を変数で実現)
ハッシュを用いて、MTTags sort_by="rank"と同等の動作を実現するときは、以下のようなコードでよいと思います。ハッシュのキー生成時にタグのIDを付与しているのは、ランクの同じタグがあると一度生成したキーが上書きされてしまうためです。
結果としては、countモデファイアで並べ替えたコード2の場合と若干異なります。
<MTSetVar name="TagData" value="">
<MTTags>
<MTSetvarBlock name="CurTagWeight"><MTTagRank zero_pad="4"><MTTagID></MTSetvarBlock>
<MTSetvarBlock name="CurTagLinkSet"><MTTagCount>:<MTTagRank zero_pad="4">:<MTTagName></MTSetvarBlock>
<MTSetHashVar name="TagData">
<MTSetVar name="$CurTagWeight" value="$CurTagLinkSet">
</MTSetHashVar>
</MTTags>
<ul>
<MTLoop name="TagData" sort_by="key">
<li><MTGetVar name="__value__"></li>
</MTLoop>
</ul>
このエントリにコード3を貼った動作サンプル
- 121:0001:Sample
- 55:0002:Template
- 21:0003:Category
- 23:0003:Asset
- 22:0003:Config
- 12:0004:info
- 8:0004:Trouble
- 11:0004:Feed
- 7:0004:Navigation
- 8:0004:Tag
- 16:0004:Variable
- 16:0004:MTSetVar
- 10:0004:MTIf
- 8:0004:SetVar
- 14:0004:Entry
- 9:0004:op
- 13:0004:Calc
- 12:0004:Example
- 8:0004:Page
- 10:0004:Modifier
- 16:0004:XHTML
- 8:0004:XAMPP
- 10:0004:CSS
- 10:0004:CORESERVER
- 7:0004:Install
- 13:0004:UpGrade
- 5:0005:MTFor
- 4:0005:GetVar
- 5:0005:If
- 4:0005:Loop
- 3:0005:MTLoop
- 6:0005:Folder
- 5:0005:Author
- 3:0005:Custom Field
- 3:0005:Next
- 3:0005:Previous
- 3:0005:Role
- 3:0005:MySQL
- 5:0005:Comment
- 4:0005:TrackBack
- 3:0005:Create
- 3:0005:Plugin
- 3:0005:ReBuild
- 1:0006:Eval
- 1:0006:Version
- 2:0006:Bug
- 2:0006:MTGetVar
- 1:0006:MTSetVarBlock
- 1:0006:MTSetVars
- 1:0006:MTSetVarTemplate
- 1:0006:push
- 1:0006:unshift
- 1:0006:undef
- 1:0006:delete
- 1:0006:pop
- 1:0006:shift
- 2:0006:count
- 1:0006:MTElse
- 1:0006:MTElseIf
- 1:0006:MTUnless
- 2:0006:For
- 2:0006:WebPage
- 1:0006:MTSeHashVar
- 2:0006:key
- 2:0006:index
- 1:0006:Company Site
- 2:0006:Module
- 1:0006:Apache
- 1:0006:Perl
- 2:0006:Local
- 1:0006:Authority
- 2:0006:Default
- 1:0006:File
- 1:0006:Include
- 1:0006:XML
- 1:0006:html
- 1:0006:head
- 1:0006:body
- 2:0006:Meta
- 1:0006:keyword
- 1:0006:Management
- 2:0006:Date
- 1:0006:Manager
- 1:0006:MTIgnore
- 1:0006:Designer
- 1:0006:Writer
- 1:0006:License
- 1:0006:Feature
- 1:0006:Usability
- 1:0006:Contact
- 1:0006:DNS
- 2:0006:Domain
- 1:0006:Mail
- 2:0006:.htaccess
- 2:0006:Advantage
- 2:0006:PhpMyAdmin
- 1:0006:FFFTP
- 1:0006:UpLoad
- 1:0006:SetUp
- 1:0006:Wizard
- 2:0006:Archive
- 1:0006:php
- 1:0006:Ping
- 1:0006:Creative Commons
- 1:0006:CMS
- 1:0006:Spam
- 2:0006:Export
- 2:0006:BackUp
- 1:0006:Import
- 1:0006:Principle
- 2:0006:Check
- 1:0006:AutoSave
- 2:0006:Environment
- 1:0006:Image
- ページ先頭へ
- 前のエントリ: エントリのタグを繋げて比較用文字列を生成する
- 次のエントリ: タグランクN以上のタグのみをリスト化する
- カテゴリ:タグ関連サンプル