MT4になって、いろいろなことがプラグインなしでできるようになりましたが、ユーザーが何個の記事を投稿しているかを一発で取得する<$mt:AutherCount$>みたいなタグはないみたいなので、変数と条件タグを駆使して無理矢理取得してみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<mt:Authors>
<div id="auther-<$MTAuthorID$>">

<!-- まず、AuthorsコンテナタグでAuthorIDを取得 -->
<mt:SetVarBlock name="cur_ID"><$MTAuthorID$></mt:SetVarBlock>
<!-- ArchiveCount取得用にユーザーアーカイブの一覧を書き出し -->
<mt:ArchiveList archive_type="Author">
<!-- ArchiveListコンテナタグのAuthorIDを取得 -->
<mt:SetVarBlock name="temp_ID"><$MTAuthorID$></mt:SetVarBlock>
<!-- AuthorsコンテナタグとArchiveListコンテナタグで取得した
AuthorIDを比較して、一致した場合のみ処理を行う -->
<mt:If name="cur_ID" eq="$temp_ID">
<!-- 「ユーザーのエントリー数」に、ArchiveCountを代入する -->
<mt:SetVarBlock name="auther_archive_count"><$mt:ArchiveCount$></mt:SetVarBlock>

<!-- ==========
ここで処理
「ユーザーのエントリー数」は
<$mt:GetVar name="auther_archive_count"$>で取得できます
例:<a href="<$MTBlogURL$><$mt:AuthorName$>/index.html"><$mt:AuthorDisplayName$></a>(<$mt:GetVar name="auther_archive_count"$>件の記事)
========== -->

</mt:If>
</mt:ArchiveList>

</div>
</mt:Authors>

上の例ではユーザーアーカイブへのリンクを固定で書き出していますが、この仕組みを使えば<$mt:AutherArchiveURL$>みたいのもできそうです。

なんでこんな面倒くさいことをしているかというと、複数の投稿者を「ユーザー」で管理して、サイト上で投稿したユーザーの一覧を表示するときに、そのユーザーの投稿数もわかったらいいな、なんて思ってしまったからです。

mt:Authersmt:ArchiveListも、できることが中途半端なんですよね・・

追記:なんか余計なことしてるかも

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<mt:Authors>
<div id="auther-<$MTAuthorID$>">

<!-- まず、AuthorsコンテナタグでAuthorIDを取得 -->
<mt:SetVarBlock name="cur_ID"><$MTAuthorID$></mt:SetVarBlock>
<!-- ArchiveCount取得用にユーザーアーカイブの一覧を書き出し -->
<mt:ArchiveList archive_type="Author">
<!-- ArchiveListコンテナタグのAuthorIDを取得 -->
<mt:SetVarBlock name="temp_ID"><$MTAuthorID$></mt:SetVarBlock>
<!-- AuthorsコンテナタグとArchiveListコンテナタグで取得した
AuthorIDを比較して、一致した場合のみ処理を行う -->
<mt:If name="cur_ID" eq="$temp_ID">

<!-- ==========
ここで処理
例:<a href="<$mt:ArchiveLink$>"><$mt:AuthorDisplayName$></a>(<$mt:ArchiveCount$>件の記事)
========== -->

</mt:If>
</mt:ArchiveList>

</div>
</mt:Authors>

mt:Ifの中で改めて代入する必要はないよな。これでいけるはず。明日検証してみる。

追記の追記

やっぱ、これでいいみたいだ。