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。

Googleショッピング データフィードの商品価格は税込表示が必要 – MovableTypeの消費税計算例

そろそろAdWordsでの商品リスト広告(PLA)もショッピングキャンペーンへアップグレードが必須となってきますが、
消費税率が5%から8%に変わり、データフィードの価格って税込みなのか、本体価格のみでもOKなのかちょっと迷いつつ、ECでは本体価格表示のためそのまま税抜き価格を利用していました。

Google Merchant Center

しかしながら、ショップ上では税抜き表示であっても、実売価格(税込み)での表示がフィードデータでは必要のようで、Google ショッピングよりご指摘をいただきました(汗)

たぶん自分もなにかしら見落としがあったのだと思いますが、もしかしたら修正されていない方もいらっしゃるのではと思い、ご参考までに。
AdWordsでのアップグレード時期も関係しているのか、こまめにチェックをされているのはAdWords利用者としてもありがたい気もします。

該当のショップがMovableTypeであったため、そちらもあわせて参考までに。
※ASPとかもう対応してるのだろうか…。

1
2
3
4
5
6
7
8
<!--xml-->
<$mt:price setvar="tax_calc"$>
<!--mt:priceはカスタムフィールドの値-->
<mt:SetVar name="tax_calc" value="1.08" op="*">
<mt:SetVar name="tax_calc" value="0.5" op="+">
<!--tax_calcに0.5を足して、小数点以下を切り捨て-->
<mt:GetVar name="tax_calc" regex_replace="/(\d*)\.(\d*)/","$1" setvar="tax_include">
<$mt:GetVar name="tax_include"$>

参考:MTタグで「四捨五入」の計算をする | MovableType.jp

MovableTypeのブログ記事リストに、最下層カテゴリーで上位と同じ階層のカテゴリーリンクを表示する

MTでアーカイブテンプレートのブログ記事リストに、同一カテゴリーのリンクを表示させようと思い、サクッといくと思っていたらちょっとハマったのでご紹介。

MTで同じ階層のカテゴリーリンクを設置

親カテゴリーのページ、サブカテゴリーがあるページに関しては問題なかったのですが、サブカテゴリーを持っていない末端カテゴリーページに、そのページと同じ階層(末端ページの親ページのサブカテゴリーページなど)や、

末端ページより上の階層にある、同一カテゴリーに属するページへのリンクを末端ページに表示させるのにちょっとハマりました。
※表示は<ul>~</ul>のリストで、全てのリンクの一覧表示です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<ul>
<!--親カテゴリーの表示-->
<mt:HasParentCategory>
<mt:ParentCategory>
<li><a href="<$mt:CategoryArchiveLink$>" title="<$mt:CategoryLabel remove_html="1"$>"><$mt:CategoryLabel remove_html="1"$></a></li>
</mt:ParentCategory>
</mt:HasParentCategory>
<!--/親カテゴリーの表示-->

<!--現在のサブカテゴリーの表示-->
<mt:HasSubCategories>
<mt:SubCategories include_current="1">
<li><a href="<$mt:CategoryArchiveLink$>" title="<$mt:CategoryLabel remove_html="1"$>"><$mt:CategoryLabel remove_html="1"><$mt:SubCatsRecurse$></a></li>
</mt:SubCategories>
</mt:HasSubCategories>
<!--/現在のサブカテゴリーの表示-->

<!-- サブカテゴリーがない場合、同じ階層(親ページのサブカテゴリー)のカテゴリを表示 -->
<mt:HasNoSubCategories>
<mt:ParentCategory>
<mt:SubCategories>
<li><a href="<$mt:CategoryArchiveLink$>" title="<$mt:CategoryLabel remove_html="1"$>"><$mt:CategoryLabel remove_html="1"><$mt:SubCatsRecurse$></a></li>
</mt:SubCategories>
</mt:ParentCategory>
</mt:HasNoSubCategories>
<!-- /サブカテゴリーがない場合、同じ階層のカテゴリを表示 -->
</ul>

heteml でKAGOYA 外部MySQL(MySQLプラン・共用)を使ってみた

MovableType 再構築の不具合がどうにか解消されないものかと、
費用抑えめの専用サーバー から、MT の動作が早いと評判のレンタルサーバーを教えてもらい、まとめていくつか試してみることにしました。

その中で、個人的にちょっと楽しみにしていたのがKAGOYA の『外部MySQL(MySQLプラン・共用)』
MySQL サーバーのみ、外部のものを利用できるとのことで、費用も共用で1GB 月/525円(最高10GB)と、かなり格安。
※専用プランも有り

現状で不具合解消を考えているのが、heteml を利用しているため、
改めて外部DB(MySQL) 利用の旨を問い合わせしたところ、heteml としてはOKとのことでした。

ちなみに、MT が早いという他のレンタルサーバー についても問い合わせしたところ、
各社、基本的に外部DB(MySQL) の利用はOKのようです。

さて、heteml での外部DB(MySQL) 利用についてどうであったかと結論から述べると、
現時点(2011年2月現在)では『接続できず』 というのが、まずの着地となってしまいました。(ホント残念)

というのも、カゴヤ 外部DB(MySQL) と、heteml のMySQL クライアントのバージョンが違うとのことで、
Movable Type のログイン画面の後、下記のようなエラーメッセージが表示されてしまいます。

しかしながら、KAGOYA の外部データベースサービスや、ましてやheteml についておすすめできない的な内容を書くつもりではなく、
現時点で、たまたまバージョンの相違があって利用できず、その件について個人的に時間を多少なりとも、費やしてしまったということをお伝えできればと思っています。

接続テスト の最中についても、KAGOYA、heteml ともにメールで何度も問い合わせを行ったのですが、
双方ともに、その対応の親切さには感謝しています。(ありがとうございます)

heteml については、一応、バージョン変更も案件にはあるそうですし、
もろもろと機能追加や変更など頻繁に行われていますので、今後次第ではないでしょうか。

再構築の不具合については、基本、MySQLサーバーのメモリなどのスペックが関係するようなので、
実際につないでみないことにはなんとも言えませんが、また近々、実際にMTの動作が機敏だった「sixcore」とかで試してみようと思ってます。

ちなみに、今回の件は個人的知識の範囲内でのまずの着地となりますので、
そのほかの方々であれば、もしかしたら可能なのかも知れません。悪しからず。

カゴヤ MySQLプラン

http://www.kagoya.jp/mysql/

heteml

http://heteml.jp

sixcore

http://www.sixcore.ne.jp/shared/index.php