ページへ戻る

− Links

 印刷 

HypCommonPreLoad (はいぱー・こもん・ぷりろーど) :: XOOPS マニア

xpwiki:keyword/HypCommonPreLoad


ページ内コンテンツ
  • HypCommonPreLoad (はいぱー・こもん・ぷりろーど)
    • 組み込み手順
      • X-update 利用
      • FTP によるアップロード
      • XOOPS Cube の場合
      • XOOPS 2 の場合
    • 設定方法
      • 更に詳細な設定
      • 各機能の詳細説明
        • 検索ワードを定数にセット
        • 検索ワードをハイライト表示
        • POST時プロキシチェックする
        • 機種依存文字フィルター
        • POST SPAM フィルター
          • 禁止語句と禁止URLの設定
        • 無効フィールドのBot罠を自動で仕掛ける
        • 携帯対応レンダーを有効にする
      • 検索語マーカー用のCSSについて~

HypCommonPreLoad (はいぱー・こもん・ぷりろーど) anchor.png[5] Edit [6]

Ver 20080604 未満では、すべての機能がデフォルトで有効になっていましたが、Ver 20080604 以降では、デフォルト値が変更になり、すべての機能が無効になっています。

すでに hyp_preload.conf.php にて、独自設定で運用されている場合は、問題ありませんがデフォルト値で運用されている場合は、「設定方法」を参考に、hyp_preload.conf.php にて設定を行ってください。

アクセス元の検索ワード&エンジン名取得や、検索語のハイライト表示機能、スパム投稿フィルターを組み込む XOOPS[7] Cube 用の Preload Class です。

XOOPS_ROOT_PATH[8]/include/common.php に組み込むことで、XOOPS[7] 2 にも対応できます。

Page Top

組み込み手順 anchor.png[9] Edit [10]

Page Top

X-update[11] 利用 anchor.png[12] Edit [13]

HypCommonPreLoad は、XOOPS[7] Cube Legacy 2.2 以上で動作する X-update[11] に対応しています。

X-update[11]インストール[14]することで、ファイル・フォルダの配置やパーミッション設定を自動で行うことができるので、XOOPS[7] Cube Legacy 2.2 以上の環境下では X-update[11] によるインストール[14]&アップデートを強くお勧めします。

HypCommonPreLoad は、X-update[11] 上では "hypconf" としてリストアップされています。

X-update[11] については次のリンクを参照してください。

Page Top

FTP によるアップロード anchor.png[18] Edit [19]

  1. なにはともあれ、HypCommonFunc[1] をダウンロード、解凍して html 側、xoops_trust_path[20] 側を間違えないようにサーバーにアップロードしてください。
  2. Ver 20080604 以降では、すべての機能が無効になっていますので、必要に応じて各機能を有効にしてください。
    • その設定方法は、このページの「設定方法」をご覧ください。
Page Top

XOOPS[7] Cube の場合 anchor.png[21] Edit [22]

  1. Cube の XOOPS_ROOT_PATH[8]/preload ディレクトリに アーカイブの html/preload/HypCommonPreLoad.class.php をアップロードされていることを確認してください。
  2. 完了!
Page Top

XOOPS[7] 2 の場合 anchor.png[23] Edit [24]

  1. 以前に HypCommonFunc[1], 検索語マーカー, BBQあらしお断りシステム などを 組み込んでいた場合は、common.php を元の状態に戻します。
  2. 検索語マーカー を組み込んでいた場合は、XOOPS_ROOT_PATH[8]/footer.php を元の状態に戻します。
  3. XOOPS_ROOT_PATH[8]/include/common.php を編集します。
       // ############## Include common functions file ##############
       include_once XOOPS_ROOT_PATH[8].'/include/functions.php';
       // ############# Set Query Words & Load HypCommonFunction Class #############
       include_once XOOPS_TRUST_PATH[20] . '/class/hyp_common/preload/hyp_preload.php';
       $HypCommonPreLoad = @ new HypCommonPreLoad();
       $HypCommonPreLoad->preFilter();
    を挿入。
       if (file_exists('./xoops_version.php')) {
       // ############# POST Filter with HypCommonPreLoad #############
       $HypCommonPreLoad->postFilter();
    を挿入。

以上で完了!

ん〜なんだか面倒だな。って思う人用に 編集済みの filecommon.php[25] を用意しました。 :D

Page Top

設定方法 anchor.png[26] Edit [27]

おおまかな設定は hypconf モジュールで行います。hypconf モジュールは HypCommonFunc[1] に含まれています。サーバーにアップロード後に XOOPS[7] のモジュールのインストール[14]からインストール[14]を行なってください。 インストール[14]後は、モジュール設定から「HypCommonの設定」を選択して適宜設定を行なってください。

Page Top

更に詳細な設定 anchor.png[28] Edit [29]

  • さらに詳細な設定を変えるには XOOPS_TRUST_PATH[20]/class/hyp_common/preload/hyp_preload.conf.php.rename を hyp_preload.conf.php にリネームしてその内容を編集します。
    また、このファイルは html側の XOOPS_ROOT_PATH[8]/class/hyp_common ディレクトリに置くこともできます。その場合は html側 が優先されますので、サイトごとに設定を変えることも可能です。
    パスファイル名優先度備考
    XOOPS_ROOT_PATH[8]/class/hyp_common/hyp_preload.conf.php編集可
    XOOPS_TRUST_PATH[20]/class/hyp_common/preload/hyp_preload.conf.php編集可
    XOOPS_TRUST_PATH[20]/class/hyp_common/preload/hyp_preload.php編集不可(デフォルト値)
    上記2つのファイルが存在しない場合このファイル内の設定値が適用されます。
  • 文字エンコーディングを EUC-JP 以外にして XOOPS[7] を運用している場合(UTF-8など)は、html側のXOOPS_ROOT_PATH[8]/class/hyp_common/hyp_preload.conf.php をその文字エンコーディングで保存してください。
  • 設定箇所は以下の部分です。
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    
            // 各機能のメインスイッチ (On = 1, Off = 0)
            $this->use_set_query_words   = 0; // 検索ワードを定数にセット
            $this->use_words_highlight   = 0; // 検索ワードをハイライト表示
            $this->use_proxy_check       = 0; // POST時プロキシチェックする
            $this->use_dependence_filter = 0; // 機種依存文字フィルター
            $this->use_post_spam_filter  = 0; // POST SPAM フィルター
            $this->post_spam_trap_set    = 0; // 無効フィールドのBot罠を自動で仕掛ける
            $this->use_k_tai_render      = 0; // 携帯対応レンダーを有効にする
            $this->use_smart_redirect    = 0; // スマートリダイレクトを有効にする
                    
            // 各種設定
            $this->configEncoding = 'EUC-JP'; // このファイルの文字コード
            
            $this->encodehint_word = 'ぷ';    // POSTエンコーディング判定用文字
            $this->encodehint_name = 'HypEncHint'; // POSTエンコーディング判定用 Filed name
            $this->detect_order = 'ASCII, JIS, UTF-8, eucJP-win, EUC-JP, SJIS-win, SJIS';
            
            $this->msg_words_highlight = 'これらのキーワードがハイライトされています'; 
            
            $this->no_proxy_check  = '/^(127\.0\.0\.1|192\.168\.1\.)/'; // 除外IP
            $this->msg_proxy_check = 'Can not post from public proxy.';
            
            // POST SPAM
            $this->use_mail_notify    = 1;    // POST SPAM メール通知 0:なし, 1:SPAM判定のみ, 2:すべて
            $this->send_mail_interval = 60;   // まとめ送りのインターバル(分) (0 で随時送信)
            $this->post_spam_a   = 1;         // <a> タグ 1個あたりのポイント
            $this->post_spam_bb  = 1;         // BBリンク 1個あたりのポイント
            $this->post_spam_url = 1;         // URL      1個あたりのポイント
            $this->post_spam_host  = 31;      // Spam HOST の加算ポイント
            $this->post_spam_word  = 10;      // Spam Word の加算ポイント
            $this->post_spam_filed = 51;      // Spam 無効フィールドの加算ポイント
            $this->post_spam_trap  = '___url';// Spam 罠用無効フィールド名
            
            $this->post_spam_user  = 50;      // POST SPAM 閾値: ログインユーザー
            $this->post_spam_guest = 15;      // POST SPAM 閾値: ゲスト
            $this->post_spam_badip = 100;      // アクセス拒否リストへ登録する閾値
        
            // POST SPAM のポイント加算設定
            $this->post_spam_rules = array(
                // 同じURLが1行に3回 11pt
                "/((?:ht|f)tps?:\/\/[!~*'();\/?:\@&=+\$,%#\w.-]+).+?\\1.+?\\1/i" => 11,
                
                // 65文字以上の英数文字のみで構成されている 15pt
                // '/^[\x00-\x7f\s]{65,}$/' => 15,
                
                // 無効な文字コードがある 31pt
                '/[\x00-\x08\x11-\x12\x14-\x1f\x7f]+/' => 31
            );
            
            // 無効なフィールド定義
            $this->ignore_fileds = array(
                // 'url' => array('newbb/post.php', 'comment_post.php'),
            );
            
            // 検索ワード定数名
            $this->q_word  = 'XOOPS_QUERY_WORD';         // 検索ワード
            $this->q_word2 = 'XOOPS_QUERY_WORD2';        // 検索ワード分かち書き
            $this->se_name = 'XOOPS_SEARCH_ENGINE_NAME'; // 検索元名
        
            // KAKASI での分かち書き結果のキャッシュ先
            $this->kakasi_cache_dir = XOOPS_ROOT_PATH[8].'/cache2/kakasi/';
            
            // スマートリダイレクトのポップアップ最短秒数
            $this->smart_redirect_min_sec = 5;
            
            /////////////////////////
            // 携帯対応レンダー設定
            
            // 携帯端末判定用 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[7]テーマセット
            $this->k_tai_conf['themeSet'] = 'ktai_default';
            
            // 携帯用XOOPS[7]テンプレートセット
            $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&amp;_d=0&amp;_u=0&amp;_x=0&amp;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']   = '((s:465d))';
            $this->k_tai_conf['icon']['prev']    = '((s:465b))';
            $this->k_tai_conf['icon']['next']    = '((s:465a))';
            $this->k_tai_conf['icon']['last']    = '((s:465c))';
            $this->k_tai_conf['icon']['extLink'] = '((i:f8d9))';
            $this->k_tai_conf['icon']['hTag']    = '((i:f8e4))';
            $this->k_tai_conf['icon']['RSS']     = '((e:f699))';
            
            $this->k_tai_conf['icon']['toMain']  = '((e:f7e4))';
            
            // 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'] = '';
            
            // 携帯対応レンダー設定 以上
            /////////////////////////////
  • 検索ワードの分かち書き機能を利用する場合は、サーバーに KAKASI がインストール[14]されていて、その KAKASI のパスを XOOPS_TRUST_PATH[20]/class/hyp_common/hyp_kakasi.php 内で適切に設定する必要があります。
  • KAKASI での分かち書き結果のキャッシュ を有効にするには、"$this->kakasi_cache_dir" で指定したディレクトリにファイル作成権限(707, 777 など)を与える必要があります。
Page Top

各機能の詳細説明 anchor.png[30] Edit [31]

Page Top
検索ワードを定数にセット anchor.png[32] Edit [33]

サイト内検索や検索エンジンの検索結果から移動してきた場合に、ユーザーの検索語を定数にセットします。

Page Top
検索ワードをハイライト表示 anchor.png[34] Edit [35]

ページ内の検索された語句をハイライト表示します。ちょうど、Google などのキャッシュ表示のような感じです。

Page Top
POST時プロキシチェックする anchor.png[36] Edit [37]

公開プロキシ経由のフォームからの投稿・登録処理を拒否します。

Page Top
機種依存文字フィルター anchor.png[38] Edit [39]

Windows の機種依存文字をチェックし、代替文字に置換します。

Page Top
POST SPAM フィルター anchor.png[40] Edit [41]

フォームから投稿・登録処理の送信内容をチェックしスパムと判定した場合、即刻 exit() します。(真っ白なページになります)

スパム判定の仕組みは、<a>タグ、BBコードリンク、URL などの個数をチェックし、設定されたポイントを加算していき、閾値を超えたものをスパムと判定します。

閾値は、ゲスト・登録ユーザーと分けて設定できます。

Page Top
禁止語句と禁止URLの設定 anchor.png[42] Edit [43]

禁止語句と禁止URLは予め主なものが、"trust/class/hyp_common/dat" ディレクトリの "spamwords.dat" と "spamsites.dat" にて設定されています。

これらに追加設定したい場合は、"trust/class/hyp_common/config" ディレクトリの "spamwords.conf.dat.rename" と "spamsites.conf.dat.rename" をそれぞれ "spamwords.conf.dat" と "spamsites.conf.dat" にリネームしてそれらのファイルに行単位で追記していきます。

"spamwords.conf.dat" の1行目は、そのファイルの文字エンコーディングをあらわしています。初期状態では、"@ UTF-8" になっていますので、UTF-8 にて保存してください。もし、EUC-JP で保存したいなら、一行目を "@ EUC-JP" とします。

Page Top
無効フィールドのBot罠を自動で仕掛ける anchor.png[44] Edit [45]

通常のブラウザには表示されないフィールドを「SPAMボット」用に仕掛けて、そのフィールドに値が入っている場合に特別のポイント加算をします。

Page Top
携帯対応レンダーを有効にする anchor.png[46] Edit [47]

携帯電話用に出力を再構成する「携帯対応レンダー」機能を有効にします。

設定等詳しくは、KtaiRender[4] をご覧ください。

nao-pon/blog/2008-06-17 [プリロードで携帯対応する [ 携帯対応レンダー ] ] - UsersWiki[48] に開発時の日記もあります。

Page Top

検索語マーカー用のCSSについて~ anchor.png[49] Edit [50]

CSS は XOOPS_ROOT_PATH[8]/xoops[7].css に追加するとよいでしょう。
※ background: url(/xoops[7]/images/ext.png) center right no-repeat;
 この部分の赤字の部分は適宜環境に応じて書き換えてください。

Everything is expanded.Everything is shortened.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
 
-
|
|
!
a.ext
{
    background: url(/xoops[7]/images/ext.png) center right no-repeat;
    padding-right: 12px;
}
 
strong.word0 {
    background-color:#FFFF66;
    color:black;
}
 
strong.word1 {
    background-color:#A0FFFF;
    color:black;
}
 
strong.word2 {
    background-color:#99FF99;
    color:black;
}
 
strong.word3 {
    background-color:#FF9999;
    color:black;
}
 
strong.word4 {
    background-color:#FF66FF;
    color:black;
}
 
strong.word5 {
    background-color:#880000;
    color:white;
}
 
strong.word6 {
    background-color:#00AA00;
    color:white;
}
 
strong.word7 {
    background-color:#886800;
    color:white;
}
 
strong.word8 {
    background-color:#004699;
    color:white;
}
 
strong.word9 {
    background-color:#990099;
    color:white;
}


Last-modified: 2010-12-23 (木) 11:27:03 (JST) (4866d) by nao-pon