2005 07 30_xwj_customizinig

582 views

Published on

2005年7月30日
XWJ (XOOPS West Japan)2005
神戸市中小企業支援センター
「新・XOOPS実践カスタマイズ」

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
582
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2005 07 30_xwj_customizinig

  1. 1. 新・ XOOPS 実践カスタマイズ Malaika System 早川知道 (Tom_G3X ) 2005.7.30
  2. 2. カスタマイズ時の注意点 <ul><li>コア・モジュールファイルに手を加えない </li></ul><ul><ul><li>[ まず最初 ] XOOPS やモジュールの管理画面で設定 </li></ul></ul><ul><ul><li>[ その次 ] テーマ、テンプレートでの編集 </li></ul></ul><ul><ul><li>[ 最後の手段 ] コア、モジュールをハック </li></ul></ul>Smarty を使いこなす事が、高度なカスタマイズの近道 <ul><li>サイト運用時も考慮したサイト設計 </li></ul><ul><ul><li>可能な限り、管理画面より変更・修正がベター </li></ul></ul><ul><ul><li>サイト運用者にやさしく </li></ul></ul>サイト運営が煩雑になっては、逆効果
  3. 3. Smarty を使いこなす為には <ul><li>Smarty の使い方を理解する </li></ul><ul><ul><ul><ul><li>日本語マニュアル  http://sunset.freespace.jp/smarty/ </li></ul></ul></ul></ul><ul><li>コア、モジュールの標準の Smarty 変数を知る </li></ul><ul><ul><ul><ul><li>テーマで使えるテンプレート変数 http://xoops.sourceforge.jp/wiki/xoops2/ </li></ul></ul></ul></ul><ul><li>独自の Smarty 変数を追加する </li></ul>
  4. 4. Smarty 変数の独自追加方法 <ul><li>別ファイル読み込み方式 </li></ul><{php}> ~~ PHP コードを記述~~ <{/php}> <{ include_php file=&quot;$xoops_rootpath/ex_tpl_assign.php&quot;}> <ul><li>テーマに直書き方式 </li></ul><ul><li>Smarty プラグイン追加作成 </li></ul>
  5. 5. 実践的なカスタマイズの紹介 <ul><li>標準で使える Smarty 変数の使用例 </li></ul><ul><ul><li>ウエルカムメッセージ </li></ul></ul><ul><ul><li>表示中のモジュール情報を使ってみる (2.0.10-JP の新機能 ) </li></ul></ul><ul><ul><li>簡易テーマチャンジャー (2.0.10-JP の新機能 ) </li></ul></ul><ul><ul><li>複雑なブロック・レイアウトに挑戦 (2.0.10-JP の新機能 ) </li></ul></ul><ul><li>Smarty プラグイン </li></ul><ul><ul><li>TinyD プラグインを使ってみる </li></ul></ul><ul><ul><li>メインメニューをテーマに取り込む </li></ul></ul>
  6. 6. 標準の Smarty 変数 ( 一例 ) <ul><li>ユーザー関係の変数 </li></ul><{$xoops_isadmin}> 訪問者が管理者なら True を返す <{$xoops_isuser}> 訪問者が登録ユーザーなら True を返す <{$xoops_userid}> 登録者のユーザー ID (1, 2, 3, …..) <{$xoops_uname}> 登録者のユーザー名 (admin, Tom, …..) <ul><li>URL 関係の変数 </li></ul><{$xoops_url}> XOOPS サイトのURL <{$xoops_imageurl}> 現在のテーマまでのURL <{$xoops_upload_url}> uploads ディレクトリまでのURL
  7. 7. ウエルカムメッセージ ( 使用例 ) <ul><li>使用例 </li></ul><{if $xoops_isuser }>  ユーザーである場合 <a href=“ <{$xoops_url}> /userinfo.php?uid= <{$xoops_userid}> ”> <{$xoops_uname}> </a> さん、こんにちは! <{if $xoops_uname == “kanpei” }> アヘアへ~~ <{/if}> <{/if}> <{if $xoops_isadmin }>  管理者ユーザーである場合 <a href=“ <{$xoops_url}> /admin.php”> 管理画面 </a> <{/if}> <ul><li>表示例 </li></ul>kanpei さん、こんにちは! アヘアヘ~~ Kanpei さんの表示 管理者の表示 admin さん、こんにちは!  管理画面
  8. 8. 表示中のモジュール情報を取得する <ul><li>表示中のモジュール名、モジュールディレクトリ名を取得したい </li></ul><ul><ul><li><{$xoops_pagetitle}> は、厳密には表示中のモジュール名では無い </li></ul></ul><ul><ul><li>表示中のモジュールディレクトリ名は取得出来ない </li></ul></ul><ul><li>取得出来ればモジュール毎に異なった表現が可能 </li></ul>表示中のモジュール情報を取得して、テーマに活用してみよう! ↓ <ul><li>XOOPS2.0.10-JP より標準で使えるようになった </li></ul><ul><ul><li><{$xoop_modulename}> アクセス中のモジュール名 </li></ul></ul><ul><ul><li><{$xoops_dirname}> アクセス中のモジュールディレクトリ名 </li></ul></ul>
  9. 9. 表示中のモジュールを取得 ( 記述例 ) <ul><li>表示例 </li></ul>Smarty 変数            表示例1   表示例2 <{$xoops_modulename}>    ニュース   ●○フォーラム  <{$xoops_dirname}>          news       newbb <ul><li>記述例 </li></ul><{if $xoops_dirname }>   <img src=“<{$xoops_imageurl}>title_ <{$xoops_dirname}> .gif“    alt=“ <{$xoops_modulename}> ” /> (モジュール毎に異なった画像を表示させる) <{else}>    ( index.php など XOOPS ルートファイルでの表示を記述) <{/if}> / title_newbb.gif などの画像を用意しておく
  10. 10. 表示中のモジュール情報を取得 ( 使用例 ) <ul><li>トップページ (index.php では Flash を表示 ) </li></ul><ul><li>ニュース ( モジュール内では、モジュール毎に別々の画像を表示 ) </li></ul><ul><li>使用サイト </li></ul><ul><ul><ul><ul><li>桜ケ丘病院  http://www.sakuragaoka-hp.jp/ </li></ul></ul></ul></ul><ul><ul><ul><ul><li>TCP-IP   http://yours.tcp-ip.or.jp/ </li></ul></ul></ul></ul>
  11. 11. 簡易テーマチェンジャー <ul><li>モジュール毎に CSS を変更する (簡易テーマチェンジャー) </li></ul><head> : 中略 <{ if $xoops_dirname }> <link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen“ href=“ <{$xoops_imageurl}><{$xoops_dirname}> .css&quot; /> <{else}> <link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen“ href=&quot; <{$xoops_themecss}> &quot; /> <{/if}> : 中略 </head> default テーマの場合、    /themes/default/style.css    /themes/default/ news .css    /themes/default/ newbb .css
  12. 12. 複雑なブロックレイアウト <ul><li>$block.weight を使って、こんなレイアウトも可能に </li></ul>XOOPS 2.0.10-JP より $block に weight がアサインされ ブロックの多彩なレイアウトが 可能になった。 左 右 中央 - 中 中央 - 左 中央 - 右 中央 - 中 中央 - 左 中央 - 右
  13. 13. 複雑なブロックレイアウト ($block.weight) <ul><li>記述例  ( theme.html ) </li></ul><{foreach item=block from=$xoops_ccblocks}> <{if $block.weight < 100 }> <div class=“BlockTitle”><{$block.title}></div> <div class=“BlockContent”><{$block.content}></div> <{/if}> <{/foreach}>    :   中略    : <{foreach item=block from=$xoops_ccblocks}> <{if $block.weight >= 100 }> <div class=“BlockTitle&quot;><{$block.title}></div> <div class=“BlockContent&quot;><{$block.content}></div> <{/if}> <{/foreach}>
  14. 14. Smarty プラグインを使う <ul><li>テーマとテンプレートの編集方法の違い </li></ul><ul><ul><li>テンプレート </li></ul></ul><ul><ul><ul><li>テンプレートマネージャーよりブラウザーで編集可能 </li></ul></ul></ul><ul><ul><li>テーマ </li></ul></ul><ul><ul><ul><li>FTP などの方法でアップロードする必要がある </li></ul></ul></ul><ul><ul><ul><ul><li>これ、結構、面倒!! (T_T) </li></ul></ul></ul></ul>これを TinyD で解決しちゃおう! しかも、もっと、多彩に使える!! ワイワイ (^o^) 丿
  15. 15. TinyD をテーマに使う (Smarty プラグイン ) <ul><li>Smarty プラグインを使う </li></ul><ul><ul><li>龍司さんが、「 TinyD 表示プラグイン」を公開されていた。 ところがその後、 TinyD デフォルトのディレクトリ名が変更された為、 最新の TinyD に、完全には対応できなくなった。 </li></ul></ul><ul><ul><li>最新の TinyD にも対応出来るように変更してみた。 一応、龍司さんのバージョンと互換性あり。 Malaika System よりダウンロード出来る。 /class/smarty/plugins/ に入れておく。 </li></ul></ul><{ tinyD dir=“ (tinyD ディレクトリ名 ) ” id=“ (tinyD コンテンツ ID) ” }> <ul><li>使い方 </li></ul><{ tinyD dir=“ tinyd1 ” id=“ 20 ” }> <ul><li>記述例 </li></ul>
  16. 16. TinyD をテーマに使う ( 使用例 : テーマ ) <ul><li>テーマに適用 </li></ul><ul><ul><li>更新が楽になる </li></ul></ul><ul><ul><ul><li>ヘッダーのロゴやバナーなどを頻繁に変更したい </li></ul></ul></ul><ul><li>使用例 </li></ul><ul><ul><li>TCP-IP   http://yours.tcp-ip.or.jp/ </li></ul></ul>
  17. 17. TinyD をテーマに使う ( 使用例 : テンプレート ) <ul><li>使用例 </li></ul><ul><ul><li>うえこみ春日井小牧 xoopsfaq   http://www.kasugai-komaki.jp/modules/xoopsfaq/ </li></ul></ul><ul><li>テンプレートに適用 </li></ul><ul><ul><li>コンテンツ管理が楽になる </li></ul></ul><ul><ul><ul><li>注意書きなどを表示 </li></ul></ul></ul><ul><ul><ul><li>別のコンテンツを割り込ませる </li></ul></ul></ul>
  18. 18. メインメニューをテーマに <ul><li>最も利用頻度の高いブロックは、 「メインメニュー」か? </li></ul><ul><li>ブロック以外の場所に配置してみたい </li></ul>メインメニューのブロック関数を テーマに取込んで、多彩な表現をしてみよう!
  19. 19. メインメニューをテーマに ( ブロック関数 ) <ul><li>PHPコードを記述の場合 </li></ul><{php}> global $xoopsModule; require_once XOOPS_ROOT_PATH.“/modules/system/blocks/system_blocks.php“; $MainMenu = b_system_main_show();  ( メインメニューのブロック関数を呼び出し ) $this->assign( ” ex_mainmenu “, $MainMenu );    (メインメニューの情報) <{/php}> <ul><li>同様に、モジュールのブロック関数などを呼び出す事で、 応用可能だ。 </li></ul><ul><li>Smarty プラグインを使った場合 </li></ul><ul><ul><li>xoops_block http://malaika.s31.xrea.com より配布中 </li></ul></ul><{ xoops_block mod =“system” func =“b_system_main_show” assign =“ex_mainmenu”}>
  20. 20. メインメニューをテーマに ( 使い方 ) <ul><li>メニュー表示 </li></ul><{foreach item= module from= $ex_mainmenu.modules }>   <a href=“<{$xoops_url}>/modules/ <{ $module.directory }> /”> <{ $module.name }> </a> | <{/foreach}>        ( 各モジュールへのリンクを生成する ) <{if $xoops_dirname }>   <{foreach item=module from= $ex_mainmenu.modules }>    <{if $module.directory == $xoops_dirname && $module.sublinks }>     <div class=“blockTitle”><{ $xoops_modulename }> :</div>  ( ブロックタイトル )     <div class=“blockContent”>  ( ブロックコンテンツ )      <{foreach item=sublink from= $module.sublinks }>       <a id=“mainmenu” href=“<{ $sublink.url }>”><{ $sublink.name }></a>      <{/foreach}>  ( そのモジュールのサブメニューを表示させる )     </div>    <{/if}>   <{/foreach}> <{/if}> <ul><li>サブメニュー表示 </li></ul>
  21. 21. メインメニューをテーマに ( 使用例) <ul><li>Malaika System http://malaika.s31.xrea.com/ </li></ul><ul><li>Sereno http://www.edg.jp/ </li></ul>

×