Movable Typeで記事がコピー作成できるプラグイン「Copy This Entry」。便利だけどちょっと注意も

Movable Typeで記事を作成する際に、たぶん誰しもが思う「なぜ記事のコピー(複製)がないんだろう…。」という思い。

詳細は違っていても、項目やカスタムフィールドでの入力内容など、大筋で同じような商品説明などでは必須のような機能ですが、なぜかMTではデフォルトでは存在しません。
しかいしながら、「Six Apart, Ltd.」を冠とした記事の複製ができるプラグインがあります。

Movable Typeプラグイン「Copy This Entry」
Copy This Entry
WordPressでもそうですが、可能な限りプラグインは使いたくないほうですが、この「Copy This Entry」は必須。製作者の方ほんとにありがとうございます。
このプラグインのお陰で記事の制作時間は3割削減(自分比)は間違いなし。日頃の作業で非常に重宝しています。

しかしながら、自分の使用しているMovable Typeの環境が原因も拭いきれませんが、なんと不具合?とも思われる症状が。もしかしたらあえての仕様かもしれまんので、その際は自分のように分かってないやつもいたということでご了承ください。

コピーした元記事の階層(カテゴリ)が引き継がれない

コピーしたあとの記事の編集ページの「カテゴリ」箇所ではしっかりと複製元のカテゴリを継承しているかのように見えるのですが、記事を保存してみるとなんとURLの階層が第2階層までとなり、第3階層が削除されてしまいます。

コピーした元記事の階層(カテゴリ)が引き継がれない

上記の画像の記事を指定している階層(カテゴリ)は第4階層(ディレクトリ)まであり、記事ファイルはその下。

http://examle.com/dir01/dir02/dir03/post.php

しかし、Copy This Entryを使用して複製した記事ページを保存すると、上記の画像のようにカテゴリが第2階層までとなってしまいます。

そこで、再度改めてコピーした記事を保存する際にカテゴリを指定し直すと、意図している階層でパーマリンクが作成されます。

カテゴリを指定し直す

上述のようにもしかしたら仕様でそうなっているのかもしれませんし、プラグインをすべてOFFにするなどでテストしてみましたが、それでも自分の環境・構築方法のせいかもしれません。

もし同一の症状でも、そのまま意図していない階層でも記事自体は表示・閲覧されますので、使用している方でお心当たりの方は一度ご確認をおすすめします。

追伸

Movable Type Pro version 6.2にアップグレードしてからなのですが、記事の編集ページの「表示オプション」の並び替えって、ちょっと挙動がおかしくないですか?
カスタムフィールドの絡みなのかもしれませんが、ドラッグアンドドロップでの並び替えが上手くできず…。
プラグインを全部オフにしたりブラウザを変えてみたりしたのですが、やっぱりダメ(汗)

Movable Type 5.2からMovable Type 6へのアップグレード方法【図解付き】

2015年9月をもってサポートおよび脆弱性対応が終了したMovable Type 5.2。
そこで、Movable Type 6へアップグレードを行いましたので、アップグレード方法のまとめとなります。

基本的なアップグレード方法の解説となりますが、一部、入れ子になっているmt:Elseタグの不具合っぽい症状もみられましたので、そちらもあわせてご紹介となります。

①ライセンス購入

まずはライセンスの購入。今回もラウンロード製品版の「Movable Type ソフトウェア版」を選択。
アップグレード前のバージョンは5.2のため、バージョンに伴う事前作業は必要ありませんでした。

>> ライセンスのご案内(通常/学校・教育機関向けアカデミック/開発者/個人無償)| CMS プラットフォーム Movable Type

>> 5.12、5.06、4.37以前のバージョンからアップグレードした後に必要な作業 : Movable Type 6 ドキュメント

②Movable Typeのダウンロード

上記にてライセンス購入後、「シックス・アパート ユーザーサイト」より該当の製品をダウンロードしておきます。

シックス・アパート ユーザーサイトからダウンロード
シックス・アパート ユーザーサイト

その際に、ログインで事前に登録したSAIDとパスワードが必要となります。

③バックアップ

データベースや既存のMovable Typeのファイルなど、必要に応じてローカルへダウンロード・バックアップを行っておきます。

phpMyAdminでデータベースをバックアップ

※環境によりバックアップ時に「DROP TABLE / VIEW / PROCEDURE / FUNCTIONを追加」にチェック。

phpMyAdmin を利用したデータベースのバックアップ・リストア

今回、サーバーはkAGOYAで自動バックアップを行っているため、データベース以外の完全データバックアップについてはそちらを事前バックアップの代わりに。

>> ファイルのバックアップとリストア – KAGOYA Internet Routing

④新しいmtフォルダをアップロード

ダウンロードしたMovable Type 6フォルダを解凍後、mtアプリケーションディレクトリをサーバーへアップロードします。

その際、既存のアプリケーションディレクトリ(mt)と被らないよう「mt_6」などにリネームしてアップロードし、
アップロード後、既存のアプリケーションディレクトリ(mt)を「mt_52」などに変更後、「mt_6」としていた新しいアプリケーションディレクトリ名を「mt」へ戻します。

mtアプリケーションディレクトリをリネーム

クライアントはTransmitを使ってます。

アップロード&リネーム後(リネーム前でもOK)、既存のmtディレクトリにある設定ファイルの「mt-config.cgi」新しいmtディレクトリへを移動し、新しいmtアプリケーションディレクトリ内のcgiファイルのパーミッションすべてを「755」へ変更します。

この際、新しいmtディレクトリに入っているmt-config.cgi-originalは削除しておきます。

新しいmtフォルダに入っているmt-config.cgi-originalは削除

⑤mt.cgi にサインイン、アップグレードを行う

http://example.com/mt/mt.cgi へアクセスし、『アップグレードウィザード』が実行します。
その後は自動でアップグレードが開始されます。

アップグレードウィザードを実行

⑥プラグインを移動

新しいアプリケーションディレクトリ(mt)のプラグインディレクトリ(mt/plugins/)へ、今まで使用していたプラグインを移動します。

プラグインディレクトリへプラグインを移動

また、「mt/plugins/」内のプラグインだけでなく、プラグインによっては「mt/mt-static/plugins/」に保存されているものもあるので、必要に応じてそのプラグインも移動します。

必要に応じてmt-static/plugins/にプラグインを移動

⑦ブログ別などで検索結果を分けている場合

スマートフォン用サイトなど、ウェブサイトに別途ブログで制作をしていて、検索結果ページ(使用プログラム: /mt/mt-search.cgi)を分けている場合があると思います。

その場合、以下のようにスマホ内で指定している検索結果用テンプレート(◯◯◯◯.tmpl)を、アプリケーションディレクトリ(mt)のsearch_templates ディレクトリへFTPなどで移動する必要があります。

<input type="hidden" name="Template" value="拡張子なしの検索テンプレート名">
※管理画面ではウェブサイトテンプレートの「テンプレートモジュール」箇所で同テンプレートが見られるかと思います。

●移動先ディレクトリ
/mt/search_templates/

⑧再構築

アプリケーションディレクトリ内のパーミッションの確認やプラグインの移動を行った後、すべての再構築を行います。
再構築終了後、実際にサイトを確認して不具合などの確認を行います。

入れ子になっているmt:ElseIfで一部不具合?

再構築後、カスタムフィールドでMTElseを使って分岐している箇所が表示されないなど不具合を発見。

以下に、「入れ子になっている MTIf の中で…」とありMTElseにnameモディファイアやtagを付けてみたのですが改善せず。
もしかしたら、「入れ子になっているMTElse側」にもなにか不具合があるのかもしれません。
※2015/10/01現在。

入れ子になっている MTIf の中で name モディファイアを省略して MTElse、MTElseIf タグを利用した場合、判定結果が正しくない問題を修正しました。(#111805)
Movable Type 6.0.4 リリースノート : Movable Type 6 ドキュメント

問題点の切り分けのため以下を試してみましたが、最終的にmt:ElseIfタグをmt:Elseタグへ変更し、取り急ぎの改善策としました。
MTIfと入れ子になっていないMTElseIfについては不具合が見られないため、カスタムフィールドのタグで判別し、「入れ子」になっている場合が該当するように思います。

改善(分岐)されたなかった修正

  • ・</mt:ElseIf>の閉じタグ有り、name・tagなしで分岐せず。
  • ・</mt:ElseIf>の閉じタグなし、<mt:ElseIf name="◯◯◯◯"> nameモデファイア有りで分岐せず。
  • ・</mt:ElseIf>の閉じタグなし、<mt:ElseIf tag="◯◯◯◯"> tag有りで分岐せず。

改善(分岐)された修正

「改善」ではないですが、コードの状況により改善策の代替になるかと。

  • ・<mt:Else>〜</mt:Else>の閉じタグなし有りで分岐OK。

MovableType(version 5.12)で親カテゴリーと子カテゴリーを見出しつきで表示する方法


Fatal error: Call to private method CodeColorer::performHighlightCodeBlock() from context '' in /virtual/kots/public_html/kazunoriiguchi.com/blog/wp-content/plugins/codecolorer/codecolorer-core.php on line 55