2005 07 30_xwj_customizinig

21
Malaika System XOOPS 新新新新新新新新 Malaika System 新新新新 (Tom_G3X) 2005.7.30

Upload: tom-hayakawa

Post on 30-Jun-2015

446 views

Category:

Documents


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: 2005 07 30_xwj_customizinig

Malaika System

新・ XOOPS 実践カスタマイズ

Malaika System 早川知道 (Tom_G3X)

2005.7.30

Page 2: 2005 07 30_xwj_customizinig

2

Malaika System

カスタマイズ時の注意点

• コア・モジュールファイルに手を加えない– [ まず最初 ] XOOPS やモジュールの管理画面で設定– [ その次 ] テーマ、テンプレートでの編集– [ 最後の手段 ] コア、モジュールをハックSmarty を使いこなす事が、高度なカスタマイズの近道

• サイト運用時も考慮したサイト設計– 可能な限り、管理画面より変更・修正がベター– サイト運用者にやさしくサイト運営が煩雑になっては、逆効果

Page 3: 2005 07 30_xwj_customizinig

3

Malaika System

Smarty を使いこなす為には

• Smarty の使い方を理解する– 日本語マニュアル  http://sunset.freespace.jp/smarty/

• コア、モジュールの標準の Smarty 変数を知る

– テーマで使えるテンプレート変数 http://xoops.sourceforge.jp/wiki/xoops2/

• 独自の Smarty 変数を追加する

Page 4: 2005 07 30_xwj_customizinig

4

Malaika System

Smarty 変数の独自追加方法

• 別ファイル読み込み方式

<{php}>~~ PHP コードを記述~~<{/php}>

<{include_php file="$xoops_rootpath/ex_tpl_assign.php"}>

• テーマに直書き方式

• Smarty プラグイン追加作成

Page 5: 2005 07 30_xwj_customizinig

5

Malaika System

実践的なカスタマイズの紹介

• 標準で使える Smarty 変数の使用例– ウエルカムメッセージ– 表示中のモジュール情報を使ってみる  (2.0.10-JP の新

機能 )

– 簡易テーマチャンジャー  (2.0.10-JP の新機能 )

– 複雑なブロック・レイアウトに挑戦 (2.0.10-JP の新機能 )

• Smarty プラグイン– TinyD プラグインを使ってみる– メインメニューをテーマに取り込む

Page 6: 2005 07 30_xwj_customizinig

6

Malaika System

標準の Smarty 変数 ( 一例 )

• ユーザー関係の変数<{$xoops_isadmin}> 訪問者が管理者なら True を返す<{$xoops_isuser}> 訪問者が登録ユーザーなら True を返す<{$xoops_userid}> 登録者のユーザー ID (1, 2, 3, …..)<{$xoops_uname}> 登録者のユーザー名 (admin, Tom, …..)

• URL 関係の変数<{$xoops_url}> XOOPS サイトのURL<{$xoops_imageurl}> 現在のテーマまでのURL<{$xoops_upload_url}> uploads ディレクトリまでのURL

Page 7: 2005 07 30_xwj_customizinig

7

Malaika System

ウエルカムメッセージ ( 使用例 )

• 使用例<{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}>

• 表示例

kanpei さん、こんにちは! アヘアヘ~~Kanpei さんの表示

管理者の表示 admin さん、こんにちは! 管理画面

Page 8: 2005 07 30_xwj_customizinig

8

Malaika System

表示中のモジュール情報を取得する

• 表示中のモジュール名、モジュールディレクトリ名を取得したい– <{$xoops_pagetitle}> は、厳密には表示中のモジュール名では

無い– 表示中のモジュールディレクトリ名は取得出来ない

• 取得出来ればモジュール毎に異なった表現が可能

表示中のモジュール情報を取得して、テーマに活用してみよう!

• XOOPS2.0.10-JPより標準で使えるようになった– <{$xoop_modulename}> アクセス中のモジュール名– <{$xoops_dirname}> アクセス中のモジュールディレクトリ名

Page 9: 2005 07 30_xwj_customizinig

9

Malaika System

表示中のモジュールを取得 ( 記述例 )

• 表示例Smarty 変数            表示例1   表示例2<{$xoops_modulename}> ニュース   ●○フォーラム <{$xoops_dirname}> news newbb

• 記述例<{if $xoops_dirname }>  <img src=“<{$xoops_imageurl}>title_<{$xoops_dirname}>.gif“      alt=“<{$xoops_modulename}>” /> (モジュール毎に異なった画像を表示させる)<{else}>    ( index.php など XOOPS ルートファイルでの表示を記述)<{/if}>

/ title_newbb.gif などの画像を用意しておく

Page 10: 2005 07 30_xwj_customizinig

10

Malaika System

表示中のモジュール情報を取得 ( 使用例 )

• トップページ (index.php では Flash を表示 )

• ニュース ( モジュール内では、モジュール毎に別々の画像を表示 )

• 使用サイト– 桜ケ丘病院  http://www.sakuragaoka-hp.jp/

– TCP-IP   http://yours.tcp-ip.or.jp/

Page 11: 2005 07 30_xwj_customizinig

11

Malaika System

簡易テーマチェンジャー

• モジュール毎に CSS を変更する(簡易テーマチェンジャー)<head> : 中略 <{ if $xoops_dirname }> <link rel="stylesheet" type="text/css" media="screen“ href=“<{$xoops_imageurl}><{$xoops_dirname}>.css" /> <{else}> <link rel="stylesheet" type="text/css" media="screen“ href="<{$xoops_themecss}>" /> <{/if}> : 中略</head>

default テーマの場合、    /themes/default/style.css    /themes/default/news.css    /themes/default/newbb.css

Page 12: 2005 07 30_xwj_customizinig

12

Malaika System

複雑なブロックレイアウト

• $block.weight を使って、こんなレイアウトも可能に

左 右

中央 - 中

中央 - 左 中央 - 右

中央 - 中

中央 - 左 中央 - 右

XOOPS 2.0.10-JP より$block に weight がアサインされブロックの多彩なレイアウトが可能になった。

Page 13: 2005 07 30_xwj_customizinig

13

Malaika System

複雑なブロックレイアウト($block.weight)

• 記述例 ( theme.html )

<{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"><{$block.title}></div> <div class=“BlockContent"><{$block.content}></div> <{/if}><{/foreach}>

Page 14: 2005 07 30_xwj_customizinig

14

Malaika System

Smarty プラグインを使う

• テーマとテンプレートの編集方法の違い– テンプレート

• テンプレートマネージャーよりブラウザーで編集可能

– テーマ• FTP などの方法でアップロードする必要がある

– これ、結構、面倒!! (T_T)

これを TinyD で解決しちゃおう!しかも、もっと、多彩に使える!!ワイワイ (^o^) 丿

Page 15: 2005 07 30_xwj_customizinig

15

Malaika System

TinyD をテーマに使う (Smarty プラグイン )

• Smarty プラグインを使う– 龍司さんが、「 TinyD 表示プラグイン」を公開されていた。

ところがその後、 TinyD デフォルトのディレクトリ名が変更された為、最新の TinyD に、完全には対応できなくなった。

– 最新の TinyD にも対応出来るように変更してみた。一応、龍司さんのバージョンと互換性あり。Malaika System よりダウンロード出来る。/class/smarty/plugins/ に入れておく。

<{ tinyD dir=“(tinyD ディレクトリ名 )” id=“(tinyD コンテンツ ID)” }>

• 使い方

<{ tinyD dir=“tinyd1” id=“20” }>

• 記述例

Page 16: 2005 07 30_xwj_customizinig

16

Malaika System

TinyD をテーマに使う ( 使用例 : テーマ )

• テーマに適用– 更新が楽になる

• ヘッダーのロゴやバナーなどを頻繁に変更したい

• 使用例– TCP-IP   http://yours.tcp-ip.or.jp/

Page 17: 2005 07 30_xwj_customizinig

17

Malaika System

TinyD をテーマに使う ( 使用例 : テンプレート )

• 使用例– うえこみ春日井小牧 xoopsfaq   http://www.kasugai-komaki.jp/modules/xoopsfaq/

• テンプレートに適用– コンテンツ管理が楽になる

• 注意書きなどを表示• 別のコンテンツを割り込ませる

Page 18: 2005 07 30_xwj_customizinig

18

Malaika System

メインメニューをテーマに

• 最も利用頻度の高いブロックは、「メインメニュー」か?

• ブロック以外の場所に配置してみたい

メインメニューのブロック関数をテーマに取込んで、多彩な表現をしてみよう!

Page 19: 2005 07 30_xwj_customizinig

19

Malaika System

メインメニューをテーマに ( ブロック関数 )

• PHPコードを記述の場合<{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}>

• 同様に、モジュールのブロック関数などを呼び出す事で、

応用可能だ。

• Smarty プラグインを使った場合– xoops_block http://malaika.s31.xrea.comより配布中

<{xoops_block mod=“system” func=“b_system_main_show” assign=“ex_mainmenu”}>

Page 20: 2005 07 30_xwj_customizinig

20

Malaika System

メインメニューをテーマに ( 使い方 )

• メニュー表示<{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}>

• サブメニュー表示

Page 21: 2005 07 30_xwj_customizinig

21

Malaika System

メインメニューをテーマに ( 使用例)

• Malaika System http://malaika.s31.xrea.com/

• Sereno http://www.edg.jp/