Home > Internet > Movabletype > キーワードとかオーサーとか

キーワードとかオーサーとか

もうじきオープンに出来るだろう某案件で「こんなの有り得ない」と言われた、没ネタです。

メタタグのキーワード(keywords)に、エントリータグとかカテゴリーをセットするコードはよく見かけるけれど、エントリータグとカテゴリーが同じだった時に、重複して登録されちゃうのは納得いかなかったので。(よく運用で重ならないように入力ってのもあるけど、そういう縛りが無いケースと思ってください)
で、ブログ記事(エントリー)のケースはこんな感じに・・・

<mt:SetVar name="meta_keywords{キーワード1}" value="1" />
<mt:SetVar name="meta_keywords{キーワード2}" value="1" />
<mt:SetVar name="meta_keywords{キーワード3}" value="1" />
<mt:EntryCategories>
    <mt:CategoryLabel setvar="cat_label" />
    <mt:Unless name="meta_keywords{$cat_label}">
        <mt:SetVar name="meta_keywords{$cat_label}" value="0" />
    </mt:Unless>
    <mt:SetVar name="meta_keywords{$cat_label}" op="++" />
</mt:EntryCategories>
<mt:EntryTags>
    <mt:TagName setvar="tag_name" />
    <mt:Unless name="meta_keywordsn{$tag_name}">
        <mt:SetVar name="meta_keywords{$tag_name}" value="0" />
    </mt:Unless>
    <mt:SetVar name="meta_keywords{$tag_name}" op="++" />
</mt:EntryTags>
<meta name="keywords" content="<mt:Loop name="meta_keywords" glue=" ," sort_by="value numeric reverse"><$mt:Var name="__key__"$></mt:Loop>" />

キーワード1とかは、いわゆる初期値って奴で、固定で入る奴をプリセット。一応重複個数でソートかかって出力されるので、どっかで個数リミットかけてもいいのかも。確か10個以下とか言われてましたよね。
カテゴリーは、その子カテゴリーのカテゴリーラベルと、最新10件のカテゴリーに含まれるエントリーのタグを使う様にしてみると、こんな感じに。

<mt:SetVar name="meta_keywords{キーワード1}" value="1" />
<mt:SetVar name="meta_keywords{キーワード2}" value="1" />
<mt:SetVar name="meta_keywords{キーワード3}" value="1" />
<mt:SubCategories include_current="1">
    <mt:CategoryLabel setvar="cat_label" />
    <mt:Unless name="meta_keywords{$cat_label}">
        <mt:SetVar name="meta_keywords{$cat_label}" value="0" />
    </mt:Unless>
    <mt:SetVar name="meta_keywords{$cat_label}" op="++" />
</mt:SubCategories>
<mt:EntriesWithSubcategories lastn="10">
    <mt:EntryTags>
        <mt:TagName setvar="tag_name" />
        <mt:Unless name="meta_keywordsn{$tag_name}">
            <mt:SetVar name="meta_keywords{$tag_name}" value="0" />
        </mt:Unless>
        <mt:SetVar name="meta_keywords{$tag_name}" op="++" />
    </mt:EntryTags>
</mt:EntriesWithSubcategories>
<meta name="keywords" content="<mt:Loop name="meta_keywords" glue=" ," sort_by="value numeric reverse"><mt:If name="__counter__" le="10"><$mt:Var name="__key__"$></mt:If></mt:Loop>" />

こうやって関連しそうなものを、ハッシュにぶち込んでやれば、自動でキーワードが生成できます。月別とかもあるけど、そこら辺も似たような感じで処理すれば良い筈です。
あと、エントリーキーワードも追加可能だけど、昔のエントリーキーワードをタグとして使ってた頃(MT3.2まで)を知ってる人なら解るだろうけど、タグのように分割はされていません。なので「複数語をカンマ区切りで入力」している様な昔ながらのヒト(たぶん居ないと思うけど)の場合には、プラグイン使って個別のタグに分解しなくてはならないかったりします。
実はまだそういう用途にTagwireプラグインが使えたりしますけど、MT3.3以降用MTタグとの重複回避で修正が必要なので、「ファンクションタグの内容を区切って配列に格納する SetArray プラグイン | Blog | weeeblog+」とか使うのが便利かもしれません。

さて、デスクリプション(description)は基本分岐のみだから飛ばして、メタタグのオーサー(author)について。

エントリーを書いたヒトというのがわかり易い設定ですが、じゃあ月別やカテゴリー別のアーカイブはどうしたら・・・と考えた結果、そのアーカイブに含まれるエントリーの書いたヒトをリストアップで良いんじゃないかと思ったわけです。
もちろんハッシュ使ってで重複削除するから、書いたヒトが一人だったら一人になります。(普通一人なんだから直書きしちゃえばと言われれば、その通りなんですが)

<meta name="author" content="<mt:Entries><mt:EntryAuthorDisplayName setvar="authorname"$><mt:SetVar name="seen" key="$authorname" value="1"></mt:Entries><mt:Loop name="seen" glue=" ,"><$mt:Var name="__key__"$></mt:Loop>" />

一応、汎用的に使えるテンプレートのコードとして作ったつもりなので、次期のmt.Vicunaに使おうかなと思案中です。

ping a Trackback

TrackBack URL for this entry.(1)

Please! leave a Comment.

スクリプトの読み込みが完了していません。

Sign in Sign in Sign in

メールフォーム(Javascriptを使用していません)や、twitter.pngTwitter経由のCommentでもReplyいたします。ただし返信はブログのコメントとして行う事もあります。

Comment Form

QuickTagsHere

EmoticonHere

(入力しない場合「Anonymous」で代替されます)
(公開はされませんが、Gravatarアイコンの取得や、Comment Subscribeの送信先アドレスとして使われます)
(入力すると、コメント表示でユーザー名にリンクが貼られます)
(この情報は、JavascriptによりCookieに保存されます。)

NotifyMail Powered by Comment Subscribe

はてブコメント:

Home > Internet > Movabletype > キーワードとかオーサーとか

MT5Techniques

MT5Techniques

2冊目の共著「Movable Type 5 実践テクニック」(シックスアパート監修)が出版されました。(ソフトバンク クリエイティブ刊)

検索
(5)
(6)

別ページに遷移します。

Powered by Hyper Estraier

Feeds
Link Status
In One

なかのひと

位置情報ブログパーツ「なかのひと」

Links
Powered By

Return to page top