mtde.info

Movable Type Developers Express

タグをランク順に並べ替える

2008年2月 9日 16:07 | Writer: apstar | 記事本文

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

タグ関連サンプル

2008 mtde.info