mt」の最近のブログ記事

javascriptでウィンドウサイズを指定。
<script type="text/javascript">
function pop(obj) {
wobj = window.open("", "pop","scrollbars=yes,width=480,height=360");
obj.target = "pop";
wobj.focus();
return true;
}
</script>
任意の箇所に下記を記述。
<form method="post" action="任意" target="pop" onsubmit="return pop(this)">

Page Top

覚え書きついでにムーバブルタイプでURLを一切変更させずにPHP化する方法を掲載しておきたいと思います。CMS的に使っている場合は部分的にphpを使うことでナビゲーションやコピーライトなどを連動させることで再構築が不要になります。

あっ正確にいうと、ムーバブルタイプをスタティックパブリッシングのままで、サイトの一部のみをphp化するという感じになると思います。

1.グローバルテンプレートをphpで吐き出すように変更。

各共通パーツはグローバルテンプレートで用意されているのが基本だと思います。そのグローバルテンプレートをphpで吐き出すように変更しておきます。

グローバルテンプレートの「footer」などを分かりやすく「footer.php」などに変更し、必要に応じて内部の該当箇所にphpコードを記述します。

//MTタグの場合
Copyright© 2009-<mt:Date format="%Y" />
//PHP記述の場合
Copyright© 2009-<?php echo date("Y");?>

2.テンプレートの設定のファイルへのリンクを設定する。

phpファイルをひとまとめにしておくため、インストールディレクトリ配下にpartsなどのディレクトリを用意しパーミッションを755に変更。ファイルへのリンクはparts/footer.phpなどに設定し、partsフォルダ内に各phpを吐き出すように設定する。

3.mt-config.cgiを変更する

標準ではphpファイルを666で吐き出してしまうため、644で吐き出させる設定を行う。mt-config.cgiに下記を追記し、アップロード。

DBUmask 0022
HTMLUmask 0022
UploadUmask 0022
DirUmask 0022
HTMLPerms 0755
UploadPerms 0755

4.htmlのままphpとして動作するように設定する

現状の拡張子のままphpとして動かす処理をしないとURLがすべて変更になってしまいます、.htaccessに下記を追記します。

//htaccessの通常の記述方法
AddType application/x-httpd-php .html
//xserverの場合の記述方法(PHP5)
AddHandler x-httpd-php5 .php .phps .html

5.phpを各テンプレートで読み込ませる

今まではMTIncludeでモジュールを読み込ませていたものを手順「1」で設定したphpファイルを読み込ませるように置き換えていきます。

//MTタグでの記述
<$MTInclude module="footer"$>
//PHPタグでの記述
<?php include("http://www.xxxxx.com/mt/parts/footer.php"); ?>

以上で、各テンプレートで「再構築なし」でも常にfooter.phpを読み込みます。

footer.phpなどに下記の記述し、ブラウザを更新した際に最新の時間に更新されていれば常に最新のデータを読み込んでいることがテストできます。

<?php echo date("Y/m/d g:i");?>

これでグローバルテンプレートを修正しても全てのページで自動的に反映されます。

Page Top

MT4系では標準のエディターでボタンがコメントアウトされているものがある。該当ファイルは下記だが、コメントアウトを解除しても動作しない。

/tmpl/cms/include/archetype_editor.tmpl

忘れないために覚え書き。

Page Top

よく使うMovableTypeのタグをまとめておきます。
毎回検索して時間ロスを感じながらもなかなかできなかった。

エントリー関連

<mt:MultiBlog include_blogs="ブログID"> //ブログを指定
<MTEntries></MTEntries> //エントリー
<$MTEntryTitle$> //タイトル
<$MTEntryBody$> //本文
<$MTEntryExcerpt$> //内容
<$MTEntryCommentCount$> //投稿されたコメント
<$MTEntryTrackbackCount$> //トラックバック
<$MTEntryDate> //日付

カテゴリ関連

<MTEntryIfCategory name="カテゴリー名"> //該当カテゴリーの場合に出力
<MTSubCategoryPath&> //カテゴリパスを表示

アイテム関連

<$MTAssetThumbnailLink$> //オリジナルファイルへのリンク付きのサムネイル

URL関連

<$MTBlogURL$&> //ブログの絶対URL
<$MTBlogRelativeURL$> //ブログの相対URL
<$MTBlogName$> //ブログ名
<$MTEntryPermalink$> //エントリーへのパーマリンク

ユーザー関連

<$MTAuthorID$> //ユーザーID 番号
<$MTAuthorName$> //ユーザー名表示

インクルード関連

<$MTInclude module="ヘッダー"$> //モジュール呼び出し
<$MTInclude file="file.php"$> //ファイル読み込み
<$MTWidgetSet name="サイドバー(左側)"$> //ウィジェット読み込み

テンプレート関連

<mt:If name="テンプレート名"> //基本
<mt:If name="main_index"> メインページ 
<mt:ElseIf name="archive_index"> アーカイブインデックス

変数関連

<$mt:SetVar name="オリジナル名" value="1"$> //テンプレートに名前をつける

どんどん追加していきまーす。

Page Top

よくある一般的な日付パターン

<$MTEntryDate format="%Y年%m月%d日"$>
一桁の場合に0をつけて表示 (2010年11月05日)

<$MTEntryDate format="%Y年%b月%e日"$>
一桁の場合に0をつけずに表示 (2010年11月5日)

<$MTEntryDate language="jp"$>
日本語ですべてを表示 (2010年11月05日 19:40)

<$MTEntryDate language="en"$>
英語ですべてを表示 (Nov 05,2010 7:40 PM)

format属性を指定できる値

%Y
年を、4桁の数字で表示 
(例: 2002)

%y
年を、2桁の数字で表示
1桁の場合は0が付加 (例: 09)

%b
月の名前を、省略形式で表示
(例: Sep、9)

%B
月の名前を、完全形式で表示
(例: September、9)

%m
月を2桁の数字で表示
1桁の場合は0が付加 (例: 09)

%d
日付を2桁の数字で表示
1桁の場合は0が付加 (例: 08)

%e
日付を2桁の数字で表示
1桁の場合は  (空白) が付加 (例:  8)

%j
年初からの日を3桁の数字で表示
1桁2桁の場合は0が付加 (例: 078)

%H
時刻を24時間形式の2桁の数字で表示
1桁の場合は0が付加 (例: 08)

%k
時刻を24時間形式の2桁の数字で表示
1桁の場合は、  (空白) が付加 (例:  8)

%I
時刻を12時間形式の2桁の数字で表示
1桁の場合は、0が付加 (例: 08)

%l
時刻を12時間形式の2桁の数字で表示
1桁の場合は、  (空白) が付加 (例:  8)

%M
分を2桁の数字で表示
1桁の場合は、0が付加 (例: 09)

%S
秒を2桁の数字で表示
1桁の場合は、0が付加 (例: 09)

%p
午前か午後を表示
AM、もしくはPMを表示

%a
曜日を省略形式で表示
(例: Tue、火)

%A
曜日を完全形式で表示
(例: Tuesday、火曜日)

%w
曜日を0 ~ 6の数字で表示
日曜日が0になります。

%x
言語に合わせて日付を表示
ほとんどの言語では、%B %d, %Yと同じ
(例: September 06, 2002、2002年09月06日)

%X
言語に合わせて、時刻を表示
ほとんどの言語では、%I:%M %pと同じ (例: 04:31 PM、16:31)

Page Top

MTOS活用テクニック(著書)を使えば、MTOSにもカスタムフィールドが導入できます。

しかし各フィールドを追加した際に「ブログ記事の一括編集後、追加フィールドに保存したデータが消えてしまう」のと「個々のアイテムの管理画面で、サイドバーの利用状況に、該当ブログへのリンクが出ない」という症状が確認できました。

そこで著書の藤本壱さんに質問してみたところすぐに回答があり、修正ソースをいただきました。この度は早急なご対応本当にありがとうございました。

1.ブログ記事の一括編集に関する修正

該当するカスタムフィールドのプラグインに下記一文を追加する。

sub save_entry_field {
    my ($eh, $app, $entry, $orig_entry) = @_;
    ##下記ソースを追加##
    return 1 if ($app->param('__mode') eq 'save_entries');
    ##ここまで##
    require MTOSHelper;
    MTOSHelper::scf_save_image($app, $entry, 'top_image');
    ...
}

2.アイテム関連(asset管理)の修正

MTOSHelperプラグインのMTOSHelper.pm内にある「scf_save_image」サブルーチンを、以下のように変更。

sub scf_save_image {
   my ($app, $obj, $field) = @_;

   my $value = $app->param("scf_${field}");
   my $id;
   if ($value =~ m!]*?\smt:asset-id=["'](\d+)["'][^>]*?>(.+?)!gis) {
       $id = $1;
   }
   $obj->column($field, $id);
   ##下記ソースを追加##
   my $obj_asset = MT->model('objectasset')->get_by_key({
       asset_id => $id,
       blog_id => $obj->blog_id,
       object_ds => $obj->class,
       object_id => $obj->id,
   });
   $obj_asset->save;
   ##ここまで##
   1;
}

なお著書の藤本壱さんの公式サイトでも記事が紹介されています。

◆「MTOS活用テクニック」の一部修正
http://www.h-fj.com/blog/archives/2010/12/25-170645.php

Page Top

運用中のレンタルサーバーでcronが使えればMTでは指定日時間公開ができます。この機能はとても便利な機能で、後は放っておいても時間が来れば勝手に公開してくれます。

1.どのタイミングでcronを実行させるかを決定する。
設定はサーバーの操作パネルにて「分、時、日、月、曜日」の五つを設定。

毎時実行させる場合
分:0
時:*
日:*
月:*
曜日:*

毎朝9時に実行させる場合
分:0
時:9
日:*
月:*
曜日:*
※オール「*」で毎分設定が可能ですがサーバー負荷を考え避けるようにしましょう。

2.次にcronに実行パスを設定します。

cd /home/xxxxx/xxxx.com/public_html/mt/; ./tools/run-periodic-tasks

※コマンド欄の「cd」と「/」の間、及び「;」と「.」の間には「半角スペース」が入っていますので注意して下さい。各パスは環境に合わせて変更ください。

上記を記述し、サーバーにアップロードしているrun-periodic-tasksを実行可能なパーミッションに変更する、xserverなら755、hetemlなら705など。

上記の設定が終われば、指定タイミングでcronが実行されるようになります。

あとはMT側で記事を保存する際に「日時指定」にしておくと、日時指定を過ぎてからcron設定のタイミングでrun-periodic-tasksが実行され記事が自動公開されます。

しかし、run-periodic-tasksではあくまでも記事の公開のみを行うため、アーカイブテンプレートは再構築されません。管理画面から手動で再構築を行えば問題ありませんが、それではなんだか自動な感じがあまりしません。そこで下記です。

◆すべてのブログをいっぺんに再構築するスクリプト
http://labs.m-logic.jp/2007/05/rebuild_all.html

3.すべてのファイルを再構築するスクリプトを設定。

上記サイトからスクリプトをダウンロードし、tool内にファイルをアップロードし、もうひとつcronを設定を追加してあげます。

cd /home/xxxxx/xxxx.com/public_html/mt/; ./tools/rebuild_all
※アップロード後はファイルのパーミッション変更を忘れずに。

以上で「自動投稿&自動再構築設定」が完了です。

cronを店舗オープン時間などに設定しておくとオープンと同時に記事を公開することもできますので、1日に一回などの設定がベストではないかと思います。

Page Top

/tmpl/cms/include/login_mt.tmpl

内の該当箇所にvalue値をセットする。

<input id="username" class="ti" name="username" value="ID" />
<input id="password" class="ti" name="password" type="password" value="PASS" />

上記はユーザー名をID、パスワードをPASSとした場合。

覚え書き。

Page Top

mt-config.cgi に以下を追記

AutoSaveFrequency 0

Page Top

Movable Type 4.27とMovable Type 4.28の差分ファイルは下記。

lib/MT/CMS/Tools.pm
lib/MT/Template/ContextHandlers.pm
lib/MT.pm
mt-check.cgi
php/extlib/ezsql/ezsql_postgres.php
php/lib/mtdb_base.php
php/mt.php

Page Top

カレンダー

<   2011年12月
        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 28 29 30 31