「Movable Type」と一致するもの

Movable Typeでsitemap.xmlを出力する

ブログ移行完了記念としてMovable Typeに対するカスタマイズはまだまだ続きます(≧∇≦)

Movable Typeでsitemap.xmlを出力することができないのかなぁとググッてみたら、Movable Typeの公式サイトで普通に紹介されてましたΣ
検索エンジン用サイトマップの作成 - Movable Typesitemap作成 - MovableTypeリアルゲットを参考にし、以下のように作成しました。

ダッシュボード→[ブログ]→[デザイン]→[テンプレート]から[インデックステンプレートの作成]をクリックします。
[出力ファイル名]を"sitemap.xml"とし、以下の通りテンプレートを作成します。

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<MTIgnore>メインインデックス</MTIgnore>
<url>
<loc><$MTBlogURL encode_xml="1"$></loc>
<lastmod><$MTDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>


<MTIgnore>ブログ記事</MTIgnore>
<MTEntries lastn="0" sort_by="modified_on">
<url>
<loc><$MTEntryPermalink encode_xml="1"$></loc>
<lastmod><$MTEntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
</MTEntries>

<MTIgnore>カテゴリ</MTIgnore>
<MTArchiveList archive_type="Category" sort_by="modified_on">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<changefreq>daily</changefreq>
<priority>0.7</priority>
</url>
</MTArchiveList>

<MTIgnore>月次アーカイブ</MTIgnore>
<MTArchiveList archive_type="Monthly" sort_by="modified_on">
<url>
<loc><$MTArchiveLink encode_xml="1"$></loc>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
</MTArchiveList>

<MTIgnore>全エントリー</MTIgnore>
<url>
<loc><$MTBlogArchiveURL$>index.html</loc>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>

<MTIgnore>ページ</MTIgnore>
<MTPages lastn="0" sort_by="modified_on">
<url>
<loc><$MTPagePermalink encode_xml="1"$></loc>
<lastmod><$MTPageModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod>
<changefreq>daily</changefreq>
<priority>0.5</priority>
</url>
</MTPages>
</urlset>

折角なので全エントリーもsitemap.xml含めるようにしました。
テンプレートを再構築するとsitemap.xmlが実際に出力されます。

作成したsitemap.xmlをGoogle等の検索エンジンに食わせることで、効率的にクロールしてもらえます(´∀`)

Movable Typeのテンプレートを色々変更

ブログアップグレード時の備忘録として書き残しておきます。

・メタタグへのキーワード出力の追加
記事の書き込み画面に[キーワード]があります。これを<meta>タグへ出力することでSEO対策します。
詳しい解説はMovable TypeでメタキーワードのSEO - アレグロマーケティングに譲ります。
ダッシュボード→[ブログ]→[デザイン]→[テンプレート]から[アーカイブテンプレート]→[記事]をクリックします。
<meta>タグがある箇所に「<meta name="keywords" content="<$mt:EntryKeywords$>">」を入れて、[変更を保存]ボタンをクリックします。
その後、記事テンプレートを再構築します。

・タイトル画像の追加
Rainierテンプレートを使用している場合の画面トップ部分の画像を追加する方法がMovable Typeの公式サイトに書かれていました。
Rainierのカバー画像を自分の好きな写真に変えてみよう - Movable Type
ダッシュボード→[ブログ]→[アイテム]→[新規]からファイルをアップロードした後、[タグ]に"@SITE_COVER_IMAGE"のシークレットタグを指定することで背景画像が設定されるのですね。
今回使用した猫画像はGoogle画像検索で再利用が許可されたものを利用させて頂きました。
電車と猫の画像で再利用可能なものを見つけたら、差し替えようと思います。

・余計な文字置換機能の停止
Movable Typeのデフォルト設定では「…」(三点リーダ)を「...」(半角ピリオド3つ)に勝手に変更する機能が有効のようです。
三点リーダーをそのまま表示させる設定方法 - hostingjediを参考にし、余計な文字置換機能を停止させました。
ダッシュボード→[ブログ]→[設定]→[投稿]から[Word特有の文字を置き換える]→[句読点置き換え]を[置き換えない]をクリックします。
その後、[変更を保存]すれば、その後は余計な文字置換機能が無効になります。

・全エントリーアーカイブへのリンク追加
せっかく、前回の記事で全エントリーを出力アーカイブテンプレートを作成しているのにどこからもリンクしないのはもったいないので、全エントリーアーカイブへのリンクを追加しました。
ダッシュボード→[ブログ]→[デザイン]→[ウィジェット]から[ウィジェットテンプレート]→[月別アーカイブ(ドロップダウン)]をクリックします。
テンプレートを以下のように修正します。
※赤字が追記箇所です。

<mt:IfArchiveTypeEnabled archive_type="Monthly">
<mt:ArchiveList archive_type="Monthly">
<mt:ArchiveListHeader>
<nav class="widget-archive-dropdown widget">
<h3 class="widget-header">アーカイブ</h3>
<div class="widget-content">
<select>
<option>月を選択...</option>
</mt:ArchiveListHeader>
<option value="<$mt:ArchiveLink encode_html="1"$>"><$mt:ArchiveTitle$></option>
<mt:ArchiveListFooter>
</select>
</div>
<div class="widget-content">
<ol><li><a href="<$MTBlogArchiveURL$>index.html">全エントリー</a></li></ol>
</div>
</nav>
</mt:ArchiveListFooter>
</mt:ArchiveList>
</mt:IfArchiveTypeEnabled>

皆様のご参考にもなれば幸いですm(_ _)m

Movable Typeで全エントリー一覧を出力したいと考えました。
調査の結果、以下の方法で可能でした。

ダッシュボード→[ブログ]→[デザイン]→[テンプレート]から[アーカイブテンプレート]→[アーカイブテンプレートの作成]→[記事リスト]を選択します。
以下の通り、テンプレート名(例えば、「全エントリー」等)を入力した後、以下のテンプレートで作成します。

<$mt:Var name="entries_per_page" value="10"$>

<$mt:Var name="search_link" strip="" trim="1" encode_html="1" setvar="search_link"$>

<!DOCTYPE html>
<html lang="<$mt:BlogLanguage$>">
<head>
<meta charset="<$mt:PublishCharset$>">
<title>全エントリー - <$mt:BlogName encode_html="1"$></title>
<$mt:Include module="HTMLヘッダー"$>
</head>
<body>
<div id="container">
<div id="container-inner">
<header id="header" role="banner">
<div id="header-inner">
<$mt:Include module="バナーヘッダー"$>
<$mt:Include module="Navigation"$>
</div>
</header>
<div id="content">
<div id="content-inner">
<ul class="breadcrumb breadcrumb-list">
<li class="breadcrumb-list-item"><a href="<$mt:BlogURL template="main_index" encode_html="1"$>">Home</a></li>
<li class="breadcrumb-list-item">全エントリー</li>
</ul>
<div id="category-main" class="main" role="main">
<section id="posts">
<h2>全エントリー</h2>
 <ul>
  <MTEntries lastn="0">
  <li>
<time datetime="<$mt:EntryDate format_name="iso8601"$>"><$mt:EntryDate format="%x"$></time>
<a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a>
</li>
  </MTEntries>
 </ul>
</section>
</div>
<aside class="widgets related" role="complementary">
<$mt:WidgetSet name="関連コンテンツ"$>
</aside>
</div>
</div>
<footer id="footer" role="contentinfo">
<div id="footer-inner">
<$mt:Include module="バナーフッター"$>
</div>
</footer>
</div>
</div>
<script src="<$mt:StaticWebPath encode_html="1"$>jquery/jquery.min.js"></script>
<script src="<$mt:Link template="javascript_theme" encode_html="1">"></script>
</body>
</html>

[保存]ボタンをクリックし、一旦保存します。
[▶テンプレートの設定]をクリックした後、[新しいアーカイブマッピングを作成]をクリックします。
[種類]から[ユーザー]プルダウンメニューを選択し、[追加]ボタンをクリックします。
[パス]に"index.html"を指定すると、アーカイブディレクトリの直下に"index.html"で全エントリーを出力するファイルを作成します。
※電車猫ブログの場合、「https://traincat.net/blog/neko/archives/index.html」になります。

前提条件として「Rainier」スタイルを利用しています。他のスタイルでは編集が必要かもしれません。
でもRainierスタイルってレスポンシブデザインなのでPCでもスマホでも最適な画面に切り替わるので便利ですね。

以上、Movable Type 6で全エントリー一覧のリンクを出力する方法でした。

ブログ移転作業をしている当初、このブログはMTOS (Movable Type Open Source) 5.2.9で構築しました。
ロリポップ簡単インストール機能により比較的簡単に設置できたのですが、MTOSがVer5.2.13で開発終了となり、2015年9月を以ってEOL(End of Lifecycle)となってしまいました。
MTOS を使い続けると、脆弱性があっても対策できないことを意味し、自宅サーバから移転した理由がなくなってしまうので、更新することにしました。

・MTOS 5.2.9→5.2.13
Movable Type 5.2.x系の最終バージョンには変更し、脆弱性に対して強固にすべきと考え、取り急ぎ5.2.13にアップデートすることにしました。
ロリポップでのMovable Type簡単インストール機能での提供は2015年6月で終了しているので、Movable TypeのMTOSのダウンロードからダウンロードしました。
5.2.9のMTOSのファイルをバックアップした後、解凍した5.2.13のスクリプトを上書き更新します。
その後、mt.cgiにアクセスするとアップデート処理が掛かり、更新できました。
同じ系統のスクリプトだったので、大きなトラブルはなく対応できました。

・MTOS 5.2.13→MT 6.2.2
こちらはちと面倒でした。
まず、Movable Type 5.2.13で作成したファイルをバックアップすべく、静的コンテンツ(HTMLファイル)とSQLiteのDBファイル(mt.db)をダウンロードし、ダッシュボードの[移行対象のブログ]→[ツール]→[記事のエクスポート]から記事を出力します。
その後、Movable Type 6.xの最新版を入手します。
Movable Type 6.x系はMovable Typeのサイトからのみダウンロード可能です。個人利用ですのでMovable Type 個人無償版ダウンロードから現時点の最新版であった6.2.2のスクリプトをダウンロードします。

Movable Type 6 へのアップグレードのドキュメントを見る限り、SQLiteのDBが使えなくなり、MySQLへの移行が必要に見えましたが、そんなことはなかったです。
SQLiteを使用したMovable Type 6の移行方法はさくらインターネットのライトプランでMovable Type 6を導入 - らっぱ王子を参考に作業を進めました。
バージョンが異なるMovable Typeだったので、上書き更新は避け、MTOSをインストールしている同階層に新しいディレクトリを作成し、スクリプトをアップロードしました。その後、旧ディレクトリを「mt」から「mt-backup」にし、新しいディレクトリを「mt」にリネームします。最後に、旧ディレクトリにあった「db」という名前のフォルダ一式を新しいディレクトリにコピーします。
その後、mt.cgiにアクセスし、DBの設定でSQLiteのパスを設定し、メールの設定を確認すると、ダッシュボードを無事表示することができました。

これでめでたしめでたしと言いたかったのですが、そうは問屋がおろしてくれませんでしたorz
ブログを再構築したところ、CSSが適用されず、真っ白の画面が表示されました。
ダッシュボード→[ブログ]→[デザイン]→[スタイル]から[Rainierスタイル]を選択したところ、以下のエラーが発生しました。

テーマの読み込みでエラーが発生しました!
スタイルライブラリを読み込めませんでした。

スクリプトファイルの転送漏れもなく、ファイルもパーミッションも問題ありませんでした。
エラーメッセージの日本語と英語(「Error loading themes!」、「Failed to load StyleCatcher Library」)をキーワードとして検索しましたが、対処方法が書かれたサイトを見つけられませんでした。
何時間掛かりましたが、思わぬ場所に原因がありました。
ダッシュボード→[ブログ]→[デザイン]→[テーマ]から[Rainier 1.2.1]の[再適用]ボタンをクリックし、その後再構築することで、CSSの適用がされるようになりました。
アップグレードしたときには、[再適用]しないとダメなんですね…

ただ、テーマを再適用してしまった為、テンプレートのカスタム内容が消失してしまいました。
※[テーマ]の再適用が原因なのか、その後[スタイル]の[Rainierスタイル]の適用が原因なのかは分かりませんが、どちらにしてもテンプレートのカスタム内容が消失したのは事実です。
独自テンプレートを追加したり、既存のテンプレートをカスタマイズされている方は、その箇所のバックアップも別途記録して置いたほうが安全かと思われます。

テンプレートのカスタマイズ作業をし直して、現在に至ります。
この作業をしてから電車猫ブログを公開すれば良かったですね…
せっかくなので、カスタマイズしたテンプレートについては別途記事にしたいと思います。

この投稿は指定日になったら自動的に投稿できるように設定されております。

Movable Typeでは「公開の状態」を「指定日」にすることができるんですね。公開する日時を設定することでその日時に投稿する事が可能です。
が、この機能を使用するには事前に設定が必要です。

アロマネット株式会社 - Movable Type で、指定日投稿機能を利用するためには
NEC 8番街 - cron の設定ガイド

cronを定期的に呼び出し、その時間以前の公開日時になっているエントリーを公開するという仕組みのようです。ですので、数分ごとにcronを呼び出すように設定しない限り、指定された公開日時にすぐに反映されるというわけではないようです。ただ、cronのジョブでは起動時間を設定できるので、Movable Typeの公開日指定機能に必要なrun-periodic-tasksを起動させる時間の直前を公開日時にしておけば大幅なズレはなくなります。
数分ごとに起動するように設定すると、サーバの負荷が大きくなりますし、だからと行って1日数回じゃあまり意味がないとのことで、現在、私は30分ごとに設定いたしました。(自宅サーバなので数分ごとでも問題ないっちゃ問題ありませんがw)

そんなわけで、投稿できるネタがあるときは1日1エントリを目標にしている私にとって非常に重宝しそうです。
cronを実行できる環境でMovable Typeを稼働している皆さん、是非活用してください( ̄∇ ̄)ノ♪