『Customizing XOOPS』に寄せて 3 |
XOOPSで行こう! 5 |
Part1 XOOPSの基本とカスタマイズの流れ |
1-1 XOOPSってなんだろう? 16 |
XOOPSはWebサイト作成のための「簡単構築ツール」 16 |
XOOPSの入手方法 17 |
コラム XOOPSのライセンス 17 |
XOOPSの動作環境 18 |
コラム XOOPSが使えるレンタルサーバ 18 |
1-2 XOOPSはここまでカスタマイズできる 19 |
インストール直後は器だけの状態 19 |
まずは献立を考えよう 20 |
調理して盛り付けよう 21 |
Part2 XOOPSのデザインを変えよう? 「テーマ」のカスタマイズ |
2-1 テーマとテンプレートの基本 36 |
テーマとは 36 |
テンプレートとは 36 |
2-2 テーマの構造(標準テーマの仕組み) 38 |
テーマのファイル構造 38 |
テーマのレイアウト構成 39 |
defaultディレクトリ内のファイルの役割 45 |
2-3 defaultテーマを徹底的に解剖しよう 47 |
コラム テキストエディタについて 47 |
ヘッダ部分 48 |
XOOPS特有の変数群[Smarty変数] 49 |
メイン部分-左ブロック 52 |
メイン部分-中央ブロック 55 |
メイン部分-右ブロック 60 |
フッタ部分 62 |
defaultテーマにおけるその他のスタイル指定 63 |
2-4 サードパーティ製テーマの利用 71 |
テーマの入手方法 71 |
テーマのダウンロード 75 |
テーマの設置方法 78 |
2-5 テーマのカスタマイズの前に 81 |
サーバ環境の構築 81 |
コラム Windows環境でローカルサーバを設置するためのツール 82 |
テーマ作成に必要なツール 82 |
Defaultテーマのコピー 83 |
theme.htmlの修正(ディレクトリ名の変更) 84 |
デフォルトテーマの切り替え 91 |
2-6 「テーマ」のプチ・カスタマイズ 92 |
①サイトの横幅サイズを固定したい 92 |
②サイトの横幅サイズを固定してセンタリングしたい 94 |
③右ブロックのないデザインにしたい 99 |
④左ブロックのないデザインにしたい 103 |
⑤中央のブロック表示順序を変えたい 105 |
⑥背景色を変えてみよう 109 |
コラム ロゴ画像のあるセル内を指定する場合の注意 110 |
⑦背景画像を使ってみよう 113 |
⑧ブロックタイトルの背景色をブロックごとに変えたい 116 |
⑨ブロックタイトルの前に画像を配置する 119 |
⑩検索ブロックをヘッダ部分に表示する 121 |
⑪ヘッダ部分にサイト名とサイト副題を表示する 123 |
⑫ヘッダ部分にログインメニューとユーザーメニューを表示する 125 |
⑬外部JavaScriptのメニュースクリプトを取り込んで利用する(その1) 128 |
⑭外部JavaScriptのメニュースクリプトを取り込んで利用する(その2) 131 |
⑮メイン部分中央ブロック部の枠線を変更する 135 |
⑯ブロックのタイトルを非表示にする 137 |
コラム メインメニュー内の特定のメニューだけ非表示に変更したい 140 |
⑰リンクをクリックすると文字がボタン風に見える方法 141 |
⑱フッタに管理画面の「METAタグ/フッタ設定」で設定したものを表示する 141 |
⑲faviconをカスタマイズする 143 |
完成したらサーバに設定しよう 145 |
コラム モジュールごとにテーマを切り替える[Theme Changerモジュールの利用] 146 |
2-7 メインメニューのカスタマイズ 147 |
シンプルなメインメニュー 148 |
背景色と枠線を追加したメインメニュー 149 |
枠線を点線にしたメインメニュー 150 |
太い罫線の色と文字色が同時に変わるメインメニュー? 151 |
太い罫線の色と文字色が同時に変わるメインメニュー? 152 |
コラム TreemenuXL モジュールの利用 154 |
2-8 「テーマ選択」で複数のテーマを簡単切り替え 155 |
「テーマ選択」ブロックの設置方法 156 |
JavaScript小ネタ集? 158 |
Part3 XOOPSのデザインを変えよう? 「テンプレート」カスタマイズとカスタムブロックの利用 |
3-1 テンプレートの構造 160 |
ニュースモジュールのテンプレート 160 |
3-2 テンプレートのカスタマイズ前の準備 164 |
「テンプレート・マネジャー」を利用してカスタマイズする 164 |
テンプレートファイルを直接編集してアップデートする 167 |
3-3 テンプレートのカスタマイズ 169 |
テンプレート・マネージャーの使い方 169 |
記事レイアウトのカスタマイズ 172 |
3-4 カスタマイズに役立つテクニック 178 |
①メインメニューの各メニューの前にアイコン画像を置く 178 |
②ブロックタイトル部分を画像にする 182 |
③ダウンロードモジュールの登録画面を変更する 186 |
④フォーラムの表示をシンプルにまとめる 189 |
⑤「お問い合わせ」の最上位の余白を調整する 196 |
⑥ニュースモジュールの画像のはみ出しを改善する 198 |
コラム テーマとテンプレートは統合的に手を入れていこう 200 |
3-5 カスタムブロックを作ってみよう!! 201 |
①ウェルカムブロックを作ってみよう 202 |
②テーマ作成時にあると便利なカスタムブロック 207 |
③カスタムブロックでGoogleのサイト内検索機能を使ってみよう!! 208 |
④画像をランダムに表示するカスタムブロック 211 |
⑤登録ユーザーには特定のページとするカスタムブロック 213 |
コラム カスタムブロックの内部処理 213 |
⑥登録ユーザーが好きなテーマを保存できるカスタムブロック 215 |
⑦任意のブロック2つを1ブロックとして表示するカスタムブロック 216 |
コラム カスタムブロックの管理ツール-blocks admin moduleの利用 218 |
JavaScript小ネタ集? 219 |
Part4 モジュールとHackでカスタマイズ自由自在 |
4-1 モジュールの基礎知識 222 |
モジュールとは何? 222 |
モジュールが独立していることのメリットとデメリット 223 |
コラム ページコントローラとフロントコントローラ 224 |
XOOPS標準モジュールの意味 225 |
モジュール管理の基本 226 |
モジュールは「選ぶもの」? それとも「作るもの」? 231 |
コラム それでもモジュールを作りたい人へ 234 |
4-2 モジュールの使い方? TinyDを使いこなす 235 |
TinyDとは 235 |
TinyDのインストール 236 |
グループ管理での設定 239 |
コンテンツの追加 241 |
ページラップの利用 216 |
コラム mod_rewriteモード 245 |
コンテンツ管理 247 |
コラム TinyDのページナビゲーション機能 248 |
ブロック管理 249 |
コラム TinyDのテンプレート 250 |
コラム 内容表示ブロックのテンプレート 252 |
コラム TinyDを12個以上インストールする方法 253 |
4-3 モジュールの使い方? xhldを使いこなす 254 |
xhldとは 254 |
コラム RSSとATOM 255 |
xhldのインストール 256 |
「フィード管理」の設定 256 |
コラム 絞り込み・排除条件におけるperlの正規表現 261 |
「ブロック管理」の設定 263 |
メインページ 267 |
「一般設定」の指定 270 |
4-4 サードパーティ製モジュールでコアをカスタマイズ 273 |
XOOPSコアの機能を向上させるモジュールたち 273 |
メインメニューの表示方法をカスタマイズしたい[日本版MultiMenuモジュール] 274 |
検索をもっと使いやすくしたい[XOOPS検索モジュール] 279 |
コメントも検索対象にしたい[コメント検索モジュール] 283 |
ある特定のモジュールでだけテーマを切り替えたい[テーマチェンジャーモジュール] 285 |
ユーザー情報をカスタマイズしたい[白扇モジュール] 288 |
イメージマネジャーに自動サムネイルが欲しい[myAlbum-Pイメージマネジャー統合] 291 |
コラム myAlbum-Pのデータベース的利用とアタッチメントマネジャー機能 297 |
ブロック管理・グループ管理を使いやすくしたい[blocks adminモジュール] 299 |
サードパーティ製モジュールでも承認待ちを確認したい[[waitingモジュール] 301 |
記事のすぐ下にコメント入力フォームが欲しい[どこでもコメントモジュール] 302 |
コラム exModulesという素晴らしい作品群 306 |
4-5 Smartyプラグインでテンプレートカスタマイズ[強化編] 307 |
Smartyプラグインとは 307 |
アサインされた文字列を書き換える 307 |
コラム Smartyのデフォルト機能 310 |
文字列を丸めたい 311 |
コラム mbstring関数の使えないサーバ 312 |
メールアドレスを暗号化したい 313 |
住所を地図にリンクしたい 314 |
コラム 日本語をGETなどで渡すときの誤認識防止 315 |
テキストエリアにBB code入力フォームを付ける 315 |
投稿者の名前を表示したい 317 |
コラム ユーザー名(uname)と本名(name) 318 |
「友達に伝える」メールフォーム 319 |
日本版MultiMenuを使ったテーマ内メニュー 321 |
その他のサードパーティ製プラグイン 323 |
4-6 カスタマイズの最終兵器[Hack編] 326 |
Hackとは何? 326 |
ニュースの投稿で、最初から「本文」と「本文2」を分けたい 328 |
モジュールの検索で、検索対象を増やしたい 330 |
〈title〉タグをモジュール名ではなく、記事名にしたい 331 |
コラム テンプレート内アサインの限界 333 |
管理画面のアイコンの並び方を調整したい 333 |
モジュール管理画面の並び順 334 |
コラム モジュール表示順の数値の与え方 337 |
オンライン状況ブロック関連のHack 337 |
中央ブロックの順序を自由にコントロールする 339 |
電子メールアドレスでもログインできるようにする 341 |
テキストサニタイザの改造アラカルト 343 |
コラム すべてのモジュールでWiki 書式を使うテキストサニタイザHack 348 |
自動ログインHack 349 |
コラム Hack したファイルのバージョン管理 353 |
Simplified URLs Hack 353 |
お手軽多言語Hack[EMLH] 355 |
テンプレートHack 357 |
コラム 究極のHack「俺的XOOPS」 359 |
JavaScript 小ネタ集③ 360 |
Part5 XOOPS のセキュリティ対策 |
5-1 XOOPS とセキュリティ 362 |
セキュリティホールとは 362 |
XOOPS に対するアタック 362 |
セキュリティホールのあるPHP スクリプトサンプル 364 |
セキュリティ対策の重要性を認識しよう 365 |
コラム Part5 の読み方 365 |
5-2 注意すべきセキュリティホール 366 |
クロスサイトスクリプティング(XSS) 366 |
コラム Cookie を盗まれるということ 368 |
コラム XOOPS 内でのHTML コードの取扱い 369 |
SQL Injection 369 |
コラム MySQL 4.1の仕様変更 370 |
コラム XSS とSQL Injection 脆弱性を出さないために 371 |
CSRF 373 |
コラム Norton 問題 374 |
コラム ワンタイムチケットシステム 377 |
変数汚染 378 |
include 脆弱性 378 |
eval 脆弱性 379 |
コマンド実行関数利用時の脆弱性 379 |
ファイル指定脆弱性 380 |
不正ファイルアップロード 380 |
セッションハイジャック 380 |
RSS/ATOM 関連の脆弱性 382 |
コラム その他、あまり好ましくないアクセスに関わる話題 383 |
5-3 XOOPS サイト運営上の注意点 385 |
不要なモジュールをサーバに置かない 385 |
コアおよびモジュールを最新版に保つ 386 |
コラム コアバージョンを、いつ上げるべきなのか 386 |
XOOPS のバージョンを隠す 387 |
XOOPS であることを隠す 388 |
コラム サイト訪問者の性善説と性悪説 388 |
register_globals をOff にする 389 |
コラム register_globals on でないと動かないモジュール 390 |
allow_url_fopen をoff にする 391 |
コラム Santy ワーム 392 |
XOOPS_DB_PREFIX を変更する 393 |
安全なモジュールだけを利用する 393 |
コラム 悪意あるモジュール 395 |
コラム 大物アプリケーションモジュールの落とし穴 396 |
管理者アカウントと通常アクセス用のアカウントを使い分ける 397 |
コラム 管理者用と公開用で異なったURL を利用するHack 397 |
ファイルおよびディレクトリのパーミッション設定見直し 398 |
.htaccess での設定 398 |
5-4 Xoops Protector モジュールの使い方 401 |
Xoops Protector とは 401 |
Xoops Protector のインストール 402 |
コラム mainfile.php の意味 404 |
セキュリティガイド 405 |
コラム レスキュー機能 407 |
一般設定 407 |
コラム User-Agent で判断をすべきかどうか 413 |
ログの確認 415 |
JavaScript 小ネタ集④ 416 |
Part6 XOOPS サイト構築・運用のためのTips あれこれ |
6-1 プチ・トラブル解決Tips 418 |
ログインメニューを非表示にしてしまってログインできない 418 |
ユーザメニューを非表示にしてしまって管理画面に入れない 418 |
どうしても管理者ログインできなくなった 419 |
LAN から見ると(WAN から見ると)画像などがリンク切れしている 419 |
piCal の時刻が9 時間遅れている 420 |
モジュール管理画面で未インストールモジュールが表示されなくなった 420 |
モジュールをインストールしようとしたら「モジュールは既に存在します」 420 |
画面の一番上に変な文字や記号がでてしまう 420 |
文字化けする 422 |
コラム .htaccess の利用できないレンタルサーバで日本語を設定する 425 |
PHP5 で動かない 426 |
MySQL4.1で動かない 427 |
6-2 訪問者が使いやすいサイトにするためのTips 428 428 |
表示される日本語を書き換える 428 |
自動でログアウトされる時間を設定したい 429 |
コラム カスタムセッションのバグ 429 |
Firefox 拡張を利用する 430 |
6-3 テーマ・デザイン関連のTips 433 433 |
メインメニューに表示される文字列を変更したい 433 |
表の枠線を変えたい 433 |
フォーラムのカテゴリー一覧で画像を使う 436 |
form タグを使うと〈form〉の前と〈/form〉の後に空行ができる 437 |
〈input〉タグを使うとブラウザで長さが違う 438 |
スタイルシートの記述方法 439 |
カスタムブロックでタイトルを表示したくない 441 |
テーマ内で未読PM 数を表示し、新着PM のダイアログを出したい 442 |
テーマの好きな場所に、特定のブロックを配置したい 444 |
モジュール内の特定のページにだけブロックを表示したい 444 |
コラム テンプレート内ロジックの是非 446 |
6-4 XOOPS サイト運用のためのTips 447 |
モジュールのアップデート 447 |
ローカルなテスト環境の構築 449 |
phpMyAdmin 453 |
パートナーモジュールでサイトマップに改造してみよう 459 |
6-5 XOOPS パフォーマンス・チューニングTips 470 470 |
キャッシュ総論 470 |
コンパイルキャッシュあれこれ 471 |
モジュールキャッシュの危険性 472 |
コラム 「お問い合わせ」モジュールでの個人情報漏洩 474 |
ブロックキャッシュの有効性 474 |
ブロックキャッシュを広く有効化できるようにする 476 |
ブロックキャッシュの副作用 477 |
各種パフォーマンス検証 478 |
訪問者にとって「軽い」サイト構築のために 484 |
6-6 開発のためのTips 485 |
海外製モジュールをローカライズする 485 |
XOOPS のブロック単体を他のWeb アプリケーションで表示したい 485 |
Duplicatable ガイド 488 |
6-7 自己解決のためにできること496 496 |
PHP デバグ 496 |
エラーログを利用する 497 |
変数の値が知りたい・仕様書が欲しい 499 |
JavaScript 小ネタ集⑤ 500 |
XPOOS 関連サイト一覧 504 |
あとがきにかえて 507 |
索引 508 |
『Customizing XOOPS』に寄せて 3 |
XOOPSで行こう! 5 |
Part1 XOOPSの基本とカスタマイズの流れ |
1-1 XOOPSってなんだろう? 16 |
XOOPSはWebサイト作成のための「簡単構築ツール」 16 |
XOOPSの入手方法 17 |