Webとメールに特化したクラウド型レンタルサーバー。php5.3 MySQL5.1 root権限 ssh対応、複数ドメイン。色々対応で月額5,250円!!

7月 10

最近TVCMで見かけた「高濃度茶カテキン飲料 炭酸」が気になっています。以前、お茶バージョンを飲んだ主人に聞いたところ「まずい」の一言でしたが、この炭酸バージョンなら飲みやすいかも・・・と挑戦してみようか思い迷っているhiakoです。

MTテンプレートセットの作成手順(1)」に引き続き、MTのテンプレートセットの作成手順をご紹介します。

 

テンプレート使用宣言ファイル(Pluginファイル)の制作

では、実際に制作へ取り掛かっていきましょう。MTサイトで自作も出来ますよ~っと紹介してある「テンプレートセットの登録」とは一体どういったものかを検証するために今回は作成したので、シンプルに2カラムのみとしました。
MTサイトからダウンロードしたベースとなるPerl版サンプルを解凍すると、下の画像のように1フォルダ1ファイルがあるかと思います。「my_plugin.pl」というファイルが使用するテンプレートなどを宣言し、それ自身がPluginとなるPerlファイルです。

ダウンロードファイル一覧

Perlファイルをテキストエディタで開き、編集してみましょう。(注:ファイル名は変更しないでくださいね。)

package MT::Plugin::MyPlugin;

use strict;
use MT::Plugin;
@MT::Plugin::MyPlugin::ISA = qw(MT::Plugin);

use vars qw($PLUGIN_NAME $VERSION);
$PLUGIN_NAME = 'MyPlugin';
$VERSION = '0.1';

use MT;
my $plugin = new MT::Plugin::MyPlugin({
    name => $PLUGIN_NAME,
    version => $VERSION,
    description => 'MyPlugin Description.',
    author_name => 'Plugin Author Name',
    author_link => 'http://plugin.author/url/',
});

MT->add_plugin($plugin);

sub init_registry {
    my $plugin = shift;
    $plugin->registry({
        template_sets => {
            my_set => {
                label => "My Template Set",
                base_path => 'templates/',
                order => 100,
                templates => {
                    index => {
                        'homepage' => {
                            label => 'My Homepage',
                            outfile => 'index.php',
                            rebuild_me => '1',
                        },
                    },
                    individual => {
                        'entry' => {
                            label => 'Blog Entry',
                            mappings => {
                                entry_archive => {
                                    archive_type => 'Individual',
                                    preferred => '0',
                                },
                            },
                        },
                    },
                    archive => {
                        'another_entry' => {
                            label => 'Another Blog Entry',
                            mappings => {
                                entry_archive => {
                                    archive_type => 'Individual',
                                    file_template => '%c/%f',
                                    preferred => '1',
                                },
                            },
                        },
                        'entry_listing' => {
                            label => 'Blog Entry Listing',
                            mappings => {
                                monthly => {
                                    archive_type => 'Monthly',
                                },
                                category => {
                                    archive_type => 'Category',
                                    file_template => '%c/index.html',
                                },
                            },
                        },
                    },
                    system => {
                        'search_results' => {
                            label => 'Search Results',
                            description_label => '',
                        },
                    },
                    module => {
                        'foo' => {
                            label => 'Foo Module',
                        },
                    },
                },
            },
        },
    });
}

1;
package MT::Plugin::hiako;

use strict;
use MT::Plugin;
@MT::Plugin::hiako::ISA = qw(MT::Plugin);

use vars qw($PLUGIN_NAME $VERSION);
$PLUGIN_NAME = 'hiakoPlugin';
$VERSION = '1.0';

use MT;
my $plugin = new MT::Plugin::hiako({
    name => $PLUGIN_NAME,
    version => $VERSION,
    description => 'hiako@KIDS-WAYが検証のために作成してみたテンプレートセットプラグインです。2カラムにしか対応しておりません。',
    author_name => 'hiako',
    author_link => 'http://www.dc-d.jp/',
});

MT->add_plugin($plugin);

sub init_registry {
    my $plugin = shift;
    $plugin->registry({
        template_sets => {
            hiako1_set => {
                label => "hiako Template",
                base_path => 'templates/',
                order => 20,
                templates => {
                    index => {
                        'index_homepage' => {
                            label => 'ホーム',
                            outfile => 'index.html',
                            rebuild_me => '1',
                        },
                        'index_blog' => {
                            label => 'ブログのメインページ',
                            outfile => 'index_blog.html',
                            rebuild_me => '1',
                        },
                        'index_style' => {
                            label => 'スタイルシート',
                            outfile => 'style.css',
                            rebuild_me => '1',
                        },
                        'index_archive' => {
                            label => 'アーカイブインデックス',
                            outfile => 'index_archive.html',
                            rebuild_me => '1',
                        },
                        'index_atom' => {
                            label => '最新記事',
                            outfile => 'index_atom.xml',
                            rebuild_me => '1',
                        },
                        'index_rsd' => {
                            label => 'RSD',
                            outfile => 'index_rsd.xml',
                            rebuild_me => '1',
                        },
                        'index_javascript' => {
                            label => 'Javascript',
                            outfile => 'index_javascript.js',
                            rebuild_me => '1',
                        },
                    },
                    individual => {
                        'archive_entry' => {
                            label => 'ブログエントリー',
                            mappings => {
                                entry_archive => {
                                    archive_type => 'Individual',
                                    file_template => '%y/%m/%-f',
                                    preferred => '1',
                                },
                            },
                        },
                        'archive_web' => {
                            label => 'ウェブページ',
                            mappings => {
                                page_archive => {
                                    archive_type => 'Page',
                                    file_template => '%-c/%-f',
                                    preferred => '1',
                                },
                            },
                        },
                    },
                    archive => {
                        'archive_data_based' => {
                            label => 'アーカイブデータベース',
                            mappings => {
                                monthly => {
                                    archive_type => 'Monthly',
                                    file_template => '%y/%m/%i',
                                    preferred => '1',
                                },
                            },
                        },
                    },
                    system => {
                        'system_search_results' => {
                            label => '検索結果',
                            description_label => '',
                        },
                        'system_comme_preview' => {
                            label => 'コメント確認',
                        },
                        'system_comme_complete' => {
                            label => 'コメント完了',
                        },
                        'system_popupimg' => {
                            label => 'ポップアップ画像',
                        },
                    },
                    module => {
                        'module_header' => {
                            label => 'ヘッダー',
                        },
                        'module_footer' => {
                            label => 'フッター',
                        },
                        'module_footer2' => {
                            label => 'ブログメインページ用フッター',
                        },
                        'module_sideber' => {
                            label => 'サイドバー',
                        },
                        'module_sideber2' => {
                            label => 'ブログメインページ用サイドバー',
                        },
                        'module_navigation' => {
                            label => 'ナビゲーション',
                        },
                        'module_webpage' => {
                            label => 'ウェブページの詳細',
                        },
                        'module_category' => {
                            label => 'カテゴリー',
                        },
                        'module_blog_gaiyo' => {
                            label => 'ブログ記事の概要',
                        },
                        'module_blog_shosai' => {
                            label => 'ブログ記事の詳細',
                        },
                        'module_blog_meta' => {
                            label => 'ブログ記事のメタデータ',
                        },
                        'module_tag' => {
                            label => 'タグ',
                        },
                        'module_track_back' => {
                            label => 'トラックバック',
                        },
                        'module_comme' => {
                            label => 'コメント',
                        },
                        'module_comme_shousai' => {
                            label => 'コメント詳細',
                        },
                        'module_comme_input' => {
                            label => 'コメント入力フォーム',
                        },
                   },
                    widgetset => {
                        'widgetset_activity' => {
                            order => 1000,
                            label => 'アクティビティ',
                            widgets => [
                            	 '最近のコメント',
                            ],
                        },
                        'widgetset_archive' => {
                            order => 1000,
                            label => 'アーカイブ',
                            widgets => [
                            	 'カテゴリアーカイブ',
                            	 '月別アーカイブ',
                            ],
                        },
                        'widgetset_sideber' => {
                            order => 1000,
                            label => 'メインサイドバー',
                            widgets => [
                            	 '最近のブログ記事',
                            ],
                        },
                    },
                    widget => {
                        'widget_category_archive' => {
                            label => 'カテゴリアーカイブ',
                        },
                        'widget_powered_by' => {
                            label => 'Powered by',
                        },
                        'widget_new_comme' => {
                            label => '最近のコメント',
                        },
                        'widget_new_ently' => {
                            label => '最近のブログ記事',
                        },
                        'widget_monthly_archive' => {
                            label => '月別アーカイブ',
                        },
                        'widget_serch' => {
                            label => '検索',
                        },
                    },
                },
            },
        },
    });
}

1;

上記上段がダウンロードしたPerlファイルの中身です。下段が私が作成したPerlファイルの中身です。それぞれ分かりやすいように、変更していく(変更していった)箇所には色をつけました(黄色系の色)。ピンクで色付けした部分も変更できますが、全て同一した文字列でなければいけません(日本語はNG)。また、宣言している使用テンプレート実ファイルはダウンロードしたままでは足りないので、さらに付け足した部分が多くあります。順に説明していきますので、まずはPlugin名などを記述している頭から18行目を見ていきましょう。

5行目までは、おそらく(Perlの知識が乏しいので断定できなくてごめんなさい。)「MTのプラグインをこれから作りますよ~」などの宣言だと思うので、飛ばします。前述もしましたが、ピンク色の部分は同一した文字列であれば、変更しても大丈夫です。

8行目、9行目の

«ダウンロードファイル» 

$PLUGIN_NAME = 'MyPlugin';
$VERSION = '0.1';
«hiako作成ファイル» 

$PLUGIN_NAME = 'hiakoPlugin';
$VERSION = '1.0';

で簡単な英語表記なのでお分かりかと思いますが、このプラグインの名前とプログラムバージョンを記述します。

13行目、14行目では
上記で代入したプラグイン名とプログラムバージョンを宣言しています。

15行目~17行目の

«ダウンロードファイル»

description => 'MyPlugin Description.',
author_name => 'Plugin Author Name',
author_link => 'http://plugin.author/url/',
«hiako作成ファイル» 

description => 'hiako@KIDS-WAYが検証のために作成してみたテンプレートセットプラグインです。2カラムにしか対応しておりません。',
author_name => 'hiako',
author_link => 'http://www.dc-d.jp/',

上から順に【プラグインの説明】【作成者の名前】【作成者へのリンク】となっています。必須項目ではないので、必要なければ削除してしまってかまいません。また、上2項目については日本語OKです。

ではここからが本題と言っていいでしょう!テンプレートの使用宣言などを記述する22行目以降の説明に移ります。

ここからはさらにブロックに分けて説明していきます。

テンプレートセットのベース部分(テンプレートセット・オプション)

さぁここまでは、Pluginとしての記述でしたが、ここからはテンプレートセットとしての記述が始まります。完成まで道のりはまだ長いですが、がんばりましょう。また、説明がしやすいように私がこのテンプレートセットを作成した際に参考にしたbzbellさんのページと同様に変更箇所ごとに色分けしていきます。

25行目~29行目

«ダウンロードファイル» 

template_sets => {
    my_set => {
         label => "My Template Set",
         base_path => 'templates/',
         order => 100,
«hiako作成ファイル» 

template_sets => {
    hiako1_set => {
         label => "hiako Template",
         base_path => 'templates/',
         order => 20,

オレンジ色の文字はテンプレートセットの名前です。デフォルトのタグの中に記述してあるMTタグ『<$mt:BlogTemplateSetID$>』がここで指定したテンプレート名となります。
使用例:

<body id="<$mt:BlogTemplateSetID$>" class="<$mt:Var name="body_class"$> <$mt:Var name="page_layout"$>">

1つの『my_plugin.pl』ファイルに複数のテンプレートセットを作成したい場合には、単一である名前でなければなりませんが、1つのテンプレートセットしか作成しない場合には特に変更する必要はありません。複数のテンプレートセットを作成したい場合には、ダウンロードしたサンプルファイルですと26行目~85行目のブロックを必要な数だけ作成します。このブロック名を変更する場合、日本語はNGです。
水色の文字はテンプレートセットを適用させる際に、プルダウンメニューに出てくるテンプレート名です。日本語名でもOKです。
緑色の文字はMTブログを構成するテンプレート(インデックステンプレート・アーカイブテンプレート・モジュール・・・など)を格納しているフォルダを記述します。今編集している『my_plugin.pl』を基準とした相対パスで記述します。
赤色の文字はテンプレートセットを適用させる際に、プルダウンメニューに出てくる順番です。数が小さいほど上のほうに、大きいほど下に表示されます。デフォルトの「100」のままだと、私の環境では2番目に表示されたので、小さい数に変更して一番上に表示されるようにしました。

 

テンプレートセット内容の記述

 テンプレートセット内容はさらにセクションを分けて記述していきます。各セクションの説明に入る前に、どのようなセクションに分かれているのかをまずご説明します。

テンプレートセット内容のセクションはほぼMT管理画面のテンプレートの様に分かれています。

  • indexセクション – インデックステンプレート
               ブログメインページやスタイルシートなどが入ります。
  • individual セクション- 個別アーカイブテンプレート (ブログ記事・ウェブページ)
               ホーム以外のウェブページやブログの1記事などが入ります。
  • archiveセクション – アーカイブテンプレート(月別アーカイブなど)
               アーカイブページです。
  • systemセクション – システムテンプレート
               検索やコメントの確認などが入ります。
  • module – テンプレートモジュール
               ヘッダーやサイドバーなどが入ります。

とダウンロードしたサンプルファイルには5セクションしかありませんが、実装するにはwidgetも最低必要だと思います。さらに私はwidgetsetセクションも追加しました。では、各セクションの説明については次のMTテンプレートセットの作成手順(3)で。。。

投稿者: hiako
Trackback URL:

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes