TopMovable Typeカスタマイズアイテム > 2010年11月
2010年11月19日

Movable Typeの管理サイトでFTPが使えないときにファイルをアップロードする裏ワザ

November 19,2010 2:55 AM
Tag:[, , ]
Permalink

Movable Typeの管理サイトでFTPが使えないときでもファイルがアップロードできる裏ワザです。

たとえば、緊急でプラグインをインストールしたいけど何らかの事情でFTPが使えないとか、FTPの情報が手元にないといった場合があるかもしれません。そのような場合、任意のウェブサイトまたはブログのアイテム機能を利用してファイルをアップロードします。

以下、手順の一例を示します。

1.ブログまたはウェブサイトのサイトパスを変更する

ブログまたはウェブサイトのサイトパスを、ファイルをアップロードしたいパス(またはそれより上位のパス)に一時的に変更します。プラグインファイルをアップロードしたい場合は、アプリケーションディレクトリなど、pluginsディレクトリより上位のパスを指定します。

変更前
変更前

変更後(アプリケーションディレクトリを指定)
変更後

なお次のように、ウェブサイトやブログのサイトパスがアプリケーションディレクトリより上位のパスになっているのであれば、サイトパスは変更する必要はありません。

ブログのサイトパス
ブログのサイトパス

アプリケーションディレクトリ
アプリケーションディレクトリ

注意点は、サイトパスを変更しているときに、記事やコメント投稿が行われないことが前提になります。サイトパス変更中に記事やコメント投稿が行われると、変更したサイトパスを基準にファイルが生成されてしまうためです。

どうしてもサイトパスが変更できない場合、新たにブログまたはウェブサイトを作成し、そのサイトパスを利用するという手もあります。

2.ファイルをアップロードする

サイトパス変更後、ファイルをアップロードします。プラグイン用のディレクトリなどは直接入力します。通常のアイテムのアップロードと同様、ファイルは1つずつしかアップロードできません。

次の例は、サイトパスをアプリケーションディレクトリに変更し、TwitCommentプラグインのconfig.yamlをアップロードする場合の指定です。

ファイルのアップロード

アップロード後のアイテム一覧
アイテム一覧

必要なファイルのアップロードが完了したら、サイトパスを元に戻します。あるいは一時的に作成したブログまたはウェブサイトを削除します。

3.アップロードしたファイルをアイテムの管理対象外にする

アップロードしたファイルをアイテムの管理対象外にしたい場合、サイトパスを元に戻せば、アイテムに登録されたファイルは参照できなくなるので、該当のアイテムを削除すれば、アップロードしたファイルを残したままアイテムの管理対象外にすることができます。

サイトパスを変更した後のアイテム一覧
アイテム一覧

サイトパスを変更していない場合、アップロードファイルはアイテムと紐づいたままになっているので、以下のいずれかの方法で対処します。1つめの方法は事後にFTPが可能になることが前提です。

  • アップロードしたファイル名を一時的に変更してアイテムを削除する
  • サイトパスを一時的に変更してアイテムを削除する
Comments [0] | Trackbacks [0]
2010年11月17日

Movable Typeのブログ記事で未使用のアイテム一覧を表示する

November 17,2010 1:55 AM
Tag:[, , ]
Permalink

Movable Typeのテンプレートを使って、ブログ記事で未使用のアイテムを表示するTipsです。

1.サンプル

あるブログに次のように4つのアイテム(画像)を登録しているものとします。

アイテム一覧

このアイテムのうち、2つのアイテムをブログ記事で使用しています。

ブログ記事に登録しているアイテム

この状態で、2項に示すサブテンプレートを利用すれば、ブログ記事で使っていないアイテム一覧をリストすることができます。

アイテム一覧

2.サブテンプレート

利用するサブテンプレートは次のようになります。

<mt:Assets type="image">
  <mt:AssetID setvar="key" />
  <mt:AssetLabel setvar="value" />
  <mt:SetVar name="asset_list{$key}" value="$value" />
</mt:Assets>
<mt:Entries>
  <mt:EntryAssets type="image">
    <mt:AssetID setvar="asset_id" />
    <mt:GetVar name="delete(asset_list)" key="$asset_id" setvar="tmp" />
  </mt:EntryAssets>
</mt:Entries>
<mt:loop name="asset_list">
  <mt:if name="__first__">
<ul>
  </mt:if>
  <li><mt:GetVar name="__value__" /></li>
  <mt:if name="__last__">
</ul>
  </mt:if>
</mt:loop>

以下、サブテンプレートの解説です。

まず、最初のMTAssetsタグに「type="image"」を設定し、画像のアイテム一覧のハッシュを生成します。MTAssetsタグブロック内部で、アイテム情報をハッシュ変数asset_listに保存します。ハッシュのキーがアイテムID、ハッシュの値がアイテムの名前になります。

<mt:Assets type="image">
  <mt:AssetID setvar="key" />
  <mt:AssetLabel setvar="value" />
  <mt:SetVar name="asset_list{$key}" value="$value" />
</mt:Assets>

次のMTEntriesタグで、ブログ記事で使っているアイテムを、先程作成したハッシュから削除します。ハッシュから削除するには、MTGetVarタグとnameモディファイアにdelete関数を使って対象のハッシュ変数を指定し、keyモディファイアに削除対象のハッシュキーを設定しますが、deleteした時点で削除対象のハッシュの値が出力されるので、setvarモディファイアで変数tmpにおいやり、画面に表示しないようにします。

<mt:Entries>
  <mt:EntryAssets type="image">
    <mt:AssetID setvar="asset_id" />
    <mt:GetVar name="delete(asset_list)" key="$asset_id" setvar="tmp" />
  </mt:EntryAssets>
</mt:Entries>

最後のMTLoopタグで、ハッシュの一覧を出力します。ここで出力されたアイテムがブログ記事で使われなかったものになります。

<mt:loop name="asset_list">
  <mt:if name="__first__">
<ul>
  </mt:if>
  <li><mt:GetVar name="__value__" /></li>
  <mt:if name="__last__">
</ul>
  </mt:if>
</mt:loop>

もっと簡単に振り分ける方法があると思いますし、本来は管理画面で実現すべきなのですが、とりあえず1アイデアとして展開しておきます。

Comments [9] | Trackbacks [0]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

AMN
Categories
Monthly Archives
2020年
2019年
2018年
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3