Under the Bridge

a Picture of the Late Him

嵌りメモ(perlのxampp環境でのファイル吐き出し実験)

2008年10月14日 23:08 | Writer: yoshi | 記事本文 | コメント(0) | トラックバック(0)

Windows版のxampp環境で、プラグイン開発時に嵌ると思われる部分のメモ。

だいぶ嵌った。途中間が空いたが、2週間ほど嵌り続けた。

ことの発端は「MT4.2:QRコード画像を生成するプラグイン」で、ディレクトリまで指定するとQRコードの画像ファイルを書き出せなかったことにある。

こんな些細なことだったのね...

例えばこんなプラグインコードがあるとする。

注意:以下はとりあえず動作する切り貼り的なコードである。コール元ではMTTagsタグ内で<MTOutput path="$mypath" file="$myfile">などと呼び出し、ブログ中で使用されているタグをタグ個数だけ同じファイルへ上書きして、そのフルパスを返す、というめちゃくちゃなコード。実験用です...。


package MT::Plugin::OutPut;
use strict;
use MT::Plugin;
use base qw(MT::Plugin);
our $VERSION = '0.1';
use MT::Template::Context;
use File::Spec;

my $plugin = new MT::Plugin::OutPut({
    id => 'OutPut',
    key => 'output',
    name => 'OutPut',
    version => $VERSION,
    description => 'OutPut',
    author_name => 'apstar',
    author_link => 'http://www.mtde.info/',
});
MT->add_plugin($plugin);

sub init_registry
{
    my $plugin = shift;
    $plugin->registry({
        tags => {
            function => {
                'OutPut' => \&_hdlr_output,
            },
        },
    });
    
}

sub _hdlr_output {
    my ($ctx, $args, $cond) = @_;
    my $path = $args->{path};
    my $file = $args->{file};
    my $tag = $ctx->stash('Tag');
    #return '' unless $tag;
    my $name = $tag->name || '';
    if ($args->{quote} && $name =~ m/ /) {
       $name = '"' . $name . '"';
    } elsif ($args->{normalize}) {
        $name = MT::Tag->normalize($name);
    }
    $name;

my $url = File::Spec->catfile($path,$file);

open(OUT,">$url");
binmode OUT;
print OUT $name;
close OUT;

return $url;
}

1;

呼び出し元は。Windows版xamppで動作させる(ファイルを吐き出させる)には以下のようにせねばいけないみたいだ。


<MTSetVarBlock name="mypath">C:\xampp\htdocs\test</MTSetVarBlock>
<MTSetVar name="myfile" value="mamagege.csv">

<MTTags>
<MTOutput path="$mypath" file="$myfile">
</MTTags>

注意点

  • ファイルは、C:\xampp\htdocs\test\mamagege.csvを指定せねばいけない。
  • MTSetVarBlockは改行するとスペースが入るので駄目(またお前かよ...という感じ)。

つまり以下のようなコードでは駄目だ。


<MTSetVarBlock name="mypath">
<MTBlogURL>
</MTSetVarBlock>
<MTSetVar name="myfile" value="mamagege.csv">

<MTTags>
<MTOutput path="$mypath" file="$myfile">
</MTTags>

これが駄目な点

  • http://localhost/test/mamagege.csvでは駄目だ。
  • というか上記コードではhttp://localhost/test//mamagege.csvとなる。「/」がひとつ多い。
  • MTSetVarBlockは改行するとスペース入るんで駄目。

後記

かなり勘違いしてたし、今も勘違い継続中かも知れん。

この辺を読んだ。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 嵌りメモ(perlのxampp環境でのファイル吐き出し実験)

このブログ記事に対するトラックバックURL:

コメントする






Categories
Entries
Feed
スポンサードリンク

parts

フィードメーター - Under the Bridge

あわせて読みたい

なかのひと

2008 yoshi(apstar)