2010年10月

カテゴリごとに表示スタイルを変える

制作中のサイトで、「交渉中」と「交渉可能」のステイタス分けをしてほしいとクライアントさんから要望がありました。

カスタムフィールドを作って、一度表示可能にしたのですが、これ「交渉中」ならそれだけ集めた表示ができるようにしたいなと思い、カテゴリー機能を使う事にしました。カテゴリ別ページが使えますから。

さて、カテゴリー分けするのは簡単ですが、「交渉中」と「交渉可能」が同じスタイルで表示されるのは分かりづらいですね。そこで、「交渉中」は赤、「交渉可能」は青で表示できるように、スタイルシートを設定しました。

以下、その部分のスタイルシート

--------------

.catstyleka {
 font-size: 0.75em;
 line-height: 150%;
 color: #005890;
}
.catstyletyu {
 font-size: 0.75em;
 line-height: 150%;
 color: #ff0000;
}
--------------

そして、以下はテンプレートに記述した分岐部分

---------------

<MTIfCategory name="交渉可能">
<span class="catstyleka"><$mt:CategoryLabel$></span>

<MTElse>
<MTIfCategory name="交渉中">
<span class="catstyletyu"><$mt:CategoryLabel$></span>
<MTElse><span class="catstyle"><$mt:CategoryLabel$></span>
</MTElse>
</MTIfCategory>
</MTElse>
</MTIfCategory>
---------------------

で、どれにも当てはまらない場合のスタイルを<MTElse>で設定しましたが、当てはまらないカテゴリーが存在しないとエラーが出ます。
ダミーでもカテゴリーを何か作っておく必要がある模様。

MTOSカスタムフィールドを一つのプラグインにまとめる

進行中のサイト、カスタムフィールドに入力したデータが、ページでテーブルにいれ込んで表示するようにしました。
項目が15くらいあるんだけど、プラグイン15個つくってインストールしていました。バカ真面目だな私。
(プラグインの作成方法についての参考書:藤本 壱著「MTOS活用テクニック」ラトルズ発行)

でも、このタイプのページが二つあって、さすがに二つ目の時はうんざりしてしまい、参考書をみてたら、あるではないですが。「一つのプラグインで複数のフィールドを作成する」(う~ん。早く気付こうよ。)

超楽でした!

以下、自作マルチプラグイン「UKMulti.pl」

---------------------

package MT::Plugin::UKMulti;
use base 'MT::Plugin';

use strict;

use MT;
use MT::Plugin;
use MT::Template::Context;
use MT::Entry;


# register plugin
my $plugin = __PACKAGE__->new({
    name => 'MultiField',
    key => 'multi_field',
    version => '1.02',
    author_name => 'Yuko Watase',
    description => 'Add multi fields.',
    schema_version => '1.02',
});
MT->add_plugin($plugin);

# initialize registry
sub init_registry {
    my $plugin = shift;
    $plugin->registry({
        object_types => {
            'entry' => {
                'uk_gyousyu' => 'string(255)',
                'uk_area' => 'string(255)',
                'uk_mensekimini' => 'string(255)',
                'uk_mensekimax' => 'string(255)',
                'uk_otime' => 'string(255)',
                'uk_ctime' => 'string(255)',
                'uk_tenpof' => 'string(255)',
                'uk_sekiminif' => 'string(255)',
                'uk_sekimax' => 'string(255)',
            },

        },
        tags => {
            function => {
                UKgyousyu => \&uk_gyousyu,
                UKarea => \&uk_area,
                UKmensekimini => \&uk_mensekimini,
                UKmensekimax => \&uk_mensekimax,
                UKotime => \&uk_otime,
                UKctime => \&uk_ctime,
                UKtenpof => \&uk_tenpof,
    UKsekimini => \&uk_sekiminif,
    UKsekimax => \&uk_sekimax,


                },
        },
        callbacks => {
            'cms_pre_save.entry' => {
                priority => 9,
                code => \&save_entry_field,
            },
           
        }
   });
}

sub save_entry_field {
    my ($eh, $app, $entry, $orig_entry) = @_;

    $entry->uk_gyousyu($app->param('uk_gyousyu') || '');
 $entry->uk_area($app->param('uk_area') || '');
    $entry->uk_mensekimini($app->param('uk_mensekimini') || '');
    $entry->uk_mensekimax($app->param('uk_mensekimax') || '');
    $entry->uk_otime($app->param('uk_otime') || '');
    $entry->uk_ctime($app->param('uk_ctime') || '');
    $entry->uk_tenpof($app->param('uk_tenpof') || '');
    $entry->uk_sekiminif($app->param('uk_sekiminif') || '');
    $entry->uk_sekimax($app->param('uk_sekimax') || '');
 
    1;
}

 

 


sub uk_gyousyu {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_gyousyu || '';
}

sub uk_area {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_area || '';
}

sub uk_mensekimini {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_mensekimini || '';
}

sub uk_mensekimax {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_mensekimax || '';
}

sub uk_otime {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_otime || '';
}

sub uk_ctime {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_ctime || '';
}

sub uk_tenpof {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_tenpof || '';
}

sub uk_sekiminif {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_sekiminif || '';
}

sub uk_sekimax {
    my ($ctx, $args) = @_;

    my $entry = $ctx->stash('entry')
        or return $ctx->_no_entry_error();
    $entry->uk_sekimax || '';
}

1;

 

---------------------

下北沢で働くことになりました

アルバイトですが。

WEBの仕事になります。

最初の打ち合わせの後、下北散策してみました。
学生のころよくふらっと訪れていましたが、だいぶ様変わりしましたね。南口は、飲食店がめっちゃくちゃ多くなってました。昔は、古着屋とか雑貨屋とかばっかりだったのに。逆の北口(東?)が、今はそういう雰囲気ですね。

忙しくなりそうですが、頑張ります。

1

▲トップへ戻る

* FEED


presented by 地球の名言