HypCommonPreLoad に含まれる出力フィルターで、XOOPSを丸ごと携帯対応にすることができます。
"XOOPS_TRUST_PATH/class/hyp_common/preload/hyp_preload.conf.php" を編集して設定をします。該当ファイルがない場合は、同じディレクトリに含まれている "hyp_preload.conf.php.rename" をリネームしてください。
// 各機能のメインスイッチ (On = 1, Off = 0)
$this->use_k_tai_render = 0; // 携帯対応レンダラーを有効にする
/////////////////////////
// 携帯対応レンダー設定
// 携帯端末判定用 UA 正規表現
$this->k_tai_conf['ua_regex'] = '#(?:SoftBank|Vodafone|J-PHONE|DoCoMo|UP\.Browser|DDIPOCKET|WILLCOM)#';
// HTML再構築用タグ設定
$this->k_tai_conf['rebuilds'] = array(
'headerlogo' => array( 'above' => '<center>',
'below' => '</center>'),
'headerbar' => array( 'above' => '<hr>',
'below' => ''),
'breadcrumbs' => array( 'above' => '',
'below' => ''),
'leftcolumn' => array( 'above' => '<hr>',
'below' => ''),
'centerCcolumn' => array( 'above' => '<hr>',
'below' => ''),
'centerLcolumn' => array( 'above' => '',
'below' => ''),
'centerRcolumn' => array( 'above' => '',
'below' => ''),
'content' => array( 'above' => '<hr>',
'below' => ''),
'rightcolumn' => array( 'above' => '<hr>',
'below' => ''),
'footerbar' => array( 'above' => '',
'below' => ''),
'easylogin' => array( 'above' => '<div style="text-align:center;background-color:#DBBCA6;font-size:small">[ ',
'below' => ' ]</div>'),
'redirectMessage'=> array( 'above' => '<marquee loop="3">',
'below' => '</marquee>'),
'blockMenu' => array( 'above' => '<div style="background-color:#E0EEEE;font-size:small">',
'below' => '</div>'),
'blockContent' => array( 'above' => '',
'below' => ''),
'toMain' => array( 'above' => '<hr /><div style="text-align:center">',
'below' => '</div>'),
'subMenu' => array( 'above' => '<div id="submenu" style="background-color:#ccccff"><h2 style="text-align:center">サブメニュー</h2></div>',
'below' => ''),
);
// 携帯用XOOPSテーマセット
$this->k_tai_conf['themeSet'] = 'ktai_default';
// 携帯用XOOPSテンプレートセット
$this->k_tai_conf['templateSet'] = '';
// 使用テンプレート
$this->k_tai_conf['template'] = 'default';
// <body> attributes
$this->k_tai_conf['bodyAttribute'] = '';
// 無効にするブロックの bid (Block Id) (無指定:フィルタリングしない)
$this->k_tai_conf['disabledBlockIds'] = array();
// 有効にするブロックの bid (Block Id) (無指定:フィルタリングしない)
$this->k_tai_conf['limitedBlockIds'] = array();
// 常に表示するブロックの bid (Block Id) (メインメニューなど)
$this->k_tai_conf['showBlockIds'] = array();
// インラインイメージのリサイズ最大ピクセル
$this->k_tai_conf['pictSizeMax'] = '200';
// インラインイメージを表示するホスト名(後方一致)
$this->k_tai_conf['showImgHosts'] = array('amazon.com', 'yimg.jp', 'yimg.com', 'ad.jp.ap.valuecommerce.com', 'ad.jp.ap.valuecommerce.com', 'ba.afl.rakuten.co.jp', 'assoc-amazon.jp', 'ad.linksynergy.com', 'google.com');
// 直接画像を表示するホスト名(後方一致)
$this->k_tai_conf['directImgHosts'] = array('google-analytics.com');
// リダイレクトスクリプトを経由しないホスト名(後方一致)
$this->k_tai_conf['directLinkHosts'] = array('amazon.co.jp', 'ck.jp.ap.valuecommerce.com', 'afl.rakuten.co.jp', 'maps.google.com');
// 外部リンク用リダイレクトスクリプト
$this->k_tai_conf['redirect'] = XOOPS_URL . '/class/hyp_common/gate.php?way=redirect&_d=0&_u=0&_x=0&l=';
// Easy login を有効にする
$this->k_tai_conf['easyLogin'] = 1;
// Easy login で IP アドレス帯域をチェックしない
$this->k_tai_conf['noCheckIpRange'] = 0;
// リンクメッセージ
$this->k_tai_conf['msg']['easylogin'] = '簡単ログイン';
$this->k_tai_conf['msg']['logout'] = 'ログアウト';
$this->k_tai_conf['msg']['easyloginSet'] = '簡単ログイン:設定';
$this->k_tai_conf['msg']['easyloginUnset'] = '簡単ログイン:解除';
$this->k_tai_conf['msg']['toMain'] = '本文を表示';
$this->k_tai_conf['msg']['mainMenu'] = 'メインメニュー';
$this->k_tai_conf['msg']['subMenu'] = 'サブメニュー';
// アイコン
$this->k_tai_conf['icon']['first'] = '
';
$this->k_tai_conf['icon']['prev'] = '
';
$this->k_tai_conf['icon']['next'] = '
';
$this->k_tai_conf['icon']['last'] = '
';
$this->k_tai_conf['icon']['extLink'] = '
';
$this->k_tai_conf['icon']['hTag'] = '
';
$this->k_tai_conf['icon']['RSS'] = '
';
$this->k_tai_conf['icon']['toMain'] = '
';
// style
$this->k_tai_conf['style']['highlight'] = 'background-color:#ffc0cb';
// Easy login: 設定 or 解除リンクを表示するURI(XOOPS_URL以降)とuidのGETキーと挿入位置
$this->k_tai_conf['easyLoginConfPath'] = '/userinfo.php';
$this->k_tai_conf['easyLoginConfuid'] = 'uid';
$this->k_tai_conf['easyLoginConfInsert'] = 'content';
// GET query keys
$this->k_tai_conf['getKeys']['page'] = '_p_';
$this->k_tai_conf['getKeys']['hash'] = '_h_';
$this->k_tai_conf['getKeys']['block'] = '_b_';
//// Google Adsense 設定
// config ファイルのパス
$this->k_tai_conf['googleAdsense']['config'] = '';
// 挿入場所 ('header', 'body', 'footer') の下、無指定時はページ最上部
$this->k_tai_conf['googleAdsense']['below'] = '';
// Google Analytics 設定
$this->k_tai_conf['googleAnalyticsId'] = '';
// 携帯対応レンダー設定 以上
/////////////////////////////$this->k_tai_conf の各設定は、サイトごとに行う必要がある場合がありますので、サイトごとの設定方法を説明します。
方法は、2種類あります。
この方法では、XOOPS_TRUST_PATH 側 (XOOPS_TRUST_PATH/class/hyp_common/preload/hyp_preload.conf.php) で各サイトごとに設定できます。
例えば、$this->k_tai_conf['disabledBlockIds'] の設定を http://bit.ly/1iJelt (xoops.hypweb.net) に対して行いたい場合は、
1 | |
のように設定します。(このサイトの設定例です)
※ trust側で設定する場合は、XOOPS_ROOT_PATH/class/hyp_common/hyp_preload.conf.php を設置してはいけません。
各サイトの XOOPS_ROOT_PATH/class/hyp_common に hyp_preload.conf.php に設置して設定を行います。
XOOPS_ROOT_PATH/class/hyp_common/hyp_preload.conf.php を設置すると、XOOPS_TRUST_PATH/class/hyp_common/preload/hyp_preload.conf.php は読み込まれなくなります。
ブロックは、サブメニューとしてタイトルを一覧表示するようになっています。
また、特定のブロックを常に表示したり、ブロックを無効にすることもできます。
特定のブロックを、メインコンテンツと共に常に表示することができます。
メインメニューやユーザーメニューは常に表示させておくと便利でしょう。
設定は、
// 常に表示するブロックの bid (Block Id) (メインメニューなど)
$this->k_tai_conf['showBlockIds'] = array();で行います。
特定のブロックを無効にすることができます。
設定は、
// 非表示にするブロックの bid (Block Id)
$this->k_tai_conf['disabledBlockIds'] = array();で行います。
ブロックの設定を行う場合は、その性格上、必ずサイトごとの設定で行う必要があります。
設定方法は、ブロックIDを配列で指定します。例えば、ブロックID 3, 5, 10 を非表示にしたい場合は、次のようになります。
// 非表示にするブロックの bid (Block Id)
$this->k_tai_conf['disabledBlockIds'] = array(3, 5, 10);各モジュールのテンプレート内でも、Smarty変数の Smarty変数の $smarty.const.HYP_K_TAI_RENDER を使って、場合分けができます。
部分的に場合分けしてもいいですし、大胆に全体を
<{if $smarty.const.HYP_K_TAI_RENDER}>
携帯の場合のテンプレート
<{else}>
PCの場合のテンプレート
<{/if}>
とすることもできます。
d3forum では、スパム対策のデフォルトフィルターで、ゲスト投稿時に JavaScript を利用してフィルタリングを行っていますが、このフィルターが有効になっていると、ゲストが携帯で投稿することができません。
そこで、携帯からのアクセスかを IP 帯域で判断して、携帯であると判断した場合は、フィルタリングを行わないフィルターを書いてみました。
このファイルを、XOOPS_TRUST_PATH/modules/d3forum/class にアップロードし、[ d3forum の管理画面 - 一般設定 - SPAM投稿チェック用クラス ] に 「default_ktai」と指定してください。
サーバーの PHP が PHP 4.3.0 未満、又は PHP 5 未満で Web サーバーが Apache でない場合、header('Location: ...') でリダイレクトしているところでセッションが切れてしまいます。ログイン状態であっても、そこでログアウトしてしまうということです。
可能であれば、HTTP Header を検査して Location であれば、セッションID付きURLに書き換えることでセッションが切れないようになっていますが、未対応の環境下ではそれを行うことができないので、携帯対応レンダラー側で対処することはできません。
未対応の環境下サーバーで、リダイレクト時にセッションが切れないようにする方法は以下の2つの方法があります。
例えば、
header('Location: ' . $url);となっているところを次のように変更します。
if (defined('HYP_K_TAI_RENDER') && HYP_K_TAI_RENDER) {
redirect_header('Location: ' . $url);
} else {
header('Location: ' . $url);
}if (defined('HYP_K_TAI_RENDER') && HYP_K_TAI_RENDER) {
$ktairender =& HypKTaiRender::getSingleton(); // リファレンス取得
$url = $HypKTaiRender->getRealUrl($url); // 相対URLなら絶対URLに変換 (要: Ver. 20090104 以降)
$url = $ktairender->addSID($url, XOOPS_URL); // セッションIDを付加
}
header('Location: ' . $url);
-- nao-pon 2008-08-17 (日) 21:38:06
-- nao-pon 2008-09-21 (日) 21:06:49| Page Info | |
|---|---|
| Page Name : | keyword/HypCommonPreLoad/KtaiRender |
| Page aliases : | keyword/携帯対応レンダー, keyword/携帯対応レンダラー, 携帯レンダー, 携帯レンダラー, 携帯対応レンダー, 携帯対応レンダラー |
| Page owner : | nao-pon |
| Can Read | |
| Groups : | All visitors |
| Users : | All visitors |
| Can Edit | |
| Groups : | All visitors |
| Users : | All visitors |
ログイン
メインメニュー
"ぽちっ"としてね☆
付箋機能 (xpwiki)
MenuBar (xpwiki)
ブックマーク
サイト内 Wiki
☆ 検索 ☆
オンライン状況
サイト情報
現在ページのQRコード
参照元情報