category

MT.net のエントリを Craft CMS に移行する

2019-05-02

Movabletype.net の方で書いてた記事もとりあえずこっちに持ってきた。

mersy.net
https://bitpart.movabletype.io...

これからは普通に評価版として使っていこうかな、と。

先日はMTからエントリを持ってきたわけですが。

2019-04-30

今回は Movabletype.net からってことでとりあえずテンプレートタグが全く同じではないので、JSONでの移行ではなくて、 atom でやることにした。

encode_json とか色々手間かかりそうだったので。
もともと用意されてる feed 用のテンプレートを元に調整。

とりあえずコード。

<$mt:HTTPContentType type="application/atom+xml"$><?xml version="1.0" encoding="<$mt:PublishCharset$>"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title><$mt:BlogName remove_html="1" escape="xml"$></title>
  <link rel="alternate" type="text/html" href="<$mt:BlogURL escape="xml"$>" />
  <link rel="self" type="application/atom+xml" href="<$mt:Link template="feed_recent"$>" />
  <id>tag:<$mt:BlogHost exclude_port="1" escape="xml"$>,<$mt:TemplateCreatedOn format="%Y-%m-%d"$>:<$mt:BlogRelativeURL escape="xml"$><$mt:BlogID$></id>
  <updated><mt:Entries blog_ids="children" include_with_website="1" lastn="1"><$mt:EntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></mt:Entries></updated>
  <mt:If tag="BlogDescription"><subtitle><$mt:BlogDescription remove_html="1" escape="xml"$></subtitle></mt:If>
  <generator uri="https://movabletype.net/"><$mt:ProductName version="1"$></generator>
<mt:Entries lastn="999">
<entry>
  <title><$mt:EntryTitle remove_html="1" escape="xml"$></title>
  <link rel="alternate" type="text/html" href="<$mt:EntryPermalink escape="xml"$>" />
  <id><$mt:EntryAtomID$></id>
<slug>mn_<mt:Entrybasename></slug>
  <published><$mt:EntryDate language="en"$></published>
  <updated><$mt:EntryModifiedDate utc="1" format="%Y-%m-%dT%H:%M:%SZ"$></updated>
  <summary><$mt:EntryExcerpt remove_html="1" escape="xml"$></summary>
  <author>
    <name><$mt:EntryAuthorDisplayName escape="xml"$></name>
    <mt:If tag="EntryAuthorURL"><uri><$mt:EntryAuthorURL escape="xml"$></uri></mt:If>
  </author>
<tags><mt:EntryCategories>
<tag><$mt:CategoryLabel escape="xml"$></tag>
</mt:EntryCategories></tags>
  <content type="html" xml:lang="<$mt:BlogLanguage ietf="1"$>" xml:base="<$mt:BlogURL escape="xml"$>">
    <$mt:EntryBody regex_replace="/https:/\/bitpart\.movabletype\.io\/mersy\/.assets\//g","/assets/" regex_replace="/https:/\/bitpart\.movabletype\.io\/mersy\//g","/" escape="xml"$>
  </content>
</entry>
</mt:Entries>
</feed>

MTEntriesの調整

<mt:entries lastn="999">

MTEntries がサイト内色々引っ張る感じになってて余計なのもインポートしてしまった。失敗。

識別用に slug を追加。URLもこれで変わるけどまぁ

<slug>mn_<mt:Entrybasename></slug>

日付は @tinybeans の教えをまもって変更

<published><$mt:EntryDate language="en"$></published>

カテゴリをタグとしてインポートするので tags/tag の構成に変更

<tags><mt:EntryCategories>
<tag><$mt:CategoryLabel escape="xml"$></tag>
</mt:EntryCategories></tags>

本文部分を置換する。
正規表現使えるようになってるのありがたい。

<$mt:EntryBody regex_replace="/https:/\/bitpart\.movabletype\.io\/mersy\/.assets\//g","/assets/" regex_replace="/https:/\/bitpart\.movabletype\.io\/mersy\//g","/" escape="xml"$>

画像が /.assets/ にはいってたんだけど、サイトから手動で丸っと引っ張ってきたときに /assets/ になったので置換。

regex_replace - タグリスト | MovableType.net
https://movabletype.net/tags/2...

gオプションの記載がないけど使えた。

サイトURLもかわるのでルートに置換。
記事内にサイト内リンクとかもあったかもしれないですが、そこは今回スルーで。

画像は手動で丸っととってきたのをサーバー上においた。
今回はassetsで、Craft のは asset にしてたから被らなかったけど、変に別れたのが気持ち悪い。
画像パス置換するんだから変更してもよかったかもなー。

画像とかはとりあえずSiteSuckerで取ってきた。

SiteSucker for macOS
https://ricks-apps.com/osx/sit...

これである程度は移行できたんじゃないかなー。

バラバラになってたのをひとまとめにできた気はする。