テンプレートの改造について

  本プラグインのテンプレートは、WordPress のテーマとほぼ同じ構造です。このため、
WordPress のテーマを制作・改造したことがあれば、同じ要領で改造することができます。
  なお、プラグインのソースコードおよびテンプレートは原則として UTF-8 で記述され
ています。このため、WordPress の管理画面で編集が可能です。ただし、services.php 
だけ Shift_JIS で書かれています。WordPress の管理画面で編集すると壊れますので、
ご注意ください。

●附属テンプレートファイル一覧●

○WordPress 準拠テンプレート○
・header.php
    ページヘッダの表示用
・footer.php
    ページフッタの表示用
・index.php
    フロントページ・検索ページなど表示用。デフォルトでは、1番目の記事だけ本文を
    表示し、2番目以後はタイトル表示というスタイルです。設定で、すべてタイトルの
    み表示に変更可能です。
・archive.php
    アーカイブページ (年日付別／カテゴリー別／投稿者別など) 表示用。記事タイトル
    だけ表示します。
・page.php
    固定ページ表示用
・single.php
    投稿の単独表示用
・comments.php
    コメント一覧／コメント投稿フォーム表示用。single.php から comments_template() 
    タグで呼び出されます。

  以上は WordPress のテーマ仕様に従って呼び出されます。もし、category-10.php と
いうテンプレートを追加すれば、カテゴリー ID = 10 のアーカイブにはこのテンプレー
トが利用されます。

○本プラグイン独自テンプレート○
  以下は本プラグイン独自のテンプレートです。ウェブログ直下のURL に「?menu=XXXX」
というクエリー文字列を付けると呼び出されます。
    例: http://blog.example.jp/?menu=months

※バージョン 0.90 からファイル名およびクエリー文字列を変更しています。

・menu_months.php
    年月アーカイブの一覧表示用。?menu=months で呼び出し。
・menu_cats.php
    カテゴリー一覧表示用。?menu=cats で呼び出し。
・menu_links.php
    ブログロール (ブックマーク) 一覧表示用。?menu=links で呼び出し。デフォルトで
    はこのテンプレートは使用していません。footer.php などに、
      <a href="<?php ks_blogurl(); ?>?menu=links">リンク</a> 
    のように記載すれば使用できます。
・menu_pages.php
    ページ一覧表示用。?menu=pages で呼び出し。デフォルトではこのテンプレートは使
    用していません。footer.php などに、
      <a href="<?php ks_blogurl(); ?>?menu=pages">ページ一覧</a> 
    のように記載すれば使用できます。
・menu_comments.php
    最近のコメント表示用。?menu=comments で呼び出し。デフォルトでは、コメントと
    トラックバック・ピンバックを混在して表示しますが、設定で分離表示が可能です。
  
●フィルタ対象タグ一覧●
  WordPress が提供するテンプレートタグのうち、以下のものは本プラグインが出力をフ
ィルタして携帯電話向けにします。

・the_title()
    パスワード保護された投稿の場合、「保護された投稿: 」の文字列を「マル秘」絵文
    字に差し替えます。
・the_content()
    ウェブログの内容を携帯電話向けに変換して出力します。このテンプレートタグの代
    わりに、後述の ks_content() を使ってください (パスワード保護された投稿に非対
    応のため)。
・comments_template()
    PC 向けサイトのコメントテンプレートの代わりに、本プラグインのコメントテンプ
    レートファイルを読み込みます。
・comment_text()
    コメント内容を携帯電話向けに簡略化して出力します。外部リンクを削除など。

●独自タグ一覧●
  出力される XHTML が簡略化されたテンプレートタグを用意しています。これらの関数
はテンプレートが読み込まれる直前に有効となるため、他のプラグインから使えません。

・ks_is_front()
    サイトの最初のページかどうかを判断します。is_home() かつ1ページ目であれば 
    TRUE となります。
・ks_is_comments_list()
    コメント一覧ページであれば TRUE になります。
・ks_is_comment_post()
    コメント投稿ページであれば TRUE になります。
・ks_is_comments()
    コメント一覧ページまたはコメント投稿ページであれば TRUE になります。
・ks_option($name)
    本プラグインのオプション設定値を返します。
    $name: オプション名
・ks_header()
    ヘッダーを出力します (get_header() は使えません)。
・ks_footer()
    ヘッダーを出力します (get_footer() は使えません)。
・ks_blogurl()
    ウェブログの URL を出力します。ホスト名を省略した絶対パスに変換しています。
・ks_siteurl()
    WordPress がインストールされている URL を出力します。ホスト名を省略した絶対
    パスに変換しています。
・ks_plugin_dir()
    プラグインのあるディレクトリにアクセスできる URL を出力します。
・ks_term_name()
    携帯電話の機種名を表示します。不明時は Unknown という文字列になります。
・ks_charset()
    携帯電話サイトの文字コードを出力します。
・ks_title()
    ページのタイトルを出力します。ブラウザーウィンドウのタイトルに使われます。
    wp_title() よりも短い表示になります。投稿タイトルの出力は the_title() を使っ
    てください。
・ks_content()
    ウェブログの内容を携帯電話向けに変換して出力します。不要な XHTML 要素・属性
    を削除／外部へのリンクを削除／インライン画像をリンクに変換／拙作の Ktai 
    Location が挿入した位置情報 URL を削除など。
・ks_check_password($message)
    パスワード保護された投稿かどうか確認します。保護されていないか、正しいパスワ
    ードが入力されれば、NULL を返します。保護されていて、かつ、パスワードが正し
    くなければパスワード入力フォームを返します。
    $message: 入力フォームの上に出すメッセージ
・ks_time($year, $month_date, $time)
    現在日時に応じて適切に短縮した投稿日時を出力します。投稿日と現在が同じ年なら
    ば年を省略、同じ年月日ならば年月日を省略します。日だけの表示はおかしいので、
    年月だけが同じのときは、年だけの省略となります。フォーマットに使う文字列は 
    PHP の date() 関数と同じです。引数を省略すると、プラグイン設定画面に入力した
    フォーマットとなります。
    $year: 年月日を表示する場合のフォーマット (去年以前の日付)
    $month_date: 月日を表示する場合のフォーマット (今年の日付)
    $time: 時刻のフォーマット
・ks_comment_datetime($year, $month_date, $time)
    現在日時に応じて適切に短縮したコメント日時を出力します。コメント日と現在が同
    じ年ならば年を省略、同じ年月日ならば年月日を省略します。日だけの表示はおかし
    いので、年月だけが同じのときは、年だけの省略となります。フォーマットに使う文
    字列は PHP の date() 関数と同じです。引数を省略すると、プラグイン設定画面に
    入力したフォーマットとなります。
    $year: 年月日を表示する場合のフォーマット (去年以前の日付)
    $month_date: 月日を表示する場合のフォーマット (今年の日付)
    $time: 時刻のフォーマット
・ks_orderd_link($count, $max , $link)
    携帯電話の絵文字を使った数字付きリストの出力を行います。使い方は templates/
    index.php を参照してください。
    $count: 出力したい数字。accesskey 用の番号にもなります。
    $max: 絵文字を使う最大値。これより $count が大きければ、絵文字の代わりに □ 
          (四角) になります。
    $link: リンク先URL
・ks_link_pages($args = '')
    wp_link_pages() の代わりとなる、分割ページ用ナビゲートタグです。パスワード保
    護された投稿で認証ずみの場合は、アンカーリンクではなく、隠しフィールドにパス
    ワードを埋め込んだフォームボタンが表示されます。このため、パスワードの再入力
    なしにページ遷移が可能です。
    $args: 各種パラメーター (wp_link_pages() と同じ仕様)
・ks_pagenum($before, $after)
    指定したコンテンツが複数ページに分かれている場合、現在のページ番号を出力しま
    す。1ページのみの場合は何も出力されません。例えば、2007年9月の記事が2ページ
    に渡る場合、1/2, 2/2 などと表示されます。accesskey 対応です。
・ks_previous_post_link($format, $link, $in_same_cat, $excluded_categories)
    前の投稿へのナビゲーションリンクを出力します。引数はprevious_post_link() と
    同じ仕様です。accesskey 対応です。
・ks_next_post_link($format, $link, $in_same_cat, $excluded_categories)
    次の投稿へのナビゲーションリンクを出力します。引数は next_post_link() と同じ
    仕様です。accesskey 対応です。
・ks_posts_nav_link($sep)
    前後のページへのナビゲーションリンクを出力します。accesskey 対応です。
    $sep: 間に挟まれる分離文字列。
・ks_get_comments_list_link($post_id)
    コメント一覧ページを示す URL を返します。
    $post_id: 対象とする投稿 ID。投稿ループの中では空でよい。
・ks_comments_link($icon, $zero, $one, $more)
    コメント数を表示し、コメント一覧へのリンクとして出力します。
    $icon: リンクの前に置く絵文字
    $zero: コメントなしを示す文字列
    $one: コメント1件を示す文字列
    $more: コメント2件以上を示す文字列。「%」があればコメント数に置換されます。
・ks_comment_post_link($desc, $before, $after)
    コメント投稿フォームへのリンクを出力します。
    $desc: リンク先の説明
    $before: リンクの前に置く文字列 (絵文字等)
    $before: リンクの後に置く文字列
・ks_back_to_post($icon, $desc)
    記事に戻るリンクを出力します。
    $icon: リンクの前に置く絵文字
    $desc: リンク先の説明
・ks_get_recent_comments($num, $type)
    最新コメント一覧を配列で返します。
    $num: コメント表示数
    $type: コメントの種類を示す文字列
    - 空白: コメント・トラックバック・ピンバックを混在
    - comment: コメントのみ
    - trackback: トラックバックのみ
    - pingback: ピンバックのみ
    - trackback+pingback: トラックバック・ピンバックを混在 
・ks_category($separator)
    表示している投稿が属するカテゴリーの一覧を出力します。
・ks_get_archives($args)
    アーカイブ一覧を出力します。wp_get_archives() の結果から、余計な空白や title 
    属性を除去して出力します。
・ks_list_bookmarks($args)
    ブログロール一覧を出力します。wp_list_bookmarks() の結果から、余計な空白や 
    title, rel 属性を除去して出力します。
・ks_pages_menu($sep, $before, $after)
    固定ページへのナビゲーションを出力します。
    $sep: 項目ごとの区切り
    $before: 前に付ける HTML タグ
    $after: 後ろに付ける HTML タグ

○ページ分割機能用タグ
  <!--start paging-->
  <!--end paging-->
    ページ分割機能において、分割対象領域を示します。この2つに挟まれた区間が分割
    され、前者より上／後者より下にある XHTML コードはすべてのページに出力されま
    す (共通領域)。前者が存在しないときは <body> タグ、後者が存在しないときは
   「<hr /><a name="tail"」という文字列もしくは </body> タグを代わりに使います。
    なお、共通領域が広くて分割に使えるバイト数があまりに少ないとき (256 バイト未
    満) は、強制的に <body>〜ページ終端を分割対象とします。

●絵文字の使い方●

  テンプレートや投稿本文で以下の XHTML タグを使えば絵文字を挿入できます。EZweb 
の絵文字と同じ仕様です。
    <img localsrc="nnn" alt="xxxx" />
  nnn は絵文字番号、xxx は絵文字の代替文字です (PDA など絵文字非搭載の端末向け) 。
絵文字番号は KDDI のウェブサイトを参照してください。
    http://www.au.kddi.com/ezfactory/tec/spec/3.html

  ドコモ端末、ソフトバンク端末に対しては、似たような絵文字に自動的に変換されます。
ウィルコム端末については、ウィルコム独自絵文字で似た絵文字があればそれを使い、な
ければ i モード互換絵文字に変換します。
  変換テーブルは独自のもので、十分には揃っていません。変換テーブルにない絵文字は 
〓 (ゲタ) になります。具体的な変換内容についてはソースコード (services.php) を参
照してください。

●他のプラグインとの連携●

  他のプラグインにおいて、PC 向け出力か携帯電話出力かを区別できるよう、以下の関
数を用意しています。あえて Mobile_Eye+ の関数名と同じにしています。

・is_mobile()
    携帯電話出力なら、事業者名を返します。
    (DoCoMo, KDDI, SoftBank, WILLCOM, Unknown のいずれか)

  本プラグインが有効・無効にかかわらずエラーが出ないよう、次のようにして使ってく
ださい。携帯電話 *でない* 場合にスタイルシートを追加する例です。

if (function_exists('is_mobile') && ! is_mobile()) { ?>
<style type="text/css" media="all">
.locationurl { display:none; }
</style>
<?php }

以上