Nucleus スキンとテンプレート
Nucleusの秘密を暴きたいんだけど.....
スキン & テンプレートの「テンプレートとスキンの相互関係」 に、
スキン とは出力する内容(タグを含むソース)を定義するものです。1つのスキンでもいくつかの種別ごとに定義が必要で、メインページや個別アイテムページ、アーカイブページなど(標準で8タイプ)があります。 スキン内の定義内容は、どの部分にblogデータを展開するのか、どのテンプレートを使用して展開するのかなどの指定を含みます。
とある。
「8種類」というは、[レイアウト設定]の[スキン編集]に出てくる、「定義済みパーツ:」の
- メインの目次ページ
- 個別アイテムページ
- 月別アーカイブ一覧ページ
- 月別アーカイブページ
- 検索ページ
- エラーページ
- メンバー詳細ページ
- 画像ポップアップウィンドウ
のようだ。
スキン=ブログの各ページの構造(レイアウト)を表すもので、標準で8種類のページパターンがある。blogger.comでいうテンプレート。
テンプレート=MySqlにしまわれているデータを流し込んで表示するブロック部分みたいなもの。blogger.comでいうページ要素。
...ということでよいのだろうか。
Nucleusの動く仕組みが分かってくれば理解できるのかも知れない。
- 最初に読まれるのは、「index.php」
index.phpは ..... config.phpを読む。
- config.phpは ..... globalfunctions.phpを読む。
- globalfunctions.phpは、以下を読む
include($DIR_LIBS . 'mysql.php');
include($DIR_LIBS . 'MEMBER.php');
include($DIR_LIBS . 'ACTIONLOG.php');
include($DIR_LIBS . 'MANAGER.php');
include($DIR_LIBS . 'PLUGIN.php');
include($DIR_LIBS . 'xmlrpc.inc.php'); // XML-RPC client classes
include_once($DIR_LIBS . 'ADMIN.php');
include($DIR_LIBS . 'PARSER.php');
PARSER.phはrequire_once dirname(__FILE__) . '/BaseActions.php';
include($DIR_LIBS . 'SKIN.php');
SKIN.phpはrequire_once dirname(__FILE__) . '/ACTIONS.php';
include($DIR_LIBS . 'TEMPLATE.php');
include($DIR_LIBS . 'BLOG.php');
include($DIR_LIBS . 'BODYACTIONS.php');
include($DIR_LIBS . 'COMMENTS.php');
include($DIR_LIBS . 'COMMENT.php');
//include($DIR_LIBS . 'ITEM.php');
include($DIR_LIBS . 'NOTIFICATION.php');
include($DIR_LIBS . 'BAN.php');
include($DIR_LIBS . 'PAGEFACTORY.php');
include($DIR_LIBS . 'SEARCH.php');
include($DIR_LIBS . 'entity.php');
include_once($DIR_LIBS . 'ACTION.php');
include($filename); //apacheとphpのトークンみたい
include($DIR_LANG . ereg_replace( '[\\|/]', '', $language) . '.php');
include($DIR_LIBS . 'PLUGINADMIN.php');
include_once($DIR_LIBS.'mb_emulator/mb-emulator.php');
- ..............
- いろいろ進んで...
- ..............
- globalfunctions.phpの中のselector()が呼び出される。
- ..............
$skinFile = $DIR_SKINS . $skinFileRaw . '/skinbackup.xml';
$xml_file = $dir . $filename . '/skinbackup.xml';
- ともあれ skinbackup.xml、skindata.xmlにたどり着く。
nucleus/libs/ADMIN.phpや、nucleus/libs/skinie.phpが、skinbackup.xml、skindata.xmlを読み込む。
- スキン & テンプレートにあるように、skinbackup.xmlがスキンのかなめになる。(らしい)
- ..............
nucleus/libs/TEMPLATE.phpに
function fill($template, $values) {
if (sizeof($values) != 0) {
// go through all the values
for(reset($values); $key = key($values); next($values)) {
$template = str_replace("",$values[$key],$template);
}
}
// remove non matched template-tags
return preg_replace('//','',$template);
}
があった。ここが Nucleus変数/テンプレート変数が、解釈される第一歩か。
ACTION.php、ADMIN.php、BLOG.php、MEMBER.php、BODYACTIONS.phpでfill()を呼んでいる。
細かいことまで理解する必要はないけど、動作概念くらいは知っておきたいもんだ。
.
02 Mar, 2008 | mokimoc
Comments
Leave comments
このアイテムは閲覧専用です。コメントの投稿、投票はできません。