2004年12月13日
[MT3.1] 企業内でのMoveble Type 3.1の利用
以前に「「なぜMovableTypeをいじってるのか」と言うタイトルで書いたが、自宅でBlogを書き出したきっかけは、勤務先で利用できるかも知れないと思ったからである。
俺としては、企業内での「メールマガジン」のバックエンドとしての利用を考えてる。
俺の勤務先には、社長メッセージ・事業部長メッセージ・本部長メッセージ・月別製品案内とか色々な「メールマガジン」があるし、お互いに引用しあってる (「社長メッセージにあるように」と書いてる事業部長メッセージとか) ので、企業内Blogってのはありだと思う。
現在、企業向けの一番安いライセンスで予定通り利用しているが、自分の備忘録も兼ねて、利用時の簡単なTipsを以下に書く。
1. 「Movable Type ニュース」を表示しない
Proxy Serverの関係で、Movable Typeニュースがタイムアウトして表示されない。どこにProxy Serverを記述すれば良いのか判らないし、Newsを表示させないようにする設定も判らない。
仕方がないので、/lib/MT/App/CMS.pmを編集して、ニュースを取りに行かないようにし、同時にテンプレートから「Movable Type ニュース」の部分を削除した。
/lib/MT/App/CMS.pmの下記をコメントへ
# $param{news_html} = MT::I18N::encode_text($app->get_newsbox_content( )||''', 'utf-8', undef); この行をコメントとした
/tmpl/cms/list_blog.tmplの下記部分を削除
<div class="news-box"> <h4><a href="http://<TMPL_VAR NAME=MT_PORTAL>/?v=<TMPL_VAR NAME=MT_VERSION>"><MT_TRANS phrase="Movable Type News"></a></h4> <div class="inner"> <TMPL_VAR NAME=NEWS_HTML> <p><MT_TRANS phrase="More news about "><a href="http://<TMPL_VAR NAME=MT_PORTAL>/?v=<TMPL_VAR NAME=MT_VERSION>">Movable Type</a>.</p> </div> </div>
2. MT-Previewプラグインの導入
記事を公開する前に、上司に確認する必要が出るかもしれない。その場合は、MT-Previewプラグインを導入すると、公開後の実際のイメージで確認を取ることができる。
3. 自動発行
Movable Type 3.1から標準機能となった「指定日時に記事を発行する」機能だが、同時に記事を発行したことをメールで案内できると便利だ。
/tools/run-periodic-tasksを以下のように改造すると、「概要(excerpt)」に概要が記述してある場合、通知リストの人に概要をメール送付することができる。
#!/usr/bin/perl -w
# Copyright 2001-2004 Six Apart. This code cannot be redistributed without
# permission from www.movabletype.org.
#
# $Id: run-periodic-tasks,v 1.5.2.1 2004/10/15 23:01:11 ezra Exp $
use strict;
use lib 'lib';
use lib 'extlib';
use constant VERBOSE => 0;
use MT;
use MT::Entry qw(:constants);
use MT::Util qw( offset_time_list );
my $mt = MT->new()
or die MT->errstr;
for my $blog (MT::Blog->load) {
my @ts = offset_time_list(time, $blog);
my $now = sprintf "%04d%02d%02d%02d%02d%02d",
$ts[5]+1900, $ts[4]+1, @ts[3,2,1,0];
print "Publishing entries for blog ", $blog->id, " up to ", $now, "\n"
if VERBOSE;
my $iter = MT::Entry->load_iter({blog_id => $blog->id,
status => FUTURE},
{'sort' => 'created_on',
direction => 'descend'});
my @queue;
while (my $entry = $iter->()) {
push @queue, $entry->id if $entry->created_on le $now;
}
my $changed = 0;
my $total_changed = 0;
my @results;
my %rebuild_queue;
foreach my $entry_id (@queue) {
my $entry = MT::Entry->load($entry_id);
print $entry->id, "\n" if VERBOSE;
$entry->status(RELEASE);
$entry->save
or die $entry->errstr;
# 追加ここから --------------------------------------------------
my $body = $entry->get_excerpt;
if( length($body) > 0 )
{
my $author = $entry->author;
my $mailfrom = $blog->name . ' <' . $author->email . '>';
$mailfrom = MT::I18N::encode_text($mailfrom, undef, 'jis');
$mailfrom = Jcode->new($mailfrom, 'jis')->mime_encode;
$mailfrom =~ s/\r?\n/\r\n/g;
my $mailto = $mailfrom;
my $subj = $entry->title;
my %head = ( To => $mailto, From => $mailfrom,
Subject => $subj);
$head{'MIME-version'} = '1.0';
$head{'X-Mailer'} = 'Movable Type 3.1';
$head{'Content-Transfer-Encoding'} = '7bit';
$head{'Content-Type'} = 'text/plain; charset=ISO-2022-JP';
require MT::Notification;
my $iter = MT::Notification->load_iter({ blog_id => $blog->id });
my $i = 1;
require MT::Mail;
while (my $note = $iter->())
{
next unless $note->email;
push @{ $head{Bcc} }, $note->email;
if ($i++ % 20 == 0)
{
MT::Mail->send(\%head, $body);
@{ $head{Bcc} } = ();
}
}
if ($head{Bcc} &qmp;&qmp; @{ $head{Bcc} })
{
MT::Mail->send(\%head, $body)
}
}
# 追加ここまで --------------------------------------------------
$rebuild_queue{$entry->id} = $entry;
my $n = $entry->next(1);
$rebuild_queue{$n->id} = $n if $n;
my $p = $entry->previous(1);
$rebuild_queue{$p->id} = $p if $p;
$changed++;
$total_changed++;
}
if ($changed) {
MT::Util::start_background_task(sub {
my $rebuilt;
foreach my $id (keys %rebuild_queue) {
my $entry = $rebuild_queue{$id};
$mt->rebuild_entry( Entry => $entry, Blog => $blog )
or die $mt->errstr;
$rebuilt++;
}
print "Rebuilt $rebuilt entries\n" if VERBOSE;
});
$mt->rebuild_indexes( Blog => $blog )
or die $mt->errstr;
}
print "$changed updated in blog ", $blog->id, "\n" if VERBOSE;
}
1;
投稿者 かつ : 2004年12月13日 22:01
この記事のトラックバックURL
トラックバック一覧 (1件)
-
エントリーのWYSIWYGプレビュー from coo MEMO
MT標準の[確認]って、ほんとに簡易的なプレビューという感じで、ちゃんと自分のスタイルシートが反映された画面を確認する事が出来ず、ストレスたまっていたんですよね...
トラックバック時刻 : 2005年01月21日 14:41
コメント一覧 (1件)
-
ニュースを消す方法を参考にさせていただきました。
こちらも、社内で実験的に作成したところ、管理画面を開くのが遅くて困っていたところでした。ありがとうございました。
投稿者 Hideaki : 2005年09月12日 15:52
新規にコメントする
| 年間カレンダー | |||||||||||||
| 2007 年 |
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 年 |
|
||||||||||||
| 2005 年 |
|
||||||||||||
| 2004 年 |
|
||||||||||||
| 2003 年 |
|
||||||||||||
| 2002 年 |
|
||||||||||||
| 2001 年 |
|
||||||||||||
| 2004年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 | |