メタ情報を個別に追加する方法(一般的なモジュールの場合)

2012
1/25

非常に参考となるサイトを見つけたので、備忘録としてここにも残しておこうと思います。

・・・と以前に非公開で書いていたのですが、既にそのサイトは消滅してしまい・・・ここで公開するのもいいかと思い、公開設定としました。(2014.3.21)

以下、引用

タイトル,キーワード,説明文の書き方,表示法:mylinksの場合

以前書いた「メタ情報の書き方,表示法(picoの場合)」では,カテゴリー説明文を利用する方法でした。picoの場合は,カテゴリー説明文を入力・表示する欄が用意されているので,それを利用すれば,簡単にメタ情報を表示できます。
しかし,ここで例に挙げる「mylinks」など,一般的なモジュールにこの「カテゴリー説明文」を入力する機能は備わっていません。したがって,どこかにモジュールトップページやカテゴリーページの内容を適切に表現するタイトルや,説明文,キーワードなどを記述する必要があります。

どこに記述するか。テンプレート,設定ファイルなどが考えられますが,今回は,altsysyで新規にテンプレートを作成し,それを利用して,トップページやカテゴリーページのそれぞれに異なるメタ情報を入力する方法を考えました。カテゴリー説明文入力欄のないモジュールすべてを対象にひとつのテンプレートに集約する方法もありますが,モジュールごとにメタ情報を書き入れる方が作成もメンテナンスも楽ですので,mylinks(標準のリンクモジュール)を題材に説明します。

mylinksのページの種類は,トップページ,カテゴリーページ,リンク詳細ページの三つです。そのうち,リンク詳細ページのメタ情報は,コンテンツから引用しますので,ここでは,トップページとカテゴリーページの場合についての説明です。

仕組みを簡単に説明すると

メタ情報を外部のテンプレートに記述し,閲覧中のページにマッチする内容を取得するやり方です。閲覧中のページは,カテゴリーIDで判別できます。作成したカテゴリーにはIDがふられますし,IDがないときはトップページと判断できます。

メタ情報の書き方は,区切り文字を挟んで,「ページタイトル」,「キーワード」,「説明文」の順を守ります。今回区切り文字に「||」を使いました。これまでのように,明示的に,書き分けていませんので,短いコードで処理できますが,メタ情報の入力順序は厳守しなければなりません。

利用するテンプレート

mylinksのトップページとカテゴリーページのテンプレートにメタ情報を取り出すコードを書きます。コードはまったく同じですが,二つのテンプレートに書かなければなりません。

テンプレート名

  • トップページ:mylinks_index.html
  • カテゴリーページ:mylinks_viewcat.html

二つのテンプレート共通のコード

前述のテンプレートに挿入します。テンプレートの先頭に書くのがいいと思います。

<{* メタ情報を記述したテンプレートの読み込み *}>
<{include file=”db:mylinks_meta_info.html” assign = “metainfo” cname=$category_path|strip_tags|strip:””|replace:”メイン”:””|replace:”:”:””|replace:”&nbsp;”:””}>
<{* メタ情報のアサイン *}>
<{assign var=”meta_info” value=”||”|explode:$metainfo}>
<{if $meta_info.0}>
<{assign var=”xoops_pagetitle” value=$meta_info.0}>
<{/if}>
<{if $meta_info.1}>
<{assign var=”xoops_meta_keywords” value=$meta_info.1}>
<{/if}>
<{if $meta_info.2}>
<{assign var=”xoops_meta_description” value=$meta_info.2}>
<{/if}>

表示結果例

トップページの場合

<meta name=”keywords” content=”xField,xoops,cube,ホームページ,制作,作成,作製,製作,ネット,ショップ,オンライン,モジュール,テンプレート,smarty,php,MySQL,カスタマイズ,改造,ズープス,新潟” />
<meta name=”description” content=”xoops,テーマ・モジュール配布サイト,HTMLやCSSの解説サイト,xoopsの管理・運用・カスタマイズに便利なソフト,学習に欠かせない書籍などの資料の紹介などをしています。
” />
<title> おすすめリンク集:xoopsおよび関連技術サイトへのリンク集です。 – Wander Wonder xField</title>

カテゴリーページ

<meta name=”keywords” content=”xField,xoops,cube,ホームページ,制作,作成,作製,製作,ネット,ショップ,オンライン,モジュール,テンプレート,smarty,php,MySQL,カスタマイズ,改造,ズープス,新潟” />
<meta name=”description” content=”xoopsモジュールを開発し,公開しているサイトを集めました。どんなモジュールがあって,どんなことができるのかを知りたいときに役立つと思います。
” />
<title> xoopsモジュールの開発,配布(公開)サイトの情報-xoopsモジュール – Wander Wonder xField</title>

外部(includeされる)テンプレート

テンプレート名

テンプレート名は自由につけられます。下記はひとつの例です。
mylinks_meta_info.html

コード

<{if $smarty.get.cid == 1}>
xoopsモジュールの開発,配布(公開)サイトの情報-<{$cname}>||||xoopsモジュールを開発し,公開しているサイトを集めました。どんなモジュールがあって,どんなことができるのかを知りたいときに役立つと思います。
<{elseif $smarty.get.cid == 2}>
xoopsのインストール,設定等に関する解説およびダウンロードサイトの情報-<{$cname}>||||xoopsにはじめて触れる方が迷い,悩むと思われるインストール方法や,システム管理の設定方法などを詳しく説明しているサイトの紹介です。意外な情報を見つけることも多いですね。
……中略:カテゴリー数に合わせて作成してください……
<{else}>
おすすめリンク集:xoopsおよび関連技術サイトへのリンク集です。||||xoops,テーマ・モジュール配布サイト,HTMLやCSSの解説サイト,xoopsの管理・運用・カスタマイズに便利なソフト,学習に欠かせない書籍などの資料の紹介などをしています。
<{/if}>

ここで使った関数の簡単な説明

explode関数

文字列を文字列により分割し,文字列の配列を得る

基本構文
array explode ( string $delimiter , string $string [, int $limit ] )
引数(パラメーター)
delimiter
区切り文字列
string
入力文字列
limit
limit に正の値が指定された場合、返される配列には 最大 limit の要素が含まれ、その最後の要素には string の残りの部分が全て含まれます。
もし limit パラメータが負の場合、 最後の -limit 個の要素を除く全ての構成要素が返されます。
limit パラメータがゼロの場合は、1 を指定したものとみなされます。
返り値

引数「delimiter」で区切った文字列の配列。
空の文字列 (“”) が delimiter として使用された場合、 explode() は FALSE を返します。
delimiter に引数 string に含まれていない値が含まれおり、かつ limit に負の値が指定されている場合、explode() は引数 string を含む配列を返します。

その他

気づいた点や注意点,重要と思われることのメモ。

  • 区切り文字に「||」を使用しているが,区切り文字として適切かどうか。本文中に「||」が使われるようなら別の記号・文字列にした方がいい。
  • 「ページタイトル||キーワード||説明文」の順を厳守しなければならない
  • includeされるテンプレートはモジュールごとに作った方がいい。すべてのモジュールで使えるテンプレートを作成できるが,作成の手間,モジュールの変更や追加,削除に伴うメンテナンスを考えた場合,モジュールごとに作成した方が楽なことは明らか。

トラックバック・ピンバックはありません

ご自分のサイトからトラックバックを送ることができます。

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ