追記機能が見当たらない。
ポストスプリッタというものがある。もしかしてコレが追記機能なのかも。試してみる。一応タグがつけれるので今のところMTで使えるEditorはコレが使い勝手がいいかもしれない。
エントリーやウェブページ内でMTタグが使える「Templatize」プラグイン | MTプラグイン配布 | MT エンジニアブログ | スカイアークシステム
上記のサイトにて配布されているプラグインを導入(pluginフォルダ)することで、本文中でMTタグが使えるようになります。
自サーバにてMTOSをインストールし、MTタグの働きを実際に実行して試して見たいときには、このプラグインを導入するといいです。ただし、記事をアップしたあとに再構築を手動で行う必要がある。
MT4.1 デフォルトテンプレート内において、ブログ記事の概要の中のブログ記事のメタデータ(モジュール)の中で設定されている変数hide_countsは、検索結果(システムテンプレート)のなかのブログ記事の概要(インクルード)の中で変数が設定されている。
以下ブログ記事のメタデータコード
<div class="asset-meta">
<span class="byline vcard">
<MTIfNonEmpty tag="EntryAuthorDisplayName">
<address class="vcard author"><$MTEntryAuthorLink show_hcard="1"$></address> (<abbr class="published" title="<$MTEntryDate format_name="iso8601"$>"><$MTEntryDate format="%x %X"$>)
<MTElse>
<abbr class="published" title="<$MTEntryDate format_name="iso8601"$>"><$MTEntryDate format="%x %X"$></abbr>
</MTIfNonEmpty>
</span>
<span class="separator">|</span> <a class="permalink" rel="bookmark" href="<$MTEntryPermalink$>">個別ページ</a>
<MTUnless name="hide_counts" eq="1">
<MTIfCommentsActive>| <a href="<$MTEntryPermalink$>#comments">コメント(<$MTEntryCommentCount$>)</a></MTIfCommentsActive>
<MTIfPingsActive>| <a href="<$MTEntryPermalink$>#trackback">トラックバック(<$MTEntryTrackbackCount$>)</a></MTIfPingsActive>
</MTUnless>
</div>10行目の変数hide?countsは、システムモジュールのなかの検索結果テンプレートの中で変数が設定されている。以下該当部分のコードを書いておく。
<MTSearchResults>
<MTBlogResultHeader>
<h1 id="page-title" class="search-results-header">
<MTIfStraightSearch>
<$MTBlogName encode_html="1"$>で「<$MTSearchString$>」と一致するもの
</MTIfStraightSearch>
<MTIfTagSearch>
<$MTBlogName encode_html="1"$>でタグ「<$MTSearchString$>」が付けられているもの
</MTIfTagSearch>
</h1>
<div class="search-results-container">
</MTBlogResultHeader>
<$MTInclude module="ブログ記事の概要" hide_counts="1"$>
<MTBlogResultFooter>
</div>
</MTBlogResultFooter>
</MTSearchResults>システムテンプレート15行目から31行目からを抜粋したコードです。上記コードの中で13行目のインクルードタグの中でhide_countsの変数が設定されている。
というわけで、ブログ記事の概要(モジュール)は、インデックステンプレート、ブログ記事のリスト(アーカイブテンプレート)、検索結果(システムテンプレート)の3つのテンプレートで共通に使われているのですが、検索結果表示のページの時には、MTUnlessタグで囲われた部分が変数の値に一致しない限り、生成されないので、検索結果のみでしか生成表示されないということになります。
MT4.1のデフォルトテンプレートの中で使われているpage_columns(サイドバーモジュール条件分岐)とpage_layoutsの関係のコードを表示させておく。これは、システム内部で変数処理がおこなわれている
<mt:if name="page_layout" eq="layout-tw"> <$mt:setvar name="page_columns" value="2"$> <mt:else name="page_layout" eq="layout-wt"> <$mt:setvar name="page_columns" value="2"$> <mt:else name="page_layout" eq="layout-wm"> <$mt:setvar name="page_columns" value="2"$> <mt:else name="page_layout" eq="layout-mw"> <$mt:setvar name="page_columns" value="2"$> <mt:else name="page_layout" eq="layout-wtt"> <$mt:setvar name="page_columns" value="3"$> <mt:else name="page_layout" eq="layout-twt"> <$mt:setvar name="page_columns" value="3"$> </mt:if>
スタイルシートのヘッダーに記述されるlayoutsの変数を内部で処理していることになる。
2カラムレイアウト(page_columns)
layout-tw
layout-wt
layout-wrn
layout-mw
3カラムレイアウト(page_columns)
layout-wtt
layout-twt
mixiの中でのmovabletypeコミュニティの中での質問で、
MTIfNonEmptyタグでMTElseは一緒に使えないとのことなので、
MTIfで代用することで、MTElseが使えるようになることを検証してみた。
結果、実際に使えました。以下その内容について書いておきます。
追記訂正:使えることがわかった。テンプレートの中でも使われています。
MT4.1のテンプレートを解剖して、次回エントリーのためにメモとして書き残しておくことに。スタイルライブラリーの中からのスタイルを使っている。(今現在のデザイン)
※なお、このエントリーは、勉強しながら随時追記しているため、その過程も記述しています。
このテンプレートを元にして、テンプレートを解剖してみる。まず、インデックステンプレートの中でのメインページから。
以下デフォルトのコード
<MTSetVar name="body_class" value="mt-main-index">
<MTSetVar name="main_template" value="1">
<MTSetVar name="main_index" value="1">
<MTSetVar name="sidebar" value="1">
<MTSetVarBlock name="title"><$MTBlogName encode_html="1"$></MTSetVarBlock>
<$MTInclude module="ヘッダー"$>
<MTEntries>
<$MTEntryTrackbackData$>
<$MTInclude module="ブログ記事の概要"$>
</MTEntries>
<div class="content-nav">
<a href="<$MTLink template="archive_index"$>">アーカイブ</a>
</div>
<$MTInclude module="フッター"$>
autopagerizeのpageelement 他 xpathでの要素指定の際に、
例えば、通常
//div[@id="main"]/
とか書くのだが、
id("main")
このように書き直した方が読み込み速度が全く違う。
Autopagerize xpath id指定は、id("****")と記述した方がいい。
尚、ノード順位指定(×→id("main")[2]/aみたいな )やclass指定などには使えない。
いやいやこちらのブログMT3.3からMT4.0へのバージョンアップに失敗しました - CNET Venture Viewと同じくして、MT3からMT4.1へのブログの移行が失敗しました。
今回の失敗は、MT3.4で生成したページのアドレス(MTEntryBasename)がしっかりと引き継いでくれていなかったこと。これじゃ今までのリンクがすべて切れてしまう。また、データ上でインポートはうまくいったんだけど、ページが重複(異なるアドレスで生成される)といったことが起きてしまいました。
そんなわけで、これからMT3からMT4.1へアップデートする方に気をつけておくべきことを書いておきます。
MovableType.jpは、AutoPagerizeに対応しているのをみて良いと思った。ちゃんとコード中に対応クラス指定しているのがすごいね。
てなわけで、MT4.1でAutoPagerizeに対応させるためのコードっていうのを書き出してみた。
AutoPagerizeに対応させるには以下の仕様にしないと動作しない。
nextList次のページへのリンクをXPathで指定。取得したリンクから次のページを読み込む。
Next pageのリンクでa要素でrel="next" を付ける。
insertBefore読み込んだページから切り出したノード群を挿入する際に基準となるノードをXPathで指定。 insertBeforeのと言う名の通り、基準となるノードの前に挿入される。
class指定で"autopagerize_insert_before" を付ける
pageElementページから切り出すノード群をXPathで指定。
class指定で"autopagerize_page_element"を付ける
この3つを対応させると、AutoPagerize対応になる。
MovableType.jpのブログでは、個別記事(アーカイブ)で上記の指定を行っている。
デフォルトのテンプレートにクラス指定するには、モジュールテンプレートのブログの記事で
1: <div id="entry-<$MTEntryID$>" class="entry-asset asset hentry autopagerize_page_element">
2: <div class="asset-header">
3: <h1 id="page-title" class="asset-name entry-title"><$MTEntryTitle$></h1>
4: <$MTInclude module="ブログ記事のメタデータ"$>
5: </div>
6: <div class="asset-content entry-content"
7: <$MTInclude module="adsense_top"$>
8: <MTIfNonEmpty tag="EntryBody">
9: <div class="asset-body">
10: <$MTEntryBody$>
11: </div>
12: </MTIfNonEmpty>
13: <MTIfNonEmpty tag="EntryMore" convert_breaks="0">
14: <div id="more" class="asset-more">
15: <$MTEntryMore$>
16: </div>
17: </MTIfNonEmpty>
18: <$MTInclude module="adsense_bottom"$>
19: </div>
20: <div class="asset-footer">
21: <MTIf name="entry_template">
22: <$MTInclude module="カテゴリ"$>
23: </MTIf>
24: <$MTInclude module="タグ"$>
25: </div>
26: </div>
1行目の<div id="entry-<$MTEntryID$>" class="entry-asset asset hentry">にclass指定で"autopagerize_page_element"を付ける
モジュールテンプレート、コメントのコードの下に以下のコードを追加する。そうするとAutoPagerize対応になると思う。
1: <hr class="autopagerize_insert_before"/>
2: <div class="content-nav">
3: <ul>
4: <li>次の記事:<MTEntryNext><a href="<$MTEntryPermalink$>" rel="next"><$MTEntryTitle remove_html="1"$></a></MTEntryNext></li>
5: <li>前の記事:<MTEntryPrevious><a href="<$MTEntryPermalink$>" rel="prev"><$MTEntryTitle remove_html="1"$></a></MTEntryPrevious></li>
6: </ul>
7: </div>
対応できた。
これで通常のインデックスページでは、投稿日時での降順でエントリーをみることができる。個別のエントリーを閲覧するときに、autopagerizeに対応できるユーザーであれば、昇順にしてエントリーを見ていくことができる。便利。ユーザーにも喜ばれる。
1: <MTIf name="datebased_only_archive">
2: <p class="first">このページには、<strong><$MTArchiveDate format="%B %Y"$></strong>に書かれたブログ記事が新しい順に公開されています。</p>
3: <MTArchivePrevious>
4: <p>前のアーカイブは<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a>です。</p>
5: </MTArchivePrevious>
6: <MTArchiveNext>
7: <p>次のアーカイブは<a href="<$MTArchiveLink$>"><$MTArchiveTitle$></a>です。</p>
8: </MTArchiveNext>
9: </MTIf>
10: <MTIf name="archive_index">
11: <p>最近のコンテンツは<a href="<$MTBlogURL$>">インデックスページ</a>で見られます。</p>
12: <MTElse>
13: <p>最近のコンテンツは<a href="<$MTBlogURL$>">インデックスページ</a>で見られます。過去に書かれたものは<a href="<$MTLink template="archive_index"$>">アーカイブのページ</a>で見られます。</p>
14: </MTIf>
15: </div>
16: </div>
17: </MTIf>
windows Live Writerのプラグイン Insert Code for Windows Live Writerを試してみる。
おーいいよ。これ、とても使える。SyntaxHighlighter for Windows Live Writer があるけど、それよりもこっちの方が使えると思う。
今回は、MT4.1のデフォルトのタグをInsert Code for Windows Live Writerを使って、表示させてみた。コード表示するには、これはいい。オススメ。
ブログ上の表示もきれいに出ている。これはオススメ。いいよ。コードも不思議な感じになっているけど、それでもちゃんと表示されているのがすごい。
このブログのデザインは、MT4.1スタイルライブラリーからのスタイルを使っている。Firefoxでは、個別記事において、右カラムは正しく表示されるが、IE6.0ではしっかりと落ちて表示される。これは、対応した方がいいと思う。
たぶん記事の管理がデスクトップから簡単にできるところがいいところだと思う。先ほどのエントリであげた、記事の分割(MT側でのmore entryのリンク生成)を抜いて、文句ないですね。
windows live writerから記事の削除などができ、その管理に対して、MTシステム側も同様に記事を削除できているのがすごいと思った。
あと、記事が500件まで表示できるwindows live writerの機能もすごいと思った。プラグインがもっとできてくれば、さらに使いやすくなると思う。
Sixapart側としては、こういったシステム対応できるソフトウェアのプラグイン開発を助長するようなイベントを催すと良いとも思った。
このWindows Live Writerをモデルとして。firefoxのプラグイン開発ができると文句ないような気がする。いい発展を遂げているWebサービスを見る限り、Firefoxプラグイン開発は(Movable Type 専用 ブログエディタ)、今後のシステム発展の助けになると思う。
これからログを共有するといったサービスが流行ると思われるから、そうしたログ共有もすぐにブログにエントリ(アウトプット)できるような機能も付加すれば、文句ないとおもう。
エディタ開発が鍵。
最初のポスト(投稿)で記事の分割をしないと、あとからの追記(再投稿)で追記部分があった場合、MT4.1は、more entryのリンクを生成しない。追記部分がある場合は、最初から追記を入れてのポストをしないと、あとあとダッシュボードから記事を修正しなければならなくなる。
同じ日に投稿したエントリーの表示順序が異なる。これもおかしい?なぜか投稿日時がおかしくなっている。なぜかは、わからない。
どうも、MTのシステム側の不具合か?それともwindow Live Writer側の不具合か?投稿日時の受け渡しがうまくいっていない。最初のポスト日時がたぶん、グリニッジの時刻になって投稿される。
再び、同じ記事で投稿するとデスクトップでの時刻となって、MTシステム側で認識されるようだ。
もしかして、ポスト(投稿)する前に一度保存しないとwindows live writer側の投稿日時がグリニッジで添付されて投稿するのかもしれない。
投稿日時がおかしいときは、一度ポスト(投稿)する前に、保存した方がいいかもしれない。もう一度、再投稿すれば、正しい日時でシステム側が認識表示してくれる。
MT4.1にアップ^デートして早々にコメントスパムの数がすごい。なんともなりません。対策をとらないと。
ここら辺のを参考にして、コメントスパム対策を講じることにする。
コメントに CAPTCHA 認証を利用する | Movable Type 4 ドキュメント
CAPTCHA 認証をつけないとなんともなりませんね。こまったもんだ。
Movable Type 4.1 は、Windows Live Writerに対応しているみたいなエントリーをみつけたので、設定してみたものの、カテゴリの作成などはできないようです。以前と変わらず、普通にエントリーをアップするだけで使えるといった感じですね。
一応、こちらのエントリーにマニュフェストファイルの登録に関して、詳しいことが書かれています。実際にファイルを登録してみたものの、以前のMT3.4から使っているときと変わりはありませんでした。
Windows Live Writer を利用したブログ記事やウェブページの作成 | Movable Type 4 ドキュメント
何とか、Windows Live WriterでMovable Type 4.1用のプラグインなどの開発もして欲しいですね。
Windows Live Writerのプラグインは、こちらのエントリーを見るといいですよ。
窓の杜 - 【特集】ブログ投稿ソフト「Windows Live Writer」用プラグイン特集
windows live writerの設定で投稿できないエラーがでたばあい、文字コードをUTF=8に変更すると投稿できるようになる。(ブログ設置の編集>詳細設定)
MT3.34からMT4.1へシステムアップグレードしました。メインブログのテンプレートを変更する予定があったので、ついでのMT4.1にアップグレードしました。
データの移行は成功しました。とりあえず、所要時間は1時間程度(ネットアクセスの状況にもよる)。簡単にデータの移行ができたので一安心です。
さて、データ移行について簡単に手順を書き記しておきます。(サーバーは、Xrea)
id="" idの指定
id アトリビュートを指定して、特定のアイテムの一覧を生成する
たぶん、マルチブログで使えるのだと思う。
アイテムに指定したタグを使って一覧を生成するブロックタグ
上記のファンクションタグが使えるとのことだが、すべてのファンクションタグを使ってのサンプルコードなんかを考えてみないと。
ブログのアイテム一覧を表示させるためのブロックタグで使い方によっては、さまざまなテンプレートの中で指定(変数)することで一覧を作ることができる。
type="file_type"
例えば、
<MTAssets type="image"></MTAssets>
でimageタグを持つタグについての一覧のリストを生成することができる。
MovabletypeドキュメントBlogからのエントリーで条件分岐で行う効率的なテンプレート管理 - テンプレートの判別 | MovableType.jpより