2005-11-03 Thu

NP_Header|個別アイテムページのDescriptionを改造

まず最初に誤解なきよう。「NP_Header」を使用するときちんと「head」内に「meta」タグの「Description」を表示してくれます。

ただ

<meta name="Description" content="What's so bad about feeling good? といった感じで運営しているBlogです。" />

このように、個別ページでもサイトの説明文を表示することになります。

「それがどうした? 誰もそんなとこ読みゃしない」と思っていたのですが、最近やっと Google にインデックスされて、弊害に気付きました。その対策メモです。

「blog.heartfield-web.com」をGoogle 検索すると、いくつか記事がインデックスされています。この記事を書いてる時点では、8つの記事が登録されていますが…ちょっとおかしいです。…7つの記事に、まったく同じ文面が表示されています。これではせっかく検索にひっかかっても、内容が無いよう*1に見えてしまいます。で、よくよく考えたら「Description」が表示されるんですよね、確か。

当サイトは、head の主要部分を「NP_Header」を利用させていただいて出力していまして「Description」も例外ではありません。ということで、単純に個別アイテムページのスキンに「<meta name="Description…」とする訳にもいきません。まずは「NP_Header」に手を入れます。実際に出力している個所のソースをながめるとこんな個所があります。

if (!empty($description)) {
echo '<meta name="Description" content="' . $description . '" />' . "\n";
}

これはおそらく「変数 $description が空っぽではないなら、以下のように出力しなさい」という意味の if 文ではないかと推察します。ということは「$description」が空なら、NP_Header は「<meta name="Description…」を出力しないので、個別アイテムページの時に「$description」を空にするようにしました。NP_Header の130行目辺りを以下のように修正します。

case 'item':
$description = '';
$keywords = $this->getKeywords($itemid);

説明したまんまですね。これで個別アイテムページを表示する時は「Description」が表示されなくなりました。あとは、スキンにこんな感じで記述します。

<%if(skintype,item)%><meta name="Description" content="<%item(description)%>" /><%endif%>

「<%item(description)%>」のテンプレートは、アイテムの本体に「<%syndicate_description%>」とするだけです。

これで無事、よりわかりやすい Description が表示される、はずです。よかったよかった。ほんとは「NP_Header」を改造して、直接「<%syndicate_description%>」を表示させたかったんですけどね…ちんぷんかんぷんです。

追記

作者の dj k!ng さんがコメントしてくれているとおり、最新版ではこの改良をするまでもなく、個別アイテムページで「Description」が表示されるようになりました。ありがとうございます。
NP_Header v1.2 | The Skooler.org Weblog

  1. *1 - だ、駄洒落ではないですよ、念のため(笑)。

2005-11-03 Thu / Category - Nucleus

このページの先頭に戻る

Copyright 2005 - Heartfield