モジュール別スタイルシート読み込み
モジュールのテンプレートはbody要素の内側なので、直接link rel=stylesheetを書くのははばかられるし、XCLのテンプレートシステム使って管理、編集したいよなぁ、って事で。
スタート地点はhead要素内にlink要素を埋め込む事。index.phpにこんな感じで埋め込み
$link = '<link rel="stylesheet" type="text/css" media="screen" href="'.XOOPS_URL.'/modules/sample/main.css" />'; $xoopsTpl->assign('xoops_module_header',$link);
テーマの中に<{$xoops_module_header}>てあるからそこにlink要素のタグ文字列をアサインすればいい。
これだとXCLのテンプレートシステムが使えない。そこで、テンプレートを展開するだけのphpスクリプトを書いて、テンプレートシステムから取得したスタイルシートをcontenttype:text/cssで吐き出させれば良い。
モジュール直下にこんなスクリプトを置く。名前は何でもいいがとりあえずmodheader.phpとかにするか。
<?php require_once "../../mainfile.php"; // send header if( ! headers_sent() ) { $cache_limit = 3600 ; session_cache_limiter('public'); header("Expires: ".date('r',intval(time()/$cache_limit)*$cache_limit+$cache_limit)); header("Cache-Control: public, max-age=$cache_limit"); header("Last-Modified: ".date('r',intval(time()/$cache_limit)*$cache_limit)); header('Content-Type: text/css') ; } require_once XOOPS_ROOT_PATH.'/class/template.php' ; $tpl =& new XoopsTpl() ; $tpl->display( 'db:main.css' ) ; exit ; ?>
次にテンプレートディレクトリにmain.cssを配置。中身はモジュールしだいでいかようにでも。
/*たとえばこんなスタイル*/ h4{ color : red; }
モジュールインストールかアップデートするとmain.cssがテンプレートシステムに加わる。
index.phpでやったxoops_module_headerへのアサインを変更。
$link = '<link rel="stylesheet" type="text/css" media="screen" href="'.XOOPS_URL.'/modules/sample/modheader.php" />'; $xoopsTpl->assign('xoops_module_header',$link);
これでテンプレートに登録されたスタイルが吐き出されるはず。