« Previous | Next » (Home)     [カテゴリー:Movabletype ]

2005.11.24

post2blogでカテゴリー設定・・・(Movabletype)

メールからブログ投稿できるツールとして、post2blogを愛用させていただいている。
post2blogもカテゴリー設定機能がサポートされた新版がでたが、設定できるカテゴリーは固定で都合が悪い。 記事に複数のカテゴリーを設定することは、あまり無いと思えるが、カテゴリーを1つは設定したい。
そこで、メールの第1行目に Cat=山登り などと書いて、カテゴリーが設定できるように改造を試みた。
まず、下記の赤字部のように、$category_id の値は”0″にし、@categoriesの行はコメントアウトする。

my $blog_id = 1;
my $username = 'Melody';
my $password = 'Nelson';
my $category_id = 0;
#my @categories = (2, 3, 4);
my $parse_path = '/Users/Shared/post2blog';

次に、メールから設定したいカテゴリーの語句を取り出すため、下記の赤字部を追加、修正する。

my $cont;
my $dummy;
my $setName;
foreach (@texts) {
open(CONT, $_);
while (<CONT>) {
s/rn/n/g;
s/r/n/g;
if(/^Cat=/){
                   ($dummy,$setName) = split(/=/);
$setName =~ s/n//g;
$setName = $j->set($setName)->utf8;
}else{$cont = $cont.$_;}
}
close(CONT);
}

さらに、新しく投稿をPostしてカテゴリーをPostする間に、現在登録されているカテゴリーのリストを求めて、語句が一致するcategoryのidを求め、得られたidを引き継ぐようにする。

my $ret = $rpc->call('metaWeblog.newPost',
$blog_id,
$username,
$password,
{
'title' => $title,
'description' => $description,
'mt_text_more' => $text_more
},
0,
);
my $post_id = $ret->result();
   $ret = $rpc->call('mt.getCategoryList',
$blog_id,
$username,
$password,
);
my $ref =$ret->result();
my $catID;
my $catName;
my %tmp;
foreach(@$ref){
%tmp = %$_;
$catID = $tmp{"categoryId"};
$catName = $tmp{"categoryName"};
$catName = $j->set($catName)->utf8;
if($catName eq $setName){$category_id = 1;last;}
}
if ($category_id) {
my $cats;
$cats = [{ 'categoryId' => $catID, 'isPrimary' => 1, }];
#   foreach my $cat_id (@categories) {
#               push @$cats, { 'categoryId' => $cat_id };
#       }
$ret = $rpc->call('mt.setPostCategories',
$post_id,
$username,
$password,
$cats,
);
}
$ret = $rpc->call('metaWeblog.editPost',
$post_id,
$username,
$password,
{
'title' => $title,
'description' => $description,
'mt_text_more' => $text_more
},
1
);

これで、メールの1行目に Cat=History などと予め登録されている、カテゴリーの語句を書くと、そのカテゴリーが設定された投稿となる。
Cat=の文がなければ、カテゴリーは当然無設定になる。
最後に、私が現在使っているpost2blogの修正版を以下に付けて置く。
カテゴリー機能付きpost2blog

2005.10.22

MT-3.2 エントリータイトルの長さの改善・・・(Movabletype)

以前にエントリーの編集画面に表示されるタイトルの表示長がトリミングされて短くなり、特に日本語のタイトルでは適切でないので改善について書いた。
Movabletypeの3.17では、ややこしい変更が必要になったが、3.2版になって簡単になた。
MT/lib/MT/I18N/ja.pmを一箇所変更するだけである。
下記の赤字もように、オリジナルは11を20に修正する。 あまり大きくすると枠に収まりきらず2行になるので、20程度が適当と思える。

use constant DISPLAY_LENGTH_EDIT_PING_TITLE_FROM_EXCERPT => 25;
use constant DISPLAY_LENGTH_EDIT_PING_BREAK_UP => 30;
use constant DISPLAY_LENGTH_EDIT_ENTRY_TITLE => 20;
use constant DISPLAY_LENGTH_EDIT_ENTRY_TEXT_FROM_EXCERPT => 25;

2005.10.17

MT-3.2のリンク支援(決定版)・・・(Movabletype)

以前、MT-3.17でリンク支援のための改造を書いた。
そちらと合わせて見て欲しいが、MT-3.2になって、メニューを表示させるファイルが違ったものになった。
今度のファイルは/MT/tmpl/cms/blog-left-nav.tmplである。
改行が無いので、分りにくいが以下の部分を探して、赤字部分を追加する。

<TMPL_IF NAME=CAN_UPLOAD><li><a<TMPL_IF
NAME=NAV_UPLOAD> class="here"</TMPL_IF>
id="nav-upload" title="<MT_TRANS phrase="Upload File">"
href="#" onclick="window.open('<TMPL_VAR
NAME=MT_URL>?__mode=start_upload&blog_id=
<TMPL_VAR NAME=BLOG_ID>', 'upload',
'width=400,height=450,resizable=yes')"><MT_TRANS phrase="Upload
File"></a></li></TMPL_IF>
<TMPL_IF NAME=CAN_UPLOAD><li><a<TMPL_IF
NAME=NAV_UPLOAD>  class="here"</TMPL_IF>
id="nav-link" title="リンクの編集"
href="#" onclick="window.open('/mt/link.cgi?blog_id=
<TMPL_VAR NAME=BLOG_ID>', 'upload',
'width=550,height=450,resizable=yes')
">リンクの編集</a></li></TMPL_IF>

以前と同じだが、

(1) title=”<MT_TRANS phrase=”Upload File”>”をtitle=”リンクの編集”
(2) <MT_TRANS phrase=”Upload File”>を リンクの編集 に修正する。
(3) id=”nav-upload” を id=”nav-link”に変更。
(4)window.open(‘<TMPL_VAR NAME=MT_URL>?__mode=start_upload&blog_id=を
window.open(‘/mt/link.cgi?blog_id=に修正。

これで、メニュー表示用ファイルの改造は終了。
次に、小さなアイコンのnav-link.gifをMT/mt-static/imagesにコピー
小さなアイコンを表示するスタイルシートは/MT/mt-static/styles.cssである。
以下の赤字部分を追加する。

.sub a#nav-upload { background-image:
url(images/nav_icons/color/upload.gif); }
.sub a#nav-link { background-image: url(images/nav-link.gif); }
.sub a#nav-comments { background-image:
url(images/nav_icons/color/comments.gif); }

・・・/MT ディレクトリーに入れるlink.cgiは以前のを改造してTagをMT-3.2の流儀に合わせ、以下のようなlink.jsを各blogディレクトリーに吐き出すようにする。
文末に私の使っているlink.cgiを載せておく。

function getLinks(){
var link = new Array(); var data = new Array();
var html ="<div class='module-comment module'>";
html += "<div class='module-header'>リンク</div>";
html += "<div class='module-content'>";
html += "<ul class='module-list'>";
/* begin_data  */
link[0] = "FreeBSDJapan,http://www.jp.freebsd2.org/";
link[1] = "Nakaさんのページ,http://uls.fam.cx/nakamura/";
/* end_data  */
var num = link.length;
for(i = 0; i < num; i++){
data = link[i].split(",");
html += "<li class='module-list-item'><a href='"+data[1]+"'>"
+data[0]+"</a></li>";
}
html += "</ul></div></div>";
return html;
}

最後に、popupされるWindowだが、MT-3.2のスタイルシートの位置が
・・・/MT/mt-static/styles.cssに変わっているので、link.cgiで吐き出すhtml文部分のスタイルシート指定部分を直す。
また、styles.cssそのものもタグの名前が変わっているので、以前のlink.cgiで<div class=”list”>となっていたのを<div class=”link-list”>と直して、
styles.cssに以下の要素を追加した。

.link-list table th {
background-color: #8FAEBE;
color: #FFF;
vertical-align: middle;
text-align: left;
font-weight: normal;
padding: 2px 5px;
border-bottom: 1px solid #FFF;
font-size: 90%;
}
.link-list table {
font-size:  11pt;
padding:  0px;
width: 100%;
border-bottom: 1px solid #D7E3F5;
}
.link-list table tr.odd {
background-color: #EAF2FF;
}
.link-list table tr.even {
background-color: #FFF:
}

link.cgiで発生させるhtml文中の画像ファイルへのパスも変わり、<img src=”/mt/mt-static/images/topnav-logo-popup.gif”などのように指定する。
link.cgi-3.2
ダウンロードしたらlink.cgiに名前を変え、実行権限を与えてmt.cgiと同じディレクトリーに入れて使うこと。

2005.10.16

MT-3.2とpost2blog・・・(Movabletype)

MT-3.2のスタイル・シートの編集に苦しみながらも、何とか望みどおりのレベルに達したので、以前書いた軽量化のためにJavaScriptを使ってサイドパネル要素を外に追い出すことも試みた。
やり方、は同じだがTagの名前の違いと構造上の違いを意識して行えば、困難は無い。
次にpost2ブログでメール(携帯電話メールを含む)での投稿を試みたが、ここではまり込んでしまった。

以前から運用しているpost2blogをコピーして、URLを変えて使ったら、エラーも出ないのに、何も起こらず 当然blog画面にも反映されない。
URLとblog_idを運用している別のサーバにしたら、ちゃんと動くのでpost2blogは正常と思える。
さんざん、いじりまわしたがメールが受け付けられない。 ネットでしらべたらMT-3.2ではパスワードは通常のログイン用とAPIで受け付け用が別に用意する必要があることが分った。
メイン・メニューで投稿者を選び、自分のログイン名をクリックしたら、一番下にAPIパスワードを設定する入力ボックスが現れた。
これを設定して、めでたしめでたし、無事メール投稿が出来るようになった。

MT-3.2のインストール・・・(Movabletype)

Movabletype 3.2が出て、スパム対策のSpamFighterと言うのが実装されたとのこと。
スパムには悩まされていることでもあるし、インストールしてみるかと、色々と触ってみたので、しばらくはこのことについて書くことにする。

1. 前準備とインストール

(1) まず、現在運用しているMovabletype 3.17の動いているサーバとは別のサーバを用意し、運用状態のファイルをコピーして新たにMT-3.17の環境を作った。
(2) ここで、mt.cgiの動いているDirectryにMovabletype 3.2のダウンロードして解凍して入れ、Browserからmt.cgiにアクセスすると、upgradeする画面になり、簡単に移行できる。

2. 新規インストール

(1) しかし、余計な橋渡しのcgiファイルが幾つか出来て、あまり良い感じがしないので、MT Directry内のファイルを全て消して新規にインストールしてみた。
インストールすると言っても解凍ファイルを全て移すだけで、あとはMT 3.17ではmt.cfgファイルだったのが、mt-config.cgiに名前が変わっているので、これを編集する。
(2) 設定はCGIPathとDataSourceの位置(私は./db)ならびに文字コード(私はEUC)ぐらいである。
そして、mt.cgiをBrowerからアクセスしMt-3.17と同じように設定して行く。
(3) さて、ここでMT-3.17のエントリーをexportしてこれをimportして移行を試みた。
移行は簡単だが、サーバ名が違っているのでexportしたファイルに含まれるサーバ名は移行先のサーバ名にEditorなどで置換修正しておく必要がある。
うまく行ったので、スタイルシートもコピーしてと思ったが、メイン・インデックスのTagの名前がまるで違っているし、えらく構造化を意識した書き方になっている。

3. コラムデザイン

(1) それでは、MT-3.2のスタイル・シートをいじくって旧と同じようなデザインにすればよいと思ったが、これが大変。
もともと、標準で用意されているスタイル・シートはcolumnの数が1、2、3に対応しているのみならず、moblogにも使えるようになっているようで、えらく複雑だ。
(2) 標準で表示されるのは、右側にサイドパネルがある2コラムタイプだが、移したいのは3コラムのものなので、これを実現する必要がある。
(3) MT-32ではメイン・インデックスやスタイル・シートなどの設定ファイルもバックアップが簡単に取れるようになったので、メイン・インデックスをマークして選択画面の右上にあるテキストボックスでテンプレートを更新するを選んでバックアップしておき、引き続き編集する。
(4) まず、メイン・インデックスを開いてみると、<body class=”layout-two-column-right”>となっているので、<body class=”layout-three-column”>とする。
(5) 次に、メイン・インデックスの構造を見ると、画面の上にバナーを配置しバナーの下に配置する要素を左から”alpha”, “beta”, “gamma”と要素名をつけているようなので、”beta”の要素をコピーして<div id=”alpha”>の前に貼り付け、新たに これを”alpha”とする(<div id=”beta”> → <div id=”alpha”>)。
(6) そして、以前の”alpha”→”beta”, “beta→”gamma”と名前をずらす。
これで、サイトの確認で見ると見事に3コラム表示になっている。

ここまでは簡単だが、旧画面を再現するためにスタイル・シートをいじりだすと、まるで悪夢です。 まぁー、頑張ってやるしかないのですが・・・・
3コラムで旧画面類似の表示を実現するのに、およそ1日潰してしまったが、構造に対する理解も深まったので、もう1つの方は、スタイル・シートを白紙の状態から自分で書いてしまった。 この方が、よほどスッキリするし、早かった。
まだ、本blogは3.17版だが、3.2に向けての第一歩が終わった。
ここには書かなかったが、MT-3_2-ja.tar.gzをダウンロードして作業進めたとき、ブログの再構築で異常にメモリーの使用量が増えて(リミットの512MBまで行った)cgiがエラーする問題が生じた。 直ぐに2版(MT-3_2-ja-2.tar.gz)がでたので、入れなおす必要もあった。

« Previous | Next »