Nucleus スキンとテンプレート


Nucleusの秘密を暴きたいんだけど.....

スキン & テンプレートの「テンプレートとスキンの相互関係」 に、

スキン とは出力する内容(タグを含むソース)を定義するものです。1つのスキンでもいくつかの種別ごとに定義が必要で、メインページや個別アイテムページ、アーカイブページなど(標準で8タイプ)があります。 スキン内の定義内容は、どの部分にblogデータを展開するのか、どのテンプレートを使用して展開するのかなどの指定を含みます。

とある。
「8種類」というは、[レイアウト設定]の[スキン編集]に出てくる、「定義済みパーツ:」の
  1. メインの目次ページ
  2. 個別アイテムページ
  3. 月別アーカイブ一覧ページ
  4. 月別アーカイブページ
  5. 検索ページ
  6. エラーページ
  7. メンバー詳細ページ
  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
« Prev item - Next Item »
---------------------------------------------

Comments



Leave comments

このアイテムは閲覧専用です。コメントの投稿、投票はできません。