logo

2011年1月アーカイブ

MTでSEO対策をしましょう!
Googleにページを早くインデックスさせるためにsitemap.xmlを登録です。

まずはGoogleのWebMasterToolへアクセスしてアカウントを取得しましょう。
サイトを追加して、sitemap.xmlを登録します。

全てのブログをsitemap.xmlに追加したいので、MT上のウェブサイトのインデックステンプレートで
XMLを作成します。設定は下記。ファイル名はここではsitemap.xmlとしています。
(アーカイブのページを含めたい場合やプライオリティを変更した場合は自分で追加してー)


<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.google.com/schemas/sitemap/0.84 
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd">
<MTMultiBlog blog_ids="all">
<MTEntries>
<url>
    <loc><MTEntryPermalink></loc>
    <changefreq>always</changefreq>
    <lastmod><MTEntryDate format="%Y-%m-%d">T00:00:00+00:00</lastmod>
    <priority>1.0</priority>
</url>
</MTEntries>
</MTMultiBlog>
</urlset>

MTMultiBlogでウェブサイト配下にある全てのブログから記事をひっぱって来ています。

loc:ページのURL
changefreq:更新頻度(always、hourly、daily、weekly、monthly、yearly、never)
lastmod:最終更新日時
priority:他のージと比較して優先度を、0.0~1.0までの値で設定

適当ですいませんが参考まで


MTの管理画面にテキストを追加したり、修正を加えたい場合、どのテンプレートファイルを修正して良いかよくわかりませんでした。

そんな時は管理画面で表示に使用されているテンプレート名をフッターに表示させておきましょう。
そうすればどのテンプレートを修正して良いか簡単に見つけることができます。

テンプレート名を表示させるにはlib/MT.pmの下記の部分を修正します。


中略・・・
sub load_tmpl {
    my $mt = shift;
    if ( exists($mt->{component}) && ( $mt->{component} ne 'Core' ) ) {
        if (my $c = $mt->component($mt->{component})) {
            return $c->load_tmpl(@_);
        }
    }

    my($file, @p) = @_;
    my $param;
    if (@p && (ref($p[$#p]) eq 'HASH')) {
        $param = pop @p;
    }
    my $cfg = $mt->config;
    require MT::Template;
    my $tmpl;
    my @paths = $mt->template_paths;

    my $type = {'SCALAR' => 'scalarref', 'ARRAY' => 'arrayref'}->{ref $file}
        || 'filename';
    $tmpl = MT::Template->new(
        type => $type, source => $file,
        path => \@paths,
        filter => sub {
            my ($str, $fname) = @_;
            if ($fname) {
                $fname = File::Basename::basename($fname);
                $fname =~ s/\.tmpl$//;
                $mt->run_callbacks("template_source.$fname", $mt, @_);
            } else {
                $mt->run_callbacks("template_source", $mt, @_);
            }
            return $str;
        },
        @p);
    return $mt->error(
        $mt->translate("Loading template '[_1]' failed.", $file)) unless $tmpl;
    $mt->set_default_tmpl_params($tmpl);
    $param->(template_file) = $file;
    $tmpl->param($param) if $param;
    $tmpl;
}
・・・中略

赤字部分を追記しましょう。
さらに、tmpl/cms/include/footer.tmplに赤字部部を追記。

中略・・・
            <mt:include name="include/copyright.tmpl">
            <p id="version">
                <strong><__trans phrase="<a href="[_1]"><mt:var name="mt_product_name"></a> version [_2]" params="<mt:var name="portal_url">%%<mt:var name="mt_version_id">"></strong>
<mt:if name="packs_installed">
                <__trans phrase="with">: <mt:loop name="packs_installed" glue=", "><a href="<__trans phrase="http://www.sixapart.com/movabletype/">pack/<mt:var name="id">/"><mt:var name="label" escape="html"> <mt:var name="version" escape="html"></a></mt:loop>
</mt:if>
            <MTVar name="template_file">
            </p>
        </div><!-- /footer -->
・・・中略

これでフッターにテンプレート名が表示されるはずです。

MTの記事をソートしてみよう

MTEntriesタグにはいくつかの便利なモディファイアが用意されています。
中でもソートに関するモディファイアsort_byについて。

記事を下書きに保存しておいて後で公開するなんてことはよくあります。
で保存した順とは異なる順で公開した場合、新着が意図していない順に表示されるなんてことが
ありました。

そこで公開日順にソートすると、指定した公開日の順にソートされるのでとても便利です。


sort_by="foo"

・authored_on (公開日・初期値)
・title (ブログ記事のタイトル)
・ping_count (トラックバックの件数) 
・comment_count (コメントの件数) 
・author_id (作成ユーザー ID)
・excerpt (概要)
・status (ブログ記事の状態:下書き/公開)
・created_on (作成日)
・modified_on (変更日時)

公開日順にしたければ

<MTEntries limit="5" sort_by="authored_on">
...
</MTEntries>

と書けば、公開日順に5件の記事が表示されるはずです。
他にも変更日時順やタイトル順などでソートができるので、場合によって使い分けましょう!

参考:MTEntriesタグドキュメント

MTでRSSを取得して表示させてみよう

外部のRSSを取得して新着表示をしてみましょう。取得するにはMTFeedタグを使用します。

<mt:Feed uri="http://www.movabletype.jp/index.xml">
<h2><$mt:FeedTitle$></h2>
<ul>
<mt:FeedEntries>
    <li><a href="<$mt:FeedEntryLink encode_html="1"$>"><$mt:FeedEntryTitle$></a></li>
</mt:FeedEntries>
</ul>
</mt:Feed>
uriモディファイアにrssのURLをセットしてMTFeedEntiesタグで記事を呼び出します。
ただMTFeedタグは日付が取れないのが難点ですね。

日付が欲しい場合はMTFeedExを使いましょう!
まずは下記からダウンロード。

あとはMTFeedをMTFeedExに置き換えるだけ。
日付を呼び出す場合はMTFeedExEntryDate ファンクションタグを使いましょう。



  • MTFeedEx ブロックタグ
MTFeedEx に uri モディファイアでフィード URL を指定することで、各フィード情報を読み出すことができます。

  • MTFeedExTitle ファンクションタグ
フィード URL で指定したサイトタイトルを取得します。MTFeedEx ブロックタグ内で使用します。

  • MTFeedExLink ファンクションタグ
フィード URL で指定したサイト URL を取得します。MTFeedEx ブロックタグ内で使用します。

  • MTFeedExEntries ブロックタグ
フィード内のアイテム情報( 記事情報 )を取得するためのブロックタグです。MTFeedEx ブロックタグ内で使用します。

  • MTFeedExEntryTitle ファンクションタグ
アイテム情報( 記事情報 )の中のタイトル( 記事タイトル )を取得します。MTFeedExEntries ブロックタグ内で使用します。

  • MTFeedExEntryLink ファンクションタグ
アイテム情報( 記事情報 )の中の URL ( 記事の URL )を取得します。MTFeedExEntries ブロックタグ内で使用します。

  • MTFeedExEntryDate ファンクションタグ
アイテム情報( 記事情報 )の中の投稿日時を取得します。MTFeedExEntries ブロックタグ内で使用します。

  • MTFeedExEntryDescription ファンクションタグ
アイテム情報( 記事情報 )の中の記事概要を取得します。MTFeedExEntries ブロックタグ内で使用します。

MTをcronで自動再構築する方法

定期的に再構築を自動でかけたい場合、mt-rebuildというプラグインが便利です。下書きを自動で公開にする際は、
RunPeriodicTaskで再構築をかけることができますが、記事に関係なくテンプレートを再構築したい場合プラグインが必要です。

まずは下記からダウンロードしましょう。

ダウンロードしたら解凍してmt-rebuild.plをmt.cgiと同じディレクトリに配置して、
パーミッションを755にしておきます。

後はcronに設定します。

perl mt-rebuild.pl -mode='index' -blog_id=1 -template='メインページ'
これを実行するブログID1のブログの、メインページという名前のインデックステンプレートを再構築することになります。

他の設定は下記を参考にしましょう!


        # To rebuild all weblogs in the system.
        mt-rebuild -all

        # To rebuild an entire weblog:
        mt-rebuild -mode="all" -blog_id=0

        # To rebuild all archives, but not index templates:
        mt-rebuild -mode="all" -blog_id=0 -no_indexes

        # To rebuild a weblog archive type:
        mt-rebuild -mode="archive" -blog_id=0 -archive_type="(Individual|Daily|Weekly|Monthly|Category)"

        # To rebuild a specific weblog entry:
        mt-rebuild -mode="entry" -blog_id="0" -entry_id=0

        # To rebuild a specific weblog index template:
        mt-rebuild -mode="index" -blog_id="0" -template="your template name"

これで面倒な再構築も自動で設定ができます。

MTをインストールしたら最初に入れておきたいプラグインメモ
見つけたら都度、追加して行きます。

・UploadDir Plugin

ファイルアップロード時のアップロードディレクトリを拡張子ごとに自動で振り分けてくれます。
たとえば画像を必ずimagesディレクトリに保存した場合、毎回imagesと入力しなければいけません。
このpluginを使えば面倒な入力は必要なくなります。


cpanたたいてモジュールを入れる時、依存関係にあるモジュールをインストールしますか? って聞かれる。Enterを押すのが面倒ですよね。

下記設定で全部yesで進んでくれます。

cpan> o conf prerequisites_policy follow
cpan> o conf commit

以上。
もうカスタムフィールドなんていらない!
MTOSでもうまくプラグインで拡張すれば本文やタグ以外に入力項目を追加できます。


MTのカスタムフィールドの種類を変更する方法について

カスタムフィールドは一度作成してしまうと名前、ベースネーム、テンプレートタグ等は
変更できますが、種類だけは変更することができません。

そこでDBを直接操作して種類を変更する方法を解説します。

自分はテキストからテキスト複数行に変更しました。


変更するには2つのテーブルを更新する必要があります。
(作成したカスタムフィールドに一つもデータを入力していなければ1テーブルで済みます。)


■修正テーブル
修正が必要なのは下記のテーブルです。

・mt_field
 ⇒カスタムフィールド作成時に入力したベースネームや種類が格納されています。

+-------------------+--------------+------+-----+---------+----------------+
| Field             | Type         | Null | Key | Default | Extra          |
+-------------------+--------------+------+-----+---------+----------------+
| field_id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| field_basename    | varchar(255) | YES  | MUL | NULL    |                |
| field_blog_id     | int(11)      | YES  | MUL | NULL    |                |
| field_default     | mediumtext   | YES  |     | NULL    |                |
| field_description | mediumtext   | YES  |     | NULL    |                |
| field_name        | varchar(255) | NO   | MUL | NULL    |                |
| field_obj_type    | varchar(50)  | NO   | MUL | NULL    |                |
| field_options     | mediumtext   | YES  |     | NULL    |                |
| field_required    | tinyint(4)   | YES  |     | NULL    |                |
| field_tag         | varchar(255) | NO   |     | NULL    |                |
| field_type        | varchar(50)  | NO   | MUL | NULL    |                |
+-------------------+--------------+------+-----+---------+----------------+




・mt_entry_meta
 ⇒各記事やWEBページで入力されたカスタムフィールの値が格納されています。

+--------------------------+--------------+------+-----+---------+-------+
| Field                    | Type         | Null | Key | Default | Extra |
+--------------------------+--------------+------+-----+---------+-------+
| entry_meta_entry_id      | int(11)      | NO   | PRI | NULL    |       |
| entry_meta_type          | varchar(75)  | NO   | PRI | NULL    |       |
| entry_meta_vchar         | varchar(255) | YES  |     | NULL    |       |
| entry_meta_vchar_idx     | varchar(255) | YES  |     | NULL    |       |
| entry_meta_vdatetime     | datetime     | YES  |     | NULL    |       |
| entry_meta_vdatetime_idx | datetime     | YES  |     | NULL    |       |
| entry_meta_vinteger      | int(11)      | YES  |     | NULL    |       |
| entry_meta_vinteger_idx  | int(11)      | YES  |     | NULL    |       |
| entry_meta_vfloat        | float        | YES  |     | NULL    |       |
| entry_meta_vfloat_idx    | float        | YES  |     | NULL    |       |
| entry_meta_vblob         | mediumblob   | YES  |     | NULL    |       |
| entry_meta_vclob         | mediumtext   | YES  |     | NULL    |       |
+--------------------------+--------------+------+-----+---------+-------+



    * entry_meta_vcharには、URLタイプの値。
    * entry_meta_vchar_idxには、テキストタイプの値と、ドロップダウン&ラジオボタンの値。
    * entry_meta_vdatetimeは、おそらく日付と時刻(日付か時刻)。未検証。
    * entry_meta_vdatetime_idxには、日付と時刻(日付と時刻)の値。
    * entry_meta_vintegerは、不明。
    * entry_meta_vinteger_idxは、チェックボックスの値。
    * entry_meta_type、entry_meta_vchar、entry_meta_vchar_idxは、不明。
    * entry_meta_vclobには、テキスト(複数行)と、アイテム・オーディオ・ビデオ・画像の各値が、assetIDと関連付けられ、なにやら変なマークアップされて入ってます。



JavaScript Journal | JavaScript総合情報サイト

このアーカイブについて

このページには、2011年1月に書かれたブログ記事が新しい順に公開されています。

次のアーカイブは2011年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。