LOGIN ID Password Auto Login Register Now! Lost Password?
XUGJ Wiki

スクラッチでテーマを作る anchor.png

デフォルトテーマの改造に慣れてきたら、イチからテーマファイルを作ってみましょう。
といっても、やはりデフォルトテーマをベースに改造するのが取りかかりやすいので、このあたりは適宜柔軟にいじっていってみてください。
基本的にデフォルトテーマから HTML の構造化タグを取り除き、Smarty 変数だけの状態にして、それらをどこに再配置するか、という作業になると思います。
あと、ぜひ、テーマファイル作り込みを始める前に、ざっとでよいので、 CustomizeManualの「(番外編)XOOPS でアクセシブルなサイトを構築する」も併読してください。

Page Top

ちょっと注意 anchor.png

イチから XOOPS のテーマを作るとなれば、サイト共通の見栄えについては、かなり自由に制御できるようになります。
ので、XOOPS 管理画面で、左ブロックに出るとされているものを右側に出すこともできますし、そもそも「左」ブロックという概念自体を取り去ってしまって、そこに表示設定したものは、自動的にないものとして扱われる、というように作ることもできます。
テーマを作った本人であればよいのですが、それと知らないサイト管理者/利用者にとっては戸惑いの原因にもなるので、注意してください。

Page Top

まずは見てみましょう anchor.png

XOOPS のテーマ作家の方々の仕事を見てみることも、とても刺激になり、かつできることを理解する助けになるでしょう。

Page Top

Smarty を覚えていこう anchor.png

XOOPS のテーマは Smarty という仕組みを使って構成されています。Smarty を用いることで、プログラムから渡された値を表示したり、HTML だけでは表現できない条件分岐ロジックなどを記述できます。カスタマイズに慣れてきたら、ざっとでいいので、Smarty マニュアル を読んでみてください。きっとよい刺激になると思います。
こと XOOPS/XCL で Smarty を使うということでしたら、XUGJ の Smarty 小ネタ もとても役に立ちます。「トップページだけに表示したいモノがある」「登録ユーザにだけ見せたいメッセージがある」などの Tips が盛りだくさんです。
あと注意したいのは、ただ HTML を書いているだけではなかなかそういう危険性も少ない「セキュリティホール」です。Smarty では、GET や POST などのユーザリクエスト由来の値やサーバ変数を扱えます。こういった値をいじるときは escape 修飾子や intval 修飾子を使うなどして、注意するように心がけましょう(参考:$Smarty変数の使い方)。

Page Top

Smartyデバグモードについて anchor.png

テーマ/テンプレート中に <{debug}> と記述するか、XOOPS の全般設定の「デバッグモードを有効にする」で、「Smartyテンプレートデバグ」をオンにすると、その時々で使うことのできる変数群を確認できます。
ちなみにデバグモードは、内部情報を閲覧するためのものなので、この Smarty デバグモードにかぎらず公開サーバで有効するべきものではありません。ローカルの作業環境などで使うようにしてください。
一点コツがあります。Smarty変数中に HTML の要素があると、この Smarty デバグ小窓を正しくレンダリングできない場合が出てきます。ほかにも var_dump 等を用いて Smarty 変数の内部をのぞきたい場合などでも同様ですが、こういう場合は、HTML のソースコードを確認してみましょう。ブラウザがレンダリングしてしまうのが問題なだけで、だいたいの場合、情報としては抱えてくれているので用件は果たせます。

Page Top

余談「GET と POST」 anchor.png

テーマやテンプレートをいじることには直接関係はないんですが、もしあなたが GET と POST という言葉を聞いたことがなければ、ぜひ一度調べてみてください
簡単に説明しますと、GET は、ブラウザのアドレス部分に表示される URL などの文字列、POST は、HTML form 要素で method を post に指定したときに渡されるデータです。XOOPS の Smarty では、$smarty.get.hoge や、$smarty.post.hoge というような形で用いることができ、テーマなどで、表示振り分けに使うことなどが可能です。

ただし、これらの$smarty.get.*や$smarty.post.*は、if文の中以外では使わないでください。

<{if $smarty.get.foo == 'bar'}>

という使い方なら構いませんが、調子に乗って

<{$smarty.get.foo}>

などと、そのまま表示してしまったら、即座にXSS脆弱性となります。

具体的な使い方については、またページを改めます。

Page Top

あと書くこと。 anchor.png

  • 初心者なら『Customizing XOOPS』が必携書でっせ(って売り上げ落とすのが目標でしたっけ8-))。
  • ブロックの weight 話
  • ブロック画像技、none 技
  • 消すとマズい Smarty 変数(header のヤツとか)
  • 真っ白問題とエディタと undo とか
  • メニューのカスタマイズ、php, フラッシュ, JavaScriptだってなんだって使えるぞ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 6817, today: 1, yesterday: 0
初版日時: 2007-12-22 (土) 07:41:31
最終更新: 2014-01-13 (月) 22:06:01 (JST) (1345d) by jidaikobo
Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities