拙著「上手に稼ぐカラ売りテクニック」が発売されました。
株価が下がる局面で利益を得ることができる「空売り」について、詳しく解説した本です。
自由国民社刊で、定価1,512円(税込)です。
条件に合う記事を元にカレンダーを出力するプラグイン(その1)
昨日、MTQに以下のような質問が上がっていました。
カスタムフィールドの日付を使用した、カレンダーを作成したいと考えているのですが、通常のカレンダーでは公開日を元にカレンダーに表示しているようでした。
書籍等で、方法を探っていますが、現状、良い案が無く困っております。
パフォーマンスを無視すれば、Movable Typeの標準のテンプレートタグだけでも、上記のようなカレンダーを出力することは可能だと思います。
ただ、ブログ記事が多くなると、パフォーマンスが低下するはずです(ブログ記事を全部読み込んでから、ハッシュや条件判断を駆使して処理するため)。
また、テンプレートの組み方もかなり複雑になると思われます。
そこで、拙作のSearchEntriesプラグインと組み合わせて、条件に合う記事を元にしてカレンダーを出力するプラグインを作ってみました。
今日はその基本を紹介します。
1.プラグインの概要
このプラグインでは、SearchEntriesプラグインで検索したブログ記事を、月ごとにまとめて出力したり、月ごとのカレンダーを出力したりすることができます。
また、月ごとにブログ記事をまとめる際には、公開日だけでなく、ブログ記事の日付系の任意のフィールド(カスタムフィールドも含む)を指定することもできます。
なお、動作確認はMovable Type 5.2ベータ5で行いました。
5.0xや5.1xでも動作するはずです。
2.インストール
このプラグインは、以下からダウンロードします。
SearchEntriesCalendar_1_01.zip
ダウンロードしたZipファイルを解答すると、「plugins」というフォルダができます。
このフォルダを、Movable Typeのインストール先ディレクトリにアップロードします。
また、最初に述べたように、このプラグインはSearchEntriesプラグインと組み合わせて使います。
したがって、SearchEntriesプラグインもインストールしておく必要があります。
3.基本的なテンプレートの組み方
このプラグインを使ってカレンダーを出力するには、基本的には以下のようなテンプレートの組み方をします。
<mt:SearchEntries> 各種の検索条件 </mt:SearchEntries> <mt:SearchEntriesArchiveList field="フィールド名"> 年月を出力するタグなど <mt:SearchEntriesCalendar> カレンダーを出力する各種のタグ </mt:SearchEntriesCalendar> </mt:SearchEntriesArchiveList>
MTSearchEntriesArchiveListタグは、検索にマッチしたブログ記事を、月ごとに分けて順に出力する働きをします。
fieldモディファイアで、ブログ記事を月ごとにまとめるためのフィールド名を指定します。
カスタムフィールドでまとめる場合は、「field="field:カスタムフィールドのベースネーム"」のように指定します。
fieldモディファイアを省略した場合は、ブログ記事の公開日で月ごとにまとめて出力します。
MTSearchEntriesArchiveListタグのブロックの中では、MTArchiveDateタグを使って、個々の月の日付を出力することができます。
また、「MTSearchEntriesCalendar」というブロックタグを使って、個々の月のカレンダーを出力することもできます。
MTSearchEntriesCalendarタグのブロックの中では、MTCalendarタグと同じ書き方で(MTCalendar系のテンプレートタグを使って)、カレンダーを出力することができます。
ただし、MTCalendarDay/MTCalendarDateタグの値は、ブログ記事の公開日ではなく、MTSearchEntriesArchiveListタグのfieldモディファイアで指定したフィールドの値が元になります。
4.事例
2012年に書いたブログ記事のうち、コメントがついている記事を検索して、それらの記事のカレンダーを出力するには、以下のようにテンプレートを組みます。
<mt:SearchConditions> <$mt:SearchConditionCompare field="authored_on" ge="20120101000000" lt="20130101000000"$> <$mt:SearchConditionCompare field="comment_count" ge="1"$> </mt:SearchConditions> <mt:SearchEntriesArchiveList> <h1><$mt:ArchiveDate format="%Y年%m月"$></h1> <table border="1"> <tr><th>日</th><th>月</th><th>火</th><th>水</th><th>木</th><th>金</th><th>土</th></tr> <mt:SearchEntriesCalendar> <mt:CalendarWeekHeader><tr></mt:CalendarWeekHeader> <td<mt:CalendarIfToday> class="today"</mt:CalendarIfToday>> <mt:CalendarIfBlank> </mt:CalendarIfBlank> <mt:CalendarIfEntries><mt:Entries lastn="1"><a href="<$mt:EntryPermalink$>"><$mt:CalendarDay$></a></mt:Entries></mt:CalendarIfEntries> <mt:CalendarIfNoEntries><$mt:CalendarDay$></mt:CalendarIfNoEntries> </td> <mt:CalendarWeekFooter></tr></mt:CalendarWeekFooter> </mt:SearchEntriesCalendar> </table> </mt:SearchEntriesArchiveList>
5.ライセンス
このプラグインは、商用ライセンスのMovable Typeと組み合わせる場合は、インストール先1件につき1,000円とさせていただきます。
お問い合わせはメールフォームから行ってください。
一方、個人無償ライセンスやMTOSと組み合わせる場合は、無償とさせていただきます。