BlogTop > MovableType Archive

MovableType Archive

3 of 7

< Previous PageNext Page >

すべてのページ

mt.Vicuna:MT-Xsearch用のテンプレートモジュールを試作。

mt.Vicunaテンプレートで、mt-xsearch.cgiを使ったタグアーカイブテンプレートを作成してみました。TagSupplementalsプラグイン(0.22)との組み合わせで利用します。

先日、Ogawa::Memorandaにて、TagSupplementalsプラグインのバージョンアップとの記事がありました。「MT-XSearchを使ったタグ検索」とのことでMT-XSearchを使った方法を試すことにしました。

今回、タグ検索結果のテンプレートモジュールをカスタマイズしてmt.Vicunaテンプレートにあわせたものにするということをおこないました。おことわりですが、本記事ではMTXSearchの導入方法は省略させていただきます。

なお、TagSupplementalsプラグインとおよび、MT-XSearchを使った動的アーカイブの実現方法等は以下を参照するとよいかと思います。(#自分も3.2のころMT-XSearchを使っていたのですがやりかたを忘れておりました)

注:今回、Tagwire PluginはつかわずMTのタグ機能のみです。あと、appnel.comより、mt-xsearch.cgi等の含まれる、mt-plus-1.01.zipをダウンロードする必要があるのですが、ワタくシが確認したところ、リンク先のファイル(mt-plus-1.01.zip)がロードされずにページ遷移になっていました。当方では以前導入していたときのファイルを探してきて使用しております。

タグ検索結果のテンプレートサンプル

テンプレートモジュールを新規作成して、テンプレート名を、XSearch TagSupplementalsとします。search_key=にはTagSupplementalsを記入しています。

InstaMT+Movable Type4.24-enでのみで動作確認をおこなったものです。

<__trans_section component="mtVicuna">
<MTSetVar name="tempName" value="system_search">
<MTSetVarBlock name="topicPathTagSearch">
<p class="topicPath">
<a href="<$MTBlogURL$>" rel="nofollow">Home</a> &gt; 
<span class="current">Search results for Tag : <$MTSearchString$></span>
</p>
</MTSetVarBlock>
<?xml version="1.0" encoding="<$MTPublishCharset$>" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="<$MTDefaultLanguage$>" xml:lang="<$MTDefaultLanguage$>">
<head profile="http://purl.org/net/ns/metaprof">
<MTInclude module="<__trans phrase="HTML Header">">
<title>Search Results for Tag : <$MTSearchString$> - <MTBlogName encode_html="1"$></title>
</head>
<body class="individual system double">
<$MTInclude module="<__trans phrase="Header">"$>
<div id="content">
<div id="main">
<$MTVar name="topicPathTagSearch"$>
<h1>Search Results for Tag : <$MTSearchString$></h1>
<div class="entry">
<ul class="info">
<li>Tag: <em><$MTSearchString$></em></li>
<li><em><span class="count"><$MTSearchResultCount$></span></em> Hits</li>
</ul>
<dl class="headline">
<MTSearchResults>
<dt><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a><span class="date"> - Posted date: <$MTEntryDate></span></dt>
<dd>
<ul>
<li class="textBody"><$MTEntryExcerpt$></li>
<MTIfNonEmpty tag="EntryAuthorDisplayName">
<li class="author">Posted by: <span class="name"><$MTEntryAuthorDisplayName$></span></li>
</MTIfNonEmpty>
<MTIfNonEmpty tag="MTEntryCategory"><li class="category">Category: <MTEntryCategories glue=" | "><a href="<$MTCategoryArchiveLink$>" title="<MTCategoryLabel> Index"><MTCategoryLabel></a></MTEntryCategories></li></MTIfNonEmpty>
<MTEntryIfTagged><li class="tag">Tag: <MTEntryTags glue=", "><a href="<$MTCGIPath$>mt-xsearch.cgi?blog_id=<$MTBlogID$>&amp;search_key=TagSupplementals&amp;search=<$MTTagName encode_url="1"$>" rel="nofollow"><$MTTagName$></a></MTEntryTags></li></MTEntryIfTagged>
</ul>

</dd>
</MTSearchResults>
</dl>
</div>
<MTNoSearch>
<div class="section entry">
<h2>Error</h2>
<div class="textBody">
<p><__trans phrase="You did not enter anything to search for. Please try again"></p>
</div>
</div>
</MTNoSearch>

<MTNoSearchResults>
<div class="section entry">
<h2>Search Result</h2>
<div class="textBody">
<p>タグ:<em><$MTSearchString$></em> のつけられた記事は見つかりませんでした。</p>
<p>ヒント:</p>
<ul>
<li>タイプミスはありませんか?</li>
<li>他のタグを検索してみてください</li>
<li>キーワード検索をお試しください</li>
</ul>
</div>
</div>
</MTNoSearchResults>
<div class="section option">
<h2>Search Tags</h2>
<form method="get" action="<$MTCGIPath$>mt-xsearch.cgi">
<fieldset>
<legend><label for="search">Tag Search</label></legend>
<div>
   <input type="hidden" name="blog_id" value="<$MTBlogID$>" />
   <input type="hidden" name="search_key" value="TagSupplementals" />
   <input type="text" class="inputField" id="search" name="search" size="20" value="<$MTSearchString decode_url="1" encode_html="1"$>" />
   <input type="submit" class="submit" value="Search" />
</div>
</fieldset>
</form>
<!-- option end --></div>

<$MTVar name="topicPathTagSearch"$>
</div>
<!-- end div#main -->
<$MTInclude module="<__trans phrase="Utilities">"$>
<$MTInclude module="<__trans phrase="Return to page top">"$>
</div>
<!-- end div#content -->
<$MTInclude module="<__trans phrase="Footer">"$>
</body>
</html>
</__trans_section>

インデントは当方で左詰めしました。mt.Vicuna向けですのでmt.Vicunaテンプレートセットを利用していることを前提としています。

追記:2009/04/08 title要素の表示がsetvarblockを使っていたのを訂正した関係でおかしくなっていたので変更しました。

変更前

  • <title>Search Results for Tag : <$MTVar name="tagname"$> -

変更後

  • <title>Search Results for Tag : <$MTSearchString$> -

なお、当ブログでのMT-XSearch対応の準備が整いましたので、タグのページで確認することができます。

今月のいらんことしい(2009年3月)

今月(2009年3月)サイトやブログのテンプレートをカスタマイズした点をまとめた記事です

  • 月別アーカイブページを作り、サイドバーメニューの月別アーカイブリンクをやめた
  • 月別アーカイブページの先頭はページ内リンクという形にした。
  • 個別記事ページでtitle要素を「記事タイトル」、「ブログ名」の順にした
  • 検索結果のページを分割表示にした

月別のアーカイブページですが、あまりにも読まれることがなく、リンクがあっても辿るひとがいないわけでして、このようなページへのリンクは無駄だろうということから、サイドバーメニューから外すことにしました。勝手は悪くなるけど、かわりに月別アーカイブ一覧ページを作りそのページへリンクするようにしてみました。

月別ページで、目的の記事への移動がしやすいように、MTBlogIDを利用し、フラグメント識別子によりページ内リンクすることにしました。説明するより見てもらったほうが早いかと。2009年3月アーカイブ

検索結果のページはmt.Vicunaでは、分割表示されていないのでデフォルトの検索結果ページのソースをみながら修正を加えてみました。

ページ分割については、HashiM氏の以下の記事を参考にしました。簡単にまとめると、mt.Vicunaテンプレートでは検索フォーム内でlimitの設定をおこなわないといけない、ということです。

説明しようとおもったのですが無駄に長くなるだけですので、サンプルテンプレートということで提示します。mt.Vicuna 2.2.0の検索結果テンプレートをベースとしたものですからmt.Vicunaテンプレートセットと一緒に使う必要があります。

download

Actionstreamsとはてなブックマークが関係してログフィードで不具合(?)

Movable TypeのシステムのログフィードをFirefoxに登録しているのですが、ライブブックマークを読み込めない状態がおこっていましたので原因を確かめてみました。

順を追って説明しますと。

  1. システムのログフィードが「ライブブックマークを読み込めませんでした」となっていた
  2. ログフィードを確認。謎の文字列が入っていて、ActionStreamsプラグインで、はてなブックマークでブックマークしたエントリに問題がある様子。
  3. 実際にエントリページを確認に行く。(はてなブックマーク - 新倉イワオ - Wikipedia
  4. 概要の部分にエラーログの内容にある文字列が入っていることを確認。
  5. 当該のブックマークを削除してみる
  6. ログ自体に文字列が残っているために、フィードが正しく生成できていないようである
  7. ログフィードをCSVファイルに吐き出してから、リセットをおこなう。
  8. 正常の状態に戻る

原因がどこにあるのか特定しにくいというか、レアケースと思われるのでフィードバックはおこなってません。環境は、Movable Type Commercial version 4.24-ja +プラグイン1.0+audiofan.netさまにて公開されていたはてな用config.yamlです。

はてなブックマークのエントリページの問題と思われる箇所のキャプチャを示します。

hateb-entrypage.png

ログをエクスポートしたCSVファイルから見たキャプチャは以下となっています。(ログインのユーザ名の部分は当方で修正)

errorlog_mt_actionstreams.png

Click to Enlarge

ブックマークしたページがアノかただけに......というオチはないです。以上です。

ブロックタグとファンクションタグと書式のこと

  • Posted by: maRk
  • MovableType
  • はてなブックマークに追加

Movable Typeのテンプレートタグには「ブロックタグ」と「ファンクションタグ」があり、書式においてファンクションタグではブロックタグとの区別として$マークを使えることになっています。

この$の記述をブロックタグのときに使って、ファンクションタグのときは$を使わないとどうなるのかといいますと、テキトーですが以下のようなテンプレートで試してみます。

$がついたブロックタグでの出力

ブロックタグ、MTEntriesに$をつけた形のテンプレートです。(バージョン、4.24-en)

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>TEST MT tag</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="start" href="./" />
<link rev="made" href="mailto:me@example.org" />
</head>

<body>
<table summary="Test of Movable Type template tag" border="1"><tbody>
<tr><th abbr="title">Entry Title</th><th abbr="link">Entry Permalink</th></tr>
<$mt:Entries lastn="10"$>
<tr><td><mt:EntryTitle remove_html="1"></td><td><mt:EntryPermaLink></td></tr>    
</mt:Entries>
</tbody>
</table>
</body>
</html>

上に示したテンプレートにおいて、の終了タグには$を付けずにおこなうとこのテンプレートは正常にビルドできました。

ではここで、終了タグに$を付けてみます

<$mt:Entries lastn="10"$>
do something...
<$/mt:Entries$> 

Movable Typeのハイライト表示でみるとmt:Entriesの終了タグのハイライトが正常におこなわれてないことがわかるかと思います。それを再構築してみると「終了タグがない」と、エラー警告がでてしまいます。

One or more errors were found in this template.
<mt:Entries> with no </mt:Entries> on line 18. 

ということから、ブロックタグには$を使わないほうがよいということは明確でしょう。

自分ルールを決めておきたい

編集のときにMovable Typeの編集画面でのタグのハイライト表示を利用しない、というのもあるのですけれど、自分がテンプレート編集するときに、例えばXMLファイルですと、ブロックタグが他の要素と紛れてわかりにくかったり、<mt:~ />のような空要素タグのような書き方にしても、img要素の近くにこのように空要素タグの書きかたをしたテンプレートタグがいくつかでてくると見分けが付きにくのでないかという感じがします。

ですので、自分が編集していて見やすい書き方を決めておくというのも一つの方法ではないでしょうか。自分以外のひとでもテンプレート編集されるという場合も書式は統一しておいたほうがいいのかもしれません。

ファンクションタグについては、Movable Type テンプレートタグの種類と働き(Movable Type 4 ドキュメント)にて、書式等の説明があります。

メモ:MTEntryIDでpad=1として桁オーバーしたときの表示は?

テンプレートタグMTEntryIDでpad=の値を「1」としたとき、桁が6桁を超えた場合の表示がどうなるかやってみました。あくまでもネタなんですが。

MTEntryIDは主にアーカイブページなんかでエントリーへのリンクとして利用されるテンプレートタグですが、pad="1"を設定しているときは、常に6桁の表示となります。

桁数が足りないとき、0 で埋めて表示します。ID が 8 なら 0 を 5 つ追加し、000008 と表示されます。

MTEntryID|テンプレートタグリファレンスから

で、IDが6桁を超えたとき表示はどうなるの?というギモンがおこり(謎)、実際に試してみる、てことにしました。

とはいえ、個人のユーザが6桁越え(削除等含め100万エントリ!!)のエントリを作成するのは現実的な数字ではありません。#なんか健全でない使い方のひとだとEntryID7桁以上を見れるような気が。なんとなく。

普通に記事書くくらいでは再現は無理ですので、データベースを書き換えてしまったほうが早いでしょう。あ・これは、ネタのためだけにおこなってるので(念の為)。

普通にテンプレートタグでEntryIDを出力させてもいいのですが、EntryIDを記事ファイル名にする、という使い方を想定して試してみるとします。

エントリーアーカイブのマッピングでカスタムを選択して以下のように設定しておきました。

%y/%m/<mt:EntryID pad="1">.html

phpMyAdminとかで、任意の記事のテーブル、`mt_entry`を操作してフィールド、entry_idの値を1000000にします。

change_entry_id.png

で、管理ページのエントリーリストのところから、その記事だけをPublishにします。

その記事のURLを確かめてみますと。

changed_entry_id.png

・・・・・・って、0で埋められなくてそのまま表示されるだけでないすか。。というか普通に考えたらそうだよね。

Select Export:指定した記事をエクスポート。(説明キャプチャなし)

Movable Typeにはブログ記事のエクスポート機能がありますが、特定の記事だけエクスポートするプラグインがSelective Exportです

Batch Publishing Optionsと同じく地味な部類に入りそうな(失礼。)プラグインなのですが、Selective Exportプラグインを使うと特定の記事のみエクスポートすることができるようになります。以下のページからダウンロードすることができます。

以下、バージョン1.0にもとづいて簡単ですが使い方メモです。

  1. ファイルを解凍してできたpluginsフォルダ内のSelectiveExportフォルダごとMTシステムのディレクトリのpluginsディレクトリにアップロード
  2. システムメニューのプラグイン一覧にSelect Exportがでていることを確認
  3. settingsのタブのところで設定する(具体的な設定は下に示します[説明↓])
  4. Save Changesボタンで設定完了
  5. 記事一覧や記事検索の結果一覧および各エントリの編集画面に、ドロップダウンメニューで(記事の)Exportが追加される

Selective Exportプラグインの設定について

Location for exporting your selected exports
エクスポートファイルの出力先のパスです。共用サーバの場合自分の領域に。
Combine all of the exported entries into a single export file.
初期設定ではチェックオフで、エクスポートファイルは記事単位で個別に出力されます。チェックオンにすると、選択された記事が1ファイルにまとめて出力されます。
Use the rich text editor for managing the look, linebreaks, etc.
ラインブレイク(強制改行)オプションを反映させるかどうかの設定。リッチテキストを使うときに

追記:Selective Exportの間違いでした。修正しました

今月のいらんことしい(2009年1月)

今月(2009年1月)サイトやブログでカスタマイズしたものをまとめた記事です

今月は年始から多忙につき、あまりいじってなくて以下のとおりです。

  • TagSupplementalsプラグイン、バージョンアップにつき0.20を導入した
  • Actionstreamsのリンクの出力にrel="bookmark"

TagSupplementalsプラグインは、提供もとのOgawa::Memorandaより、バージョンアップされたとの記事があがっていました。

詳細とダウンロードは上記ページから。これまでのバージョンで4.2で動作していたのですが、4.2移行サポートということで導入することにしました。これまで使っていたTagSupplementals Plugin(.plファイル)を削除してから、解凍して作成されたフォルダ(TagSupplementals)ごとpluginsディレクトリにアップロードしました。

その後、記事ページのみ再構築を試して動作を確認。このときついでで関連記事をul liでマークアップするように変更しました。

何回かカスタマイズしてるActionStreamsプラグインですが、リンク出力を変えるのはどうやらconfig.yamlをいじる必要があるみたいでした。config.yamlファイルをいじるのはあまり好ましくはないのですが試験的にということで。config.yamlで使っているサービスの<a href="[_2]">[_3]</a>'と記述されているところにrel="bookmark"を追加しています。

これにより、先に書いた記事のhAtom.jsを使ったとき「Firefox でブックマークする」という動作を使うことができるようになります。

Index of all entries

BlogTop > MovableType Archive

Feeds
Elsewhere

Action Streams

logo

Comment powered by DISQUS

Return to page top