SkinAPI

Top > SkinDev > SkinAPI

スキン用変数一覧

プラグインで使用できないが、スキンで使用可能な変数、定数。 スキンで使用されることを目的としている変数、定数、関数。

Table of Contents

スキンで使用可能な変数(定数)

pukiwiki.php

pukiwiki.php にて定義される変数。

  • string $base
    • ページ名。$vars['page'] を使用したほうがわかりやすい
  • string $page
    • make_search(ページ名) の結果。ページ名ではないことに注意。消してよし
  • string $title
    • ページタイトル。cmd=read の場合 htmlspecialchars(ページ名)。その他のアクションプラグインの場合アクションプラグインによって生成されるタイトル
    <?php if ($title == $defaultpage) { ?>
     <title><?php echo "$page_title" ?></title>
    <?php } else { ?>
     <title><?php echo "$title - $page_title" ?></title>
    <?php } ?>
  • string $body
    • ページ本文のHTML
    <?php echo $body ?>

pukiwiki.php は catbody($title, $page, $body); を呼ぶ。

html.php#catbody

html.php#catbody にて定義、グローバル宣言される変数。

  • string $script
    • PukiWiki の index.php までの絶対 URI。プラグインと同様に get_script_uri() を使用したほうがわかりやすい。
  • array $vars
    • 説明不要。GET, POST値
  • string $defaultpage
    • pukiwiki.ini.php で設定されたデフォルトページ名。
  • string $whatsnew
    • RecentChanges ページ名。
  • $help_page
    • ヘルプページ名
  • string $hr
    • default.ini.php で設定された水平線の HTML
  • string $attach_link
  • string $related_link
  • $function_freeze
  • string $search_word_color
    • 検索ワードを染める色。使用しない。
  • array $foot_explain
    • $notes を参照。使用しない。
  • string $note_hr
    • フットノート直前に引かれる水平線。すでに $notes に追加されている。使用しない。
  • array $head_tags
    • $head_tag を参照。使用しない。
  • array $foot_tags
    • $foot_tag を参照。使用しない。
  • bool $trackback
    • トラックバック機能を使用するかどうかの判定に使用されるべき変数
  • bool $referer
    • リファラ機能を使用するかどうかの判定に使用されるべき変数
  • bool $javascript
    • javascript を使用するかどうかの判定に使用されるべき変数
    <head>
    ...
     <?php if (PKWK_ALLOW_JAVASCRIPT && isset($javascript)) { ?>
     <meta http-equiv="Content-Script-Type" content="text/javascript" />
     <?php } ?>
    ...
    </head>
    
  • string $newtitle (Plus!)
    • Wiki ページ中にて TITLE: コマンドによって定義されたタイトル。
    <?php if ($title == $defaultpage) { ?>
     <title><?php echo "$page_title" ?></title>
    <?php } elseif ($newtitle != '' && $is_read) { ?>
     <title><?php echo "$newtitle - $page_title" ?></title>
    <?php } else { ?>
     <title><?php echo "$title - $page_title" ?></title>
    <?php } ?>
    
  • string $newbase (Plus!)
  • string $language (Plus!)
    • 言語設定。
    <head>
    ...
    <script type="text/javascript" src="<?php echo SKIN_URI . 'lang/' . $language ?>.js"></script>
    ...
    </head>
    
  • bool $use_local_time (Plus!)
    • pukiwiki.ini.php にて設定された、ローカルタイムを使用するか否かの判断に使用されるべきフラグ。
    <head>
    ...
    <?php if (! $use_local_time) { ?>
     <script type="text/javascript" src="<?php echo SKIN_URI ?>tzCalculation_LocalTimeZone.js"></script>
    <?php } ?>
    ...
    </head>
    
  • bool $nofollow
    • サーチエンジンにリンクを辿らせないか辿らせるかの判断に使用されるべきフラグ
    <?php if ($nofollow || ! $is_read)  { ?> <meta name="robots" content="NOINDEX,NOFOLLOW" /><?php } ?>
    
  • $_LANG
  • array $_LINK
    • 複数アクション型プラグインへのリンクを格納している配列。何が使用できるかは html.php#catbody 参照。
    • 自力で <?php echo get_script_uri() . '?cmd=プラグイン名&page=' . rawurlencode($vars['page']) ?> のように作成したほうがわかりやすい気もする。
  • array $_IMAGE
    • アクション型プラグインへの各種ツールバーアイコンを格納するかもしれない配列。
  • string $pkwk_dtd
    • XHTML 1.1, XHTML1.0, HTML 4.01 Transitional...
    // Output HTML DTD, <html>, and receive content-type
    if (isset($pkwk_dtd)) {
    	$meta_content_type = pkwk_output_dtd($pkwk_dtd);
    } else {
    	$meta_content_type = pkwk_output_dtd();
    }
    
  • string $page_title
    • サイトのタイトル。ページのタイトルではないことに注意
  • bool $do_backup
    • Do backup or not
  • string $modifier
    • pukiwiki.ini.php で設定したサイト管理者のウェブページ
  • string $modifierlink
    • pukiwiki.ini.php で設定したサイト管理者の名前
    Site admin: <a href="<?php echo $modifierlink ?>"><?php echo $modifier ?></a>
  • string $skin_file (Plus!)
    • スキンフィル名(php)。
  • string $menubar (Plus!)
    • MenuBar の HTML。
  • string $sidebar (Plus!)
    • SideBar の HTML。
  • bool $is_page
    • (正しい)ページが指定されたか否か
  • bool $is_read
    • ページ参照(cmd=read)か否か。プラグインの場合と同様に $vars['cmd'] == 'read' としたほうがわかりやすいかも知れない。
  • bool $is_freeze
    • 指定されたページが凍結されたページか否か。プラグインの場合と同様に is_freeze($vars['page']) としたほうがわかりやすい
  • string $lastmodified
    • 指定されたページの最終更新日付をHTMLで。
  • string $attaches
    • 指定されたページの添付ファイル一覧をHTMLで。
  • string $related
    • 指定されたページの関連ページ一覧をHTMLで。
  • string $notes
    • 指定されたページのフットノートをHTMLで。
    <?php echo $body ?><?php echo $notes ?>
  • string $head_tag
    • プラグインが追加した <head></head> タグ内に追加されるべきHTML
    <head>
    ...
    <?php echo $head_tag ?>
    </head>
  • string $foot_tag
    • プラグインが追加したスキンのフッタに追加されるべきHTML
    <?php echo $foot_tag ?>
  • int $fmt
    • 指定されたページの最終更新日付タイムスタンプ
  • float $taketime
    • HTML convert time
    HTML convert time: <?php echo $taketime ?> sec.

その他

  • string SKIN_URI (Plus!)
    • skin ディレクトリまでの URI
    <link rel="stylesheet" type="text/css" media="screen" href="<?php echo SKIN_URI ?>style.css" />
  • string SKIN_DIR
    • skin ディレクトリまでのローカルパス。PukiWiki 本家には SKIN_URI がないので SKIN_DIR で代用。
    <link rel="stylesheet" type="text/css" media="screen" href="<?php echo SKIN_DIR ?>style.css" />
  • string IMAGE_URI (Plus!)
    • image ディレクトリまでの URI
    <a href="http://pukiwiki.cafelounge.net/plus/"><img src="<?php echo IMAGE_URI ?>pukiwiki-plus.png" alt="PukiWikiPlus" /></a>
  • string IMAGE_DIR
    • image ディレクトリまでのローカルパス。PukiWiki 本家には IMAGE_URI がないので IMAGE_DIR で代用。
    <a href="<?php echo $link['top'] ?>"><img id="logo" src="<?php echo IMAGE_DIR . $image['logo'] ?>" width="80" height="80" alt="[PukiWiki]" title="[PukiWiki]" /></a>
  • string S_COPYRIGHT
    • PukiWiki の copyright 文
    <?php echo S_COPYRIGHT ?>
  • string PHP_VERSION
    • PHP のバージョン
    Powered by <?php echo PHP_VERSION ?>

関数

  • string make_pagelink(string $pagename, string $link)
    • ページへのリンクを作成
    make_pagelink($defaultpage, $page_title);
  • string get_script_uri()
    • PukiWiki の index.php への絶対 URI を返す
  • string get_short_pagename(string $page)
    • ページ名の basename を返す。

スキン用コード

出だし

// HTTP headers
pkwk_common_headers();
header('Cache-control: no-cache');
header('Pragma: no-cache');
header('Content-Type: text/html; charset=' . CONTENT_CHARSET);

// HTML DTD, <html>, and receive content-type
if (isset($pkwk_dtd)) {
	$meta_content_type = pkwk_output_dtd($pkwk_dtd);
} else {
	$meta_content_type = pkwk_output_dtd();
}

タイトルの作成

Plus! の $newtitle があるとする。 $display_title が <title></title> 用。 $heading_title が <h1></h1> 用。

// Title
if ($is_read) {
    if ($newtitle) {
        $display_title = $newtitle . ' - ' . $page_title;
        $heading_title = make_pagelink($vars['page'], $newtitle);
    } elseif ($vars['page'] == $defaultpage) {
        $display_title = $page_title;
        $heading_title = make_pagelink($vars['page'], $page_title);
    } else {
        $display_title = htmlspecialchars($vars['page']) . ' - ' . $page_title;;
        $heading_title = make_pagelink($vars['page'], get_short_pagename($vars['page']));
    }
} else {
    $display_title = $title . ' - ' . $page_title;
    $heading_title = $title;
}

あとがき

デフォルトスキン用に pukiwiki.ini.php で設定されているグローバル変数が多々あるが、 その変数を使用するか否かはスキン個々の管轄であり、縛られる必要はない。

例えば、変数 $javascript (javascript のオンオフ)等をサポートしてスキン中に if 文を多用するよりも、 「このスキンは javascript を使用します」と明言をして、コードを簡略したほうが良いかも知れない。