mtde.info

Movable Type Developers Express

タグをアルファベット順に並び替える

2008年2月 9日 18:26 | Writer: apstar | 記事本文

タグをアルファベット順に並び替えてリスト化するコードサンプルです。タグは英語のものは大文字小文字を問わずアルファベット順とします。

コード1(MTTags sort_by="name"

MTTagsブロックタグにsort_by="name"モデファイアを指定すると、タグをアルファベット順に並び替えてリスト化することができます。

<ul>
<MTTags sort_by="name">
   <li><MTTagCount>:<MTTagRank zero_pad="4">:<MTTagName></li>
</MTTags>
</ul>

このエントリにコード1を貼った動作サンプル

  • 2:0006:.htaccess
  • 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
  • 1:0006:push
  • 3:0005:ReBuild
  • 3:0005:Role
  • 121:0001:Sample
  • 1:0006:SetUp
  • 8:0004:SetVar
  • 1:0006:shift
  • 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="name"を変数で実現)

変数・ハッシュを用いて、MTTags sort_by="name"と同等の動作を実現するときは、以下のようなコードでよいと思います。

「大文字と小文字を問わず並べ替える」という条件を満たさせるため、<MTTagName lower_case="1">の部分で一度タグ名を全て小文字に変換し、のちのMTLoopループのsort_byモデファイア用のキーとしています。

なお、大文字と小文字を分けたい場合は、単にlower_case="1"をとればOKです。ちなみに日本語タグが混在する場合は、英語タグの後ろへ並びます。

<MTSetVar name="TagData" value="">
<MTTags>
   <MTSetvarBlock name="CurTagName"><MTTagName lower_case="1"></MTSetvarBlock>
   <MTSetvarBlock name="CurTagLinkSet"><MTTagCount>:<MTTagRank zero_pad="4">:<MTTagName></MTSetvarBlock>
   <MTSetHashVar name="TagData">
      <MTSetVar name="$CurTagName" value="$CurTagLinkSet">
   </MTSetHashVar>
</MTTags>
<ul>
<MTLoop name="TagData" sort_by="key">
   <li><MTGetVar name="__value__"></li>
</MTLoop>
</ul>

このエントリにコード2を貼った動作サンプル

  • 2:0006:.htaccess
  • 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
  • 1:0006:push
  • 3:0005:ReBuild
  • 3:0005:Role
  • 121:0001:Sample
  • 1:0006:SetUp
  • 8:0004:SetVar
  • 1:0006:shift
  • 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

タグ関連サンプル

2008 mtde.info