<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://www.kowa.org/modules/pukiwiki/skin/rss.xml" ?>
<rdf:RDF 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
  xml:lang="ja">

 <channel rdf:about="http://www.kowa.org/modules/pukiwiki/328.html">
  <title>のぶのぶWiki-XOOPS</title>
  <link>http://www.kowa.org/modules/pukiwiki/328.html</link>
  <description>XOOPS関連メモ</description>
  <dc:date>2006-05-15T23:14:53+09:00</dc:date>
  <items>
   <rdf:Seq>
    <rdf:li rdf:resource="http://www.kowa.org/modules/pukiwiki/337.html" />
    <rdf:li rdf:resource="http://www.kowa.org/modules/pukiwiki/359.html" />
    <rdf:li rdf:resource="http://www.kowa.org/modules/pukiwiki/330.html" />
    <rdf:li rdf:resource="http://www.kowa.org/modules/pukiwiki/336.html" />
    <rdf:li rdf:resource="http://www.kowa.org/modules/pukiwiki/328.html" />
    <rdf:li rdf:resource="http://www.kowa.org/modules/pukiwiki/329.html" />
    <rdf:li rdf:resource="http://www.kowa.org/modules/pukiwiki/354.html" />
    <rdf:li rdf:resource="http://www.kowa.org/modules/pukiwiki/251.html" />

   </rdf:Seq>
  </items>
 </channel>

<item rdf:about="http://www.kowa.org/modules/pukiwiki/337.html">
 <title>開発メモ</title>
 <link>http://www.kowa.org/modules/pukiwiki/337.html</link>
 <dc:date>2006-05-15T20:59:25+09:00</dc:date>
 <description>XOOPS関連メモ-開発メモ xoops_version.php</description>
<content:encoded>
<![CDATA[
XOOPS関連メモ-開発メモ<br />
xoops_version.php
]]>
</content:encoded>
 <dc:identifier>http://www.kowa.org/modules/pukiwiki/337.html</dc:identifier>
<dc:creator>nobunobu, 通りすがりさん</dc:creator>
</item>

<item rdf:about="http://www.kowa.org/modules/pukiwiki/359.html">
 <title>Hack/SysUtilModule</title>
 <link>http://www.kowa.org/modules/pukiwiki/359.html</link>
 <dc:date>2006-04-03T20:18:32+09:00</dc:date>
 <description>［ja]タグが記述できる場所ならドコデモOKですよ。 -- nobunobu? 2006-04-03 (月) 20:18:32 New!&amp;#182;『国旗を押すと言語切り替えができるようにしたい』と言う質問に対しての、のぶのぶさんの返答で『［mlimg］というタグを記述すると表示されます』と言うのにさらに質問なのですが、<a href="?easiestml_lang=ja"><img src="http://www.kowa.org/images/japanese.gif" alt="flag" title="japanese" /></a><a href="?easiestml_lang=en"><img src="http://www.kowa.org/images/usa.gif" alt="flag" title="english" /></a>タグをどこへどの様に記述すれば良いのでしょうか？ -- 通りすがりさん 2006-04-03 (月) 18:50:04 New!&amp;#182;A°wce¨a¨￣C?a...</description>
<content:encoded>
<![CDATA[
AutoLogin &amp; Multi Language Module.<br />
2005/09/04 幾つかパス名の指定にTYPOがあったのを修正しました。<br />
2005/08/07 MultiLanguage部分にバグがあったので0.1aに入替ました。<br />
2005/08/06 XOOPS System Hack Utilities, Hackでなくてもここまでできますけど、まだまだ実験中！<br />
概要<br />
このモジュールは、一切のXOOPSコアファイルに対する修正無しで、GIJOE氏開発の以下のHACKと同等機能を提供するモジュールです。<br />
Auto Login Hack<br />
EMLH(Easiest Multi Language Hack)<br />
モジュール化するにあたって、幾つかの機能の互換性は無くなっていますが、基本的には上記のGIJOE氏開発による２つのHackと同等の機能を持っています。		元々のHackに比べると、コアを修正する手間が不用な分、若干性能的には、無駄な処理を行っていますが、ほとんど影響しないと思います。<br />
また、Multi Language対応部分に関しては、EMLHに対して、XOOPSの言語環境切替の機能が付加されています。但しこの機能を使用すると、ブロックキャッシュにも対応できるというEMLHの特徴の一つが失われてしまう事になります。<br />
ダウンロード<br />
xoops_mod_systuill_0.2.zip<br />
導入方法<br />
１．ファイルのコピー<br />
　　解凍したファイル群を、XOOPSのルートにコピーして下さい。		　　主なディレクトリ構成は以下のようになっています。		　　<br />
　　XOOPS_ROOT_PATH<br />
　　|<br />
　　+--language<br />
　　|   |<br />
　　|   +--multi_lang<br />
　　|<br />
　　+--modules<br />
　　    |<br />
　　    +--sysutil<br />
２．モジュールの導入<br />
　　sysutilモジュールを、インストールして下さい。<br />
３．モジュールの設定<br />
　　管理所メニューのsysutil-一般設定を開いて、各設定項目を設定して下さい。		　　この時、Multi Languageを使用しない場合でも、デフォルトの使用言語は適切に設定して下さい。		　　導入直後は、「english」に設定されていますが、日本語環境の場合には「japanese」に変更して下さい。<br />
４．AutoLogin機能を使用される方のみの設定<br />
　　標準の「ログイン」ブロックを非表示に変更し、替わりにsysutilモジュールの「ログイン」を表示するように変更して下さい。<br />
５．Multi Languageを使用される方のみの設定<br />
　　language/multi_lang/conf_ml.dist.phpというファイルを、language/multi_lang/conf_ml.phpという名前のファイルとしてコピーし、そのファイルの中身を修正して下さい。		　　標準のファイルでは、日本語、英語の切替を行う事が可能となっています。		　　［mlimg]タグにて表示される国旗イメージは、日米の国旗のみがmodules/sysutil/imagesディレクトリ下においてあります。<br />
６．Multi Languageを使用される方のみの設定<br />
　　必要に応じて、「言語切替」ブロックを表示するように設定して下さい。<br />
７．すべての方の最終設定<br />
　　ＸＯＯＰＳの「システム管理」-「一般設定」-「一般設定」画面にて、使用言語を「multi_lang」に変更して下さい。<br />
コメント<br />
大変便利です！インストールとても簡単でした！！ためしに使わせていただきます。 -- komshiz 2005-08-10 (水) 15:33:06<br />
オートログイン、大変便利で助かっております。つい最近気付いた部分を質問させてください。ログイン前に「パスワード紛失」のリンクをクリックすると、｛/modules/sysutil/index.php#lost｝のページが表示されるのですが、これまでのような「パスワードを紛失されましたか？」と言う、登録メールアドレスを入力してパスワードを再発行する表示がなくなってしまいました。この表示を元に戻すことはできるでしょうか？ -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-08-29 (月) 23:32:18<br />
素晴らしいです！ありがとうございます　　＞「パスワード紛失」modules/sysutil/index.php106行目のファイル名をsysutil_userform.htmlにしたらなおりました。これでいいのでしょうか＾＾；englishを選択すると文字コードが西ヨーロッパ言語になって、ひどく文字化けしてしまいます。どうしたらいいでしょうか。。。 -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-09-03 (土) 18:37:00<br />
元々autologinというモジュール名で開発していたので、その時のが残ってしまっていました。  -- nobunobu 2005-09-04 (日) 22:56:44<br />
英語に切り替えた時に残っている日本語部分の文字化けに対しては、小生は、language/english/global.phpの最後の方の、_CHARSETを'EUC-JP'にして、XOOPS_USE_MULTIBYTESを1に変えて運用しています。 -- nobunobu 2005-09-04 (日) 22:58:57<br />
すごいですね！ちなみに管理画面で左のモジュールアイコンにマウスがかさなったときに出るポップアップメニューが英語のまま日本語に戻らなくなってしまったのは僕だけでしょうか？ -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-09-16 (金) 03:19:35<br />
一般設定のサイト名とサイト副題を日本語だけに戻したら直りました、なんでだろう？ -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-09-16 (金) 12:22:11<br />
アイコンのメニューは、cacheディレクトリ下に、モジュールインストールや一般設定の変更時にその時の言語にて作成して書き込まれるため、現在の言語に連動しない仕組みになっています。 -- nobunobu 2005-09-22 (木) 00:10:55<br />
すいません、AutoLoginモジュールを導入したのですがそのときにゲストのアクセス権限を奪ってしまい、ログアウト後ログイン画面には入れなくなってしまいました。DBの復元も試して見たのですが効果無く困っています。自分の設定ミスなのですがどうにかしてログインする方法はないでしょうか。宜しくお願いします。 -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-10-28 (金) 23:50:34<br />
一時的に、langauag/multi_langというフォルダを、別名にリネームすれば、英語モードでの通常モードに戻ります。この状態でuser.phpを開けばログインできます。で管理メニューでゲストのアクセス権をつけて下さい。 -- nobunobu 2005-10-29 (土) 11:07:37<br />
アクセス権を奪いログインできなくなった者です。コメントしていただいたとおりにし、おかげさまでログインすることができました。のぶのぶさん、ありがとうございます。 -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-10-30 (日) 15:47:22<br />
失礼します。バージョン2.013以降にインストールしたのですがlogin画面を変更しても出力されません。なぜでしょう? -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-11-10 (木) 11:44:46<br />
はじめまして。今日インストールしてみました。素晴らしいモジュールでびっくりです。『language/multi_lang/conf_ml.dist.phpというファイルを、language/multi_lang/conf_ml.phpという名前のファイルとしてコピーし、そのファイルの中身を修正して下さい。 』、というのはなにをどう変更すればよいのでしょう？チョット初心者です。よければ詳しく教えてください。 -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-11-13 (日) 22:54:36<br />
Multi Languageで日英以外の切替を行われたい方などは、変更が必要になります。例えばフランス語を書きたい場合には［fr］等のタグを別途定義して、国旗のイメージを用意して、XOOPSのfrancｈというLanguage定義と結びつける必要が出てくるので、当ファイル内の、SYSUTIL_ML_LANGS・SYSUTIL_ML_LANGIMAGES・SYSUTIL_ML_LANGNAMESを定義する必要があるということです。 -- nobunobu 2005-11-13 (日) 23:11:41<br />
のぶのぶさん、ありがとうございます！　さらに質問ですが、このページにあるように、国旗を押すと言語切り替えができるようにしたいのですが、それは何か特別な処理をしないといけませんか??　よろしくお願いします。 -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-11-14 (月) 09:32:17<br />
［mlimg］というタグを記述すると、<a href="?easiestml_lang=ja"><img src="http://www.kowa.org/images/japanese.gif" alt="flag" title="japanese" /></a><a href="?easiestml_lang=en"><img src="http://www.kowa.org/images/usa.gif" alt="flag" title="english" /></a>の様に表示されます。(&quot;［&quot;は実際には半角です) -- nobunobu 2005-11-14 (月) 11:22:42<br />
大変便利なモジュールをありがとうございます．言語選択の機能を活用させて頂いております．Language SelectionでJとEを大文字にしたくて，conf_ml-dist.php内のリソースを変更すると，例えばEnglishを選択したもメニューは日本語のままになります．自分でカスタムブロック内で&gt;user/通りすがりさん]] 2005-12-10 (土) 17:37:05<br />
marcanさんのMultilanguageが使えなくなって、非常に困っていたのですが、のぶのぶさんのお陰で言語切り替えを復活させることができました！ありがとうございました！！！ -- minorin 2006-01-18 (水) 01:27:43<br />
IIS 5.1だとインストール時にmainfile.phpの書き込みに失敗するようです・・・。 -- 通りすがりさん 2006-01-20 (金) 18:20:53<br />
mainfile.phpの書込など当モジュールでは行っていませんけど？？？？？ -- nobunobu 2006-01-22 (日) 16:05:11<br />
SysUtilModuleを利用している状態でメンテナンスモードにしたら、管理者がログインできなくなってしまいました。phpMyAdminでメンテナンスモードを解除してログインして回避しました。取り急ぎ、ご報告いたします。 -- uhouho 2006-01-31 (Tue) 12:08:09<br />
とても便利なモジュールに感謝！早速使わせていただいて思ったのですがXOOPSモジュールと連動（ブロックキャッシュがなにかわかりませんが、今とこ（問題なし？かな）を設定してつかってるのですが、英語を選んだ際にISO-8859でエンコードされ、その際に日本語がもじばけしてしまいます。英語を選んだ状態で更にEUC-jpにエンコードかけると日本語も英語もきちんとひょうじされるので、これをどこかのせっていでできないかとおもっています。英語を選んだ時のエンコードはEUC-ｊｐって。良い方法はないでしょうか? -- bubble 2006-02-01 (水) 19:55:19<br />
あれ？ところでどうしてのぶのぶさんのサイトでは英語せんたくしても日本語が文字化けしないんですか?私なにかまちがって設定しちゃってるんでしょうか。 -- bubble 2006-02-01 (Wed) 20:44:45<br />
これは、languages/english/global.phpの下の方にある、define('_CHARSET', 'ISO-8859-1'); というのを、define('_CHARSET', 'EUC-JP');に変更して使っています。 -- nobunobu 2006-02-01 (水) 20:57:14<br />
あああああ〜、おおおおお〜！できました！！とても感謝感激です。ありがとうございます。本当に助かりました。   -- bubble 2006-02-01 (Wed) 21:23:11<br />
導入方法の7番目の設定をすると，ページが真っ白になって表示されなくなったり，ページの読み込みが最後まで終了しなかったりと不安定になってしまいます．また，言語選択ブロックを表示させたら「SYSUTIL_ML_LANGNAMES」と表示され「japanese」や「english」の選択肢が表示されません．どのように対処すればよろしいでしょうか． -- 通りすがりさん 2006-03-01 (水) 11:21:08<br />
いつもMulti Languageを使用させてもらっています。デフォルトの表示をEnglishモードにしたいのですが、何処をいじればよろしいでしょうか？　また、ブラウザの属性を調べて、日本語バージョン以外を英語表示にする方法があれば、こちらもよろしくお願いします。 -- 通りすがりさん 2006-03-02 (木) 16:01:01<br />
 /languages/multi_lang/conf_ml.dist.php を同フォルダー内に conf_ml.phpという名前でコピーして、&nbsp;&nbsp;define ('SYSUTIL_ML_DEFAULT_LANGUNAME','japanese');って部分を&nbsp;&nbsp;define ('SYSUTIL_ML_DEFAULT_LANGUNAME','english');に変更すれば、デフォルトは変えれます。自動切り替えについては、$_SERVER['HTTP_ACCEPT_LANGUAGE']を見ればブラウザが表示できる言語判定できるので、この先頭2文字がjaで無ければってな判定を行えば良いはずですけど・・・・&nbsp;&nbsp;if (preg_match(&quot;/^ja/&quot;,$_SERVER['HTTP_ACCEPT_LANGUAGE'])) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;define ('SYSUTIL_ML_DEFAULT_LANGUNAME','japanese');&nbsp;&nbsp;} else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;define ('SYSUTIL_ML_DEFAULT_LANGUNAME','english');&nbsp;&nbsp;}なんて形で出来るかもしれません。試してないので、確かではありませんけど・・・・ -- nobunobu 2006-03-02 (木) 17:27:57<br />
&gt;ページが真っ白になって表示されなくなったり，ページの読み込みが最後まで終了しなかったりconf_ml.phpの編集段階でなにか間違われた様に感じますが・・・もしよければ、本ページ下方の、XOOPSのコメント投稿機能か、ＢＢＳのゲストブックにでも、現在のconf_ml.phpの内容を教えて頂けますか？ -- nobunobu 2006-03-02 (木) 17:44:47<br />
現在のconf_ml.phpの内容ですが，デフォルトのconf_ml.dist.phpをコピーしただけで変更はしていません．日英以外の言語を追加しない場合は，特に編集する必要はないのですよね?? -- 通りすがりさん 2006-03-02 (木) 19:33:11<br />
※追記です．使用言語をmulti_langに設定した直後に表示される「データベースを更新しました」というリダイレクトページの下部に　Notice [PHP]: Constant _mi_system_name already defined in file modules/system/language/english/modinfo.php line 6　Notice [PHP]: Constant _mi_bwiki_recent already defined in file modules/bwiki/language/english/modinfo.php line 7　Notice [PHP]: Constant _mi_xhnewbb_name already defined in file modules/xhnewbb/language/english/modinfo.php line 6などのNoticeメッセージが全部で400行以上出力されてしまいます．また，multi_langに設定している状態だと多くのページの下部に　Notice [PHP]: Constant sid already defined in file include/common.php line 192と表示されます．他のモジュールとの相性とかいう問題なのでしょうか...? -- 通りすがりさん 2006-03-02 (木) 19:35:19<br />
sysutilを使わせていただいています。このモジュールを使用しているときに、メンテナンスモードにするにはどうしたらいいのでしょうか？一度メンテナンスモードにしたら、管理者でログインできなくなりえらいことでした。sysutilを非アクティブにしログインブロックを標準に切り替えてもうまくいきません。この時は、データベースを直接phpMyAdminで操作し事なきを得ましたが、何かするとログインできなくなってしますのが困りものです。安全で手軽な手順がありましたらご教授ください。 -- Guest 2006-03-03 (Fri) 01:07:30<br />
一般設定の言語を「日本語」にするか、languages/ml_langのディレクトリ名を変更する（この場合には英語になりますが）のが、一番手っ取り早いですよ。 -- nobunobu 2006-03-03 (金) 07:19:08<br />
早々のリプライありがとうございます。で、define ('SYSUTIL_ML_DEFAULT_LANGUNAME','english');を設定し、ブラウザを再起動してみたのですが、期待していた英語のトップページは表示されず日本語のままです。手動で変更すると英語で表示されるのですが、この現象は正しいのでしょうか？ -- 通りすがりさん 2006-03-03 (金) 11:15:38<br />
一旦選択された言語設定は、クッキーに記憶されるので、同一ＰＣのブラウザからではクッキーを消さない限りは確認できません。 -- nobunobu 2006-03-03 (金) 11:31:20<br />
度々のリプライありがとうございます。クッキー情報を削除しただけでは、日本語が表示されません゛した。そこで、sysutilの一般設定のデフォルトの言語設定をenglish に設定すると、英語が表示されました。この場合、define ('SYSUTIL_ML_DEFAULT_LANGUNAME','japanese');のままでも、英語表示が可能でした。ただし、define ('SYSUTIL_ML_DEFAULT_LANGUNAME','japanese');が有効でなければ、2番目の目的（ブラウザ属性による判別）は無理な気がしますが・・・ -- 通りすがりさん 2006-03-03 (金) 13:44:23<br />
メンテナンスモードに関して質問させていただいたものです。一般設定を「japanese」にする方法でできました。ありがとうございました。 -- 通りすがりさん 2006-03-03 (金) 23:05:43<br />
『国旗を押すと言語切り替えができるようにしたい』と言う質問に対しての、のぶのぶさんの返答で『［mlimg］というタグを記述すると表示されます』と言うのにさらに質問なのですが、<a href="?easiestml_lang=ja"><img src="http://www.kowa.org/images/japanese.gif" alt="flag" title="japanese" /></a><a href="?easiestml_lang=en"><img src="http://www.kowa.org/images/usa.gif" alt="flag" title="english" /></a>タグをどこへどの様に記述すれば良いのでしょうか？ -- 通りすがりさん 2006-04-03 (月) 18:50:04<br />
［ja]タグが記述できる場所ならドコデモOKですよ。 -- nobunobu 2006-04-03 (月) 20:18:32<br />
お名前:
]]>
</content:encoded>
 <dc:identifier>http://www.kowa.org/modules/pukiwiki/359.html</dc:identifier>
<dc:creator>nobunobu</dc:creator>
</item>

<item rdf:about="http://www.kowa.org/modules/pukiwiki/330.html">
 <title>Hack/MultiMenuの機能追加</title>
 <link>http://www.kowa.org/modules/pukiwiki/330.html</link>
 <dc:date>2005-12-22T20:38:28+09:00</dc:date>
 <description>のぶのぶさん、こんばんは、教えていただきありがとうございます。/modules/blocksadmin/admin/menu.phpの16行目のところで+を付けたら、うぇぶろぐ投稿できるようになりました。ありがとうございます。 -- [[[ja_通りすがりさん[/ja_[en_Guest[/en_user/[ja_通りすがりさん[/ja_[en_Guest[/en_]] 2005-12-22 (木) 20:38:28 New!&amp;#182;#ref(XOOPS2_mod_multimenu_1.1...</description>
<content:encoded>
<![CDATA[
MultiMenuモジュールの機能追加<br />
このHackに関しては、日本語版本家のMalaika Systemで早速取り込んで頂けました。MultiMenu 1.14-05日本語版を参照下さい。		XOOPSでメニューのレイアウトをカストマイズする場合に、MultiMenuを使用する事によって、かなり自由度のあるメニューが構築出来ます。		今回は、これに対してさらにモジュールのサブメニューを追加する場合にxoops_version.php等をHackすることなく追加出来るようにMultiMenuモジュール1.14-4に対して修正を行いました。<br />
機能追加概要<br />
MultiMenu管理画面における、リンクの記述方法に、以下の方法を追加しました。<br />
1. カスタムサブメニューとして表示<br />
-[module_name]<br />
-[module_name]xxxx.php?xxxx=xxxx<br />
-http://www.hogehoge.co.jp/xoops/index.php<br />
マイナス記号で始まるリンクを持つメニューは、マイナス記号で始まらないリンクを持つメニューのサブメニューに追加されます。		親メニューの属性によってサブメニューの表示のされ方は以下の例のように変わりますが、モジュール本来のサブメニューと同時に表示される場合は、モジュールのサブメニューの一番下にカスタムサブメニューが追加されます%%<br />
例<br />
リンク<br />
タイトル<br />
　[news]<br />
ニュース<br />
　-[news]article.php?storyid=2?storyid=2<br />
大事なニュース<br />
表示 :　（常時表示しています）<br />
ニュース<br />
&nbsp;<br />
大事なニュース<br />
例<br />
リンク<br />
タイトル<br />
　+[news]<br />
ニュース<br />
　-[news]article.php?storyid=2?storyid=2<br />
大事なニュース<br />
表示 :　（常時表示しています）<br />
ニュース<br />
&nbsp;<br />
ニュース投稿<br />
&nbsp;<br />
アーカイブ<br />
&nbsp;<br />
大事なニュース<br />
例<br />
リンク<br />
タイトル<br />
　&amp;[news]<br />
ニュース<br />
　-[news]article.php?storyid=2?storyid=2<br />
大事なニュース<br />
表示 :　（通常）<br />
ニュース<br />
表示  :　（該当するモジュールを表示してる時）<br />
ニュース<br />
&nbsp;<br />
ニュース投稿<br />
&nbsp;<br />
アーカイブ<br />
&nbsp;<br />
大事なニュース<br />
2. 該当するモジュールを表示してる時だけ、カスタムサブメニューを表示する<br />
（モジュール本来のサブメニューは表示しない）<br />
&amp;[module_name]<br />
&amp;[module_name]xxxx.php?xxxx=xxxx<br />
＆記号で始まりXOOPSモジュールを指定するリンクを持つメニューは、以下に続くマイナス記号で始まるリンクを持つカスタムサブメニューの親メニューとなります。但し、カスタムサブメニューが表示されるのは該当するモジュールを表示しているときだけで、この時モジュール本来のサブメニューは表示されません。<br />
例<br />
リンク<br />
タイトル<br />
　&amp;[news]<br />
ニュース<br />
　-[news]article.php?storyid=2?storyid=2<br />
大事なニュース<br />
表示 :　（通常）<br />
ニュース<br />
表示  :　（該当するモジュールを表示してる時）<br />
ニュース<br />
&nbsp;<br />
大事なニュース<br />
ダウンロードと導入<br />
1.元ファイルのバックアップ<br />
modules/multimenu/blocks/multimenu.php<br />
2.ファイルのダウンロードと解凍<br />
#ref(XOOPS2_mod_multimenu_1.14-04_nobunobu_hack.0.2.ZIP)		上記のファイルをダウンロードし解凍した後に、multimenuモジュールのファイルを上書きします。		MultiMenu 1.14-05日本語版を参照下さい。<br />
変更履歴<br />
2004/10/24 16:00 本家でMultiMenu 1.14-05日本語版としてリリースされました。<br />
2004/10/23 22:20 一部不具合につきリリース0.2に差し替え<br />
2004/10/23 22:00 初期リリース%%<br />
コメント<br />
のぶのぶさん、こんばんは、xoopsのトラブルシューティングからここにきました。うぇブログの記事投稿リンクの出現させ方がわかりません。ここの記事を読めばきっとわかる、とのことですがまだわからないでいます。もしよろしければ、詳しい解説をしていただけないでしょうか？ニッキーhttp://manekinecoin.com/modules/webl&#173;og/weblog-tb.php/1 -- [[通りすがりさん&gt;user/通りすがりさん]] 2005-12-19 (月) 23:08:17<br />
multimenuのlink定義で[weblog]という様に定義されている部分を、+[weblog]という風に、+記号を先頭に付ければ、モジュールが用意しているサブメニューが表示されると思います。 -- nobunobu 2005-12-19 (月) 23:51:39<br />
のぶのぶさん、こんばんは、教えていただきありがとうございます。/modules/blocksadmin/admin/menu.phpの16行目のところで+を付けたら、うぇぶろぐ投稿できるようになりました。ありがとうございます。 -- [[[ja_通りすがりさん[/ja_[en_Guest[/en_&gt;user/[ja_通りすがりさん[/ja_[en_Guest[/en_]] 2005-12-22 (木) 20:38:28<br />
お名前:
]]>
</content:encoded>
 <dc:identifier>http://www.kowa.org/modules/pukiwiki/330.html</dc:identifier>
<dc:creator>nobunobu</dc:creator>
</item>

<item rdf:about="http://www.kowa.org/modules/pukiwiki/336.html">
 <title>Hack</title>
 <link>http://www.kowa.org/modules/pukiwiki/336.html</link>
 <dc:date>2005-12-19T23:57:12+09:00</dc:date>
 <description>XOOPS関連メモ-Hack テンプレートの読込方法の改善？？XOOPSのテンプレートの読込方法の改善？？...導入方法...1.元ファイルのバックアップ...2.ファイルのダウンロードと解凍...変更履歴...コメント...EMLH拡張ご注意...The Easiest Multi-Language Hack (EMLH) の拡張...現在判明しているEMLHの不具合とその対処...PukiWikiModとの相性...1.easiestml_langパラメータの扱い...2.静的URLモードで...</description>
<content:encoded>
<![CDATA[
XOOPS関連メモ-Hack<br />
テンプレートの読込方法の改善？？XOOPSのテンプレートの読込方法の改善？？...<br />
導入方法...<br />
1.元ファイルのバックアップ...<br />
2.ファイルのダウンロードと解凍...<br />
変更履歴...<br />
コメント...<br />
EMLH拡張ご注意...<br />
The Easiest Multi-Language Hack (EMLH) の拡張...<br />
現在判明しているEMLHの不具合とその対処...<br />
PukiWikiModとの相性...<br />
1.easiestml_langパラメータの扱い...<br />
2.静的URLモードでのeasiestml_langパラメータの受け渡し...<br />
4.&lt;head&gt;内のヘッダのdescriptionメタタグの扱い...<br />
5.PukiWikiModブロックのキャッシング...<br />
The Easiest Multi-Language Hack (EMLH) Enhancement...<br />
Download...<br />
Install...<br />
MultiMenuの機能追加MultiMenuモジュールの機能追加...<br />
機能追加概要...<br />
1. カスタムサブメニューとして表示...<br />
2. 該当するモジュールを表示してる時だけ、カスタムサブメニューを表示する...<br />
ダウンロードと導入...<br />
1.元ファイルのバックアップ...<br />
2.ファイルのダウンロードと解凍...<br />
変更履歴...<br />
コメント...<br />
SysUtilModuleAutoLogin &amp; Multi Language Module....<br />
概要...<br />
ダウンロード...<br />
導入方法...<br />
１．ファイルのコピー...<br />
２．モジュールの導入...<br />
３．モジュールの設定...<br />
４．AutoLogin機能を使用される方のみの設定...<br />
５．Multi Languageを使用される方のみの設定...<br />
６．Multi Languageを使用される方のみの設定...<br />
７．すべての方の最終設定...<br />
コメント...
]]>
</content:encoded>
 <dc:identifier>http://www.kowa.org/modules/pukiwiki/336.html</dc:identifier>
<dc:creator>nobunobu</dc:creator>
</item>

<item rdf:about="http://www.kowa.org/modules/pukiwiki/328.html">
 <title>XOOPS</title>
 <link>http://www.kowa.org/modules/pukiwiki/328.html</link>
 <dc:date>2005-10-02T09:28:48+09:00</dc:date>
 <description>XOOPS関連メモ Hack テンプレートの読込方法の改善？？EMLH拡張MultiMenuの機能追加SysUtilModule開発メモ xoops_version.php</description>
<content:encoded>
<![CDATA[
XOOPS関連メモ<br />
Hack<br />
テンプレートの読込方法の改善？？<br />
EMLH拡張<br />
MultiMenuの機能追加<br />
SysUtilModule<br />
開発メモ<br />
xoops_version.php
]]>
</content:encoded>
 <dc:identifier>http://www.kowa.org/modules/pukiwiki/328.html</dc:identifier>
<dc:creator>nobunobu</dc:creator>
</item>

<item rdf:about="http://www.kowa.org/modules/pukiwiki/329.html">
 <title>Hack/テンプレートの読込方法の改善？？</title>
 <link>http://www.kowa.org/modules/pukiwiki/329.html</link>
 <dc:date>2005-07-13T22:35:54+09:00</dc:date>
 <description>xoops_template_hack-0.3.zip2005/07/13 22:34 XOOPS 2.0.10JPに対応した最新版の0.3をリリース致しました。...XOOPSのテンプレートの読込方法の改善？？ XOOPSの見た目のカストマイズの第一段階はテーマをカストマイズという事になりますが、それ以上進んだカストマイズを行おうとするとXOOPSモジュールのテンプレートの修正作業が必要となってきます。		テンプレートの修正には、管理者メニューにてdefaultテンプレートの複製を行った後に、...</description>
<content:encoded>
<![CDATA[
XOOPSのテンプレートの読込方法の改善？？<br />
XOOPSの見た目のカストマイズの第一段階はテーマをカストマイズという事になりますが、それ以上進んだカストマイズを行おうとするとXOOPSモジュールのテンプレートの修正作業が必要となってきます。		テンプレートの修正には、管理者メニューにてdefaultテンプレートの複製を行った後に、それぞれのテンプレートを編集する事になります。		ところが、ここで落とし穴があります。		テーマをdefaultにした状態で、モジュールのアップデート作業などでテンプレートファイルが更新されると、その段階でカストマイズの為に編集した内容がすべてファイルの内容に更新されてしまうのです。（タイムスタンプ比較がされているので、編集日付がファイルの日付よりも新しいものは、そのまま残りますが）		これには前提があって、一般設定で、「themes/ ディレクトリからの自動アップデートを有効にする」がONになっている場合にのみこの更新が行われてしまうわけなんですけど、サイト構築時には試行錯誤を行うため、通常この設定をONにする場合が多いと思います。<br />
サイトのカストマイズを行う以上テーマがdefaultのままっていうのは、あまり考えがたいかもしれませんけど、小生のようにモジュール開発を行っている場合には標準の状態でどう見えるかなどというチェックも気が向けば  行っているため、この仕様はかなり致命的です。<br />
このあたりの事は、Ryujiさんのサイトにて知ったのですけど、これはかなり衝撃的でした。<br />
さらに、困った事にはあまり知られていないかもしれませんけどXOOPSではテーマディレクトリにテンプレートファイルを置く事が出来ます。		具体的には、テーマディレクトリの下にtemplates/モジュール名というディレクトリを作成して、このディレクトリにmodules/モジュール名/templates下のファイルをコピーしてカストマイズしてやればその内容を反映するというものです。		これは、見た目はかなりテーマ毎のカストマイズに有効な手段だと思ったのですけど、これにも落とし穴が・・・<br />
これも、実際は現在のテンプレートセットの内容を置き換えるという方法をとっており、それに更新日付チェックがからんでいるものですから、きっと思った通りの反映にはなってくれません。テーマの切替を自由にしてさらにテンプレートも連動して切り替わるってな具合にはならないようです。<br />
そこで、このテンプレートの読込方法を少し変えてやる事にしました。		小生の把握している範囲で現在のテンプレートファイルの読込ロジックは、<br />
テンプレートのコンパイルキャッシュと、テンプレートソースとのタイムスタンプを比較し、テンプレートのコンパイルキャッシュが最新であればキャッシュ内容を元に表示する。<br />
キャッシュが最新でないときテンプレートソースの読込<br />
「themes/ ディレクトリからの自動アップデートを有効にする」がoffであれば、常に現在のテンプレートセットに属するテンプレートソースをＤＢから読み込む<br />
「themes/ ディレクトリからの自動アップデートを有効にする」がonの場合<br />
テーマがdefault以外ならテーマ名/templates/モジュール名下に該当テンプレートソースが存在し、現在のテンプレートセットに属するＤＢ上のテンプレートソースの更新日付より新しければＤＢの内容を更新して読み込む<br />
テーマがdefaultの場合は、modules/モジュール名/templates/下に該当テンプレートソースが存在し、現在のテンプレートセットに属するＤＢ上のテンプレートソースの更新日付より新しければＤＢの内容を更新して読み込む<br />
上記以外の場合は、現在のテンプレートセットに属するテンプレートソースをＤＢから読み込む<br />
ってな形になっていますが、小生のHackでは、<br />
テンプレートのコンパイルキャッシュと、テンプレートソースとのタイムスタンプを比較し、テンプレートのコンパイルキャッシュが最新であればキャッシュ内容を元に表示する。<br />
キャッシュが最新でないときテンプレートソースの読込<br />
「themes/ ディレクトリからの自動アップデートを有効にする」がoff、または現在のテンプレートセットがdefault以外であれば、常に現在のテンプレートセットに属するテンプレートソースをＤＢから読み込む<br />
「themes/ ディレクトリからの自動アップデートを有効にする」がonかつ現在のテンプレートセットがdefaultの場合<br />
テーマがdefault以外でテーマ名/templates/モジュール名下に該当テンプレートソースが存在する場合はそのファイルを読み込む(ＤＢは更新しない）<br />
上記条件に該当しないときは、modules/モジュール名/templates/下に該当テンプレートソースが存在するばあいは、そのファイルを読み込む、さらに現在のテンプレートセットに属するＤＢ上のテンプレートソースの更新日付より新しければＤＢの内容を更新する<br />
上記以外の場合はエラー<br />
としています。		さらに、テンプレートのコンパイルキャッシュをテーマ別に管理出来るようにし、キャッシュの最新チェックが正常に動作する様にし、さらにはモジュール間で同じ名前のテンプレートファイル名を持っている場合に適切なモジュールのテンプレートを参照出来るように変更しています。		この変更によって複製可能なモジュールを開発するときの柔軟性が少し増えると思います。<br />
このHackを適用した環境では、Templateのカストマイズを行うにあたっては、以下の２つのカストマイズ方針のうちのいずれかを選ぶ事になります。<br />
XOOPSのテンプレートセットを定義して、XOOPSの管理画面で編集する事を前提とする。<br />
新たなテンプレートセットを定義せずに、ファイルベースでテンプレート編集を行う。<br />
１番目の方法では、モジュールディレクトリ中のテンプレートファイルが更新されたとしても新たに定義したテンプレートセットの方にはまったく影響を与えないようになります。		但し、この場合は全てのテーマで一つのテンプレートを共有する事となります。<br />
反対に、２番目の方法では基本的には、ＤＢを参照せずにモジュールディレクトリもしくはテーマディレクトリ下のテンプレートファイルを直接参照し、最低限の互換性維持の為に現行テンプレートセットがdefaultの場合にのみＤＢ上のテンプレートを更新するようになります。		この方法をとると、テーマ毎のテンプレートカストマイズなどデザインの幅がかなり増える事となります。<br />
文章で書くと非常にややこしくなりますが、おそらくこの方が直感的でカストマイズのしやすい環境が構築出来ると考えています。<br />
導入方法<br />
1.元ファイルのバックアップ<br />
header.php<br />
footer.php<br />
class/template.php<br />
class/smarty/plugins/resource.db.php<br />
2.ファイルのダウンロードと解凍<br />
xoops_template_hack-0.3.zip<br />
上記のファイルをダウンロードし解凍した後に、htmlディレクトリ下をXOOPSのファイルに上書きします。<br />
変更履歴<br />
2005/07/13 22:34 XOOPS 2.0.10JPに対応した最新版の0.3をリリース致しました。<br />
2005/04/20 22:13 4月25日発売予定のGIJOE &amp; matchan著「Customizing XOOPS」に当Hackをご紹介頂いたのを機会に、最新版の0.2aをリリース致しました。<br />
2004/10/16 22:20 モジュールテンプレートが、templatesディレクトリのサブディレクトリに存在する場合に正常に動作しないバグが発見されましたので、0.1fをリリース致しました。<br />
2004/10/16 10:45 template.phpに修正ミスが発見されましたので、0.1eをリリース致しました。<br />
2004/10/15 22:55 default以外のテンプレートセットを使用している場合、そのテンプレートセットにテンプレートが含まれていないときにdefaultテンプレートセットを見に行く部分がうまく動作しておりませんでした。修正を行い0.1dをリリース致しました。このリリースより、class/template.phpも置き換えの対象に追加されましたので、元ファイルのバックアップをお願い致します(Thanks gondayu!)<br />
2004/10/15 20:20 footer.phpにTYPEが発見されましたので修正し、0.1cをリリースしました。(Thanks domifara!)<br />
2004/10/14 16:00 テンプレート参照元のモジュールを特定出来ないときにエラーになってしまう不具合を修正した0.1bをリリースしました。<br />
2004/10/14 10:00 2004/10/14 深夜の初期リリース分はMulti Language Hackが適用されたファイルに対してHackしておりましたので、XOOPS2.0.7.3のファイルに対するHackに差し替えました<br />
コメント<br />
テーマ/テンプレート開発に大変重宝しております。最新版を提供下さりどうもありがとうございます！   -- konny 2005-06-01 (Wed) 10:16:23<br />
お名前:
]]>
</content:encoded>
 <dc:identifier>http://www.kowa.org/modules/pukiwiki/329.html</dc:identifier>
<dc:creator>nobunobu</dc:creator>
</item>

<item rdf:about="http://www.kowa.org/modules/pukiwiki/354.html">
 <title>Hack/EMLH拡張</title>
 <link>http://www.kowa.org/modules/pukiwiki/354.html</link>
 <dc:date>2005-04-24T23:11:21+09:00</dc:date>
 <description>ご注意 この記事の内容は、古いXOOPSのバージョンをベースとしており、		現在は保証の限りではありません。		現在、多言語化においては、別途AutoLogin  Multi Language Module用のSysUiltモジュールをご用意しております...ご注意 この記事の内容は、古いXOOPSのバージョンをベースとしており、		現在は保証の限りではありません。		現在、多言語化においては、別途AutoLogin  Multi Language Module用のSysUiltモジュールをご用...</description>
<content:encoded>
<![CDATA[
ご注意<br />
この記事の内容は、古いXOOPSのバージョンをベースとしており、		現在は保証の限りではありません。		現在、多言語化においては、別途AutoLogin &amp; Multi Language Module用のSysUiltモジュールをご用意しております<br />
		
The Easiest Multi-Language Hack (EMLH) の拡張<br />
XOOPSの多言語対応Hackは幾つかあるが、GIJOEさんのお手軽多言語ハックは、ほんとにお手軽で、Marcan版のHackのようにXOOPSのモジュールにまで修正を行わなくとも良いので、とても便利なHackです。		ただそのままだとコンテンツだけが多言語の対象で、Marcan版のようにメインメニューやXOOPSのLanguageファイルの内容は反映され無いため、少々多言語対応としては物足りなさを感じる事もあります。		そこで、Marcan版の一部を転用してLanguageファイル切替にもとりあえず対応できるようにしてみました。		GIJOE版のEMLHをセットアップ後、添付のcommon.php を include/common.phpと入れ替えるだけでＯＫなはずです。		但し、easiestml.php内の<br />
// list the language names separated with comma<br />
define('EASIESTML_LANGNAMES','english,japanese');<br />
の部分が、きっちりとXOOPSのLanguageと対応するように定義されている必要があります。<br />
添付のcommon.phpは、XOOPS2.0.9.3にGIJOE版AutoLogin Hack適用後のものを修正しています。<br />
2005/04/07 : 一部PukiWikiとの相性確保部分を修正し、common.phpを入れ替えました。<br />
現在判明しているEMLHの不具合とその対処<br />
PukiWikiModとの相性<br />
小生が多用しているPukiWikiModでは、幾つかの点でEMLHとの共存で問題がある。<br />
1.easiestml_langパラメータの扱い<br />
PukiWikiModは、PukiWikiの「?ページ名」というパラメータに対応するために、$_GETパラメータでなく、$_SERVER['QUERY_STRING']を解釈する。EMLHのeasiestml_langパラメータが付加された時点で、このパラメータをページ名と誤解してしまうため、うまく動作しない。これについては上記common.phpのHackにて受け取ったeasiestml_langを$_SERVER['QUERY_STRING']から消し去る事でPukiWikiをだませるように対応済みである。<br />
2.静的URLモードでのeasiestml_langパラメータの受け渡し<br />
PukiWikiModで静的URLモードを使用する場合に、.htaccessでのRewrite定義が、他のパラメータを受けわたすように出来ていないので、/modules/pukiwiki/123.html?easiestml_lang=xlang:jaなどというURLをうまく処理できない。		これについては、.htaccessの定義を以下に変更する事によってうまくいきそうだ。<br />
# 静的ページ風URLオプションを使用する場合は<br />
# 以下を環境に応じて修正後 # を削除して有効にしてください。<br />
RewriteEngine	on<br />
RewriteRule ^([0-9]*)\.html(#[^\?]*)?(\?(.*))?$ /modules/pukiwiki/index.php?pgid=$1&amp;$4$2  [QSA]<br />
4.&lt;head&gt;内のヘッダのdescriptionメタタグの扱い<br />
PukiWikiModでは、コンテンツの内容をstrip_tagsしたものの部分文字列をdescriptionメタタグにセットしているが、この部分に［mlimg］や［xlang:ja］などがそのままわたされ、EMLH側で処理を行うようになってしまう。		この場合、［mlimg］の処理では予期せぬHTMLタグが挿入されるし、［xlang:ja］・・・［/xlang:ja］の部分も、部分文字列を抽出されてタグが対応しない状態でdescriptionメタタグにセットされる場合もあり、予期せぬ動作をしてしまう。		［mlimg］に関しては、同等の機能を持つインラインプラグインmlimg.inc.phpを用意する事で回避できるが、タグの不整合に関しては、/modules/pukiwiki/pukiwiki.php内の修正が必要となる。		とりあえず現在は、<br />
// desciption<br />
$xoopsTpl-&gt;assign("xoops_meta_description",mb_strcut(preg_replace("/\s+/","",strip_tags($body)),0,200));<br />
という部分を<br />
// desciption<br />
$t_body=$body;<br />
if (defined('EASIESTML_LANGS')) {<br />
   $lang_tags=explode(',',EASIESTML_LANGS);<br />
   foreach($lang_tags as $lang_tag) {<br />
      $t_body= preg_replace('/\[\/?'.preg_quote($lang_tag).'\]/','',$t_body);<br />
   }<br />
}<br />
$xoopsTpl-&gt;assign("xoops_meta_description",mb_strcut(preg_replace("/\s+/","",strip_tags($t_body)),0,200));<br />
に修正しを行った。<br />
5.PukiWikiModブロックのキャッシング<br />
PukiWikiModでは、ページをXOOPSブロックとして利用できるが、この部分ではサーバー側で別途対象ページを特別なパラメータ付きでHTTPリクエストを行い取得した内容をキャッシュファイルに格納して表示するようになっている。		このページリクエスト時に、現在はサーバ側では表示言語を意識していないためデフォルトの言語しかブロックには表示できない。		そこで、ブロック表示部分を修正して現在の表示言語によってサーバ側でのブロックページリクエスト時にも言語指定を行うようにして、さらに言語毎にキャッシュを持つようにした。		さらに、上記のmlimgプラグインも、XOOPSブロック表示時にきちんと現在表示しているページのURLを再現できるために、ブロック表示時にプラグイン内の特別なcallbackを呼び出せるようなプラグイン拡張呼出機能を追加した。		上記のmlimgプラグインを使用してブロック表示する場合、本pukiwiki_page.phpに入れ替える必要があります		修正後の、/modules/pukiwiki/blocks/pukiwiki_page.phpは、<br />
&lt;?php<br />
// $Id: pukiwiki_page.php,v 1.12 2005/02/23 00:16:41 nao-pon Exp $<br />
function b_pukiwiki_page_show($options)<br />
{<br />
	global $xoopsConfig;<br />
	$show_page = ($options[0])? $options[0] : "";<br />
	$cache_time = (empty($options[1]))? 0 : $options[1];<br />
	$cache_time = (int)$cache_time * 60;<br />
	$cache_no = (empty($options[2]))? "0" : $options[2];<br />
	if (!empty($_GET['easiestml_lang'])) {<br />
		$lang_cache='.'.$GLOBALS['easiestml_langname'];<br />
	} else if (!empty($_COOKIE['easiestml_langname'])) {<br />
		$lang_cache='.'.$_COOKIE['easiestml_langname'];<br />
	}<br />
	$cache_file = XOOPS_ROOT_PATH."/modules/pukiwiki/cache/p/xoops_block_{$cache_no}{$lang_cache}.dat";<br />
	$wiki_url = XOOPS_URL.'/modules/pukiwiki/';<br />
	if (file_exists($cache_file) &amp;&amp; filemtime($cache_file) &gt; time() - $cache_time)<br />
	{<br />
		$data = join('',@file($cache_file));<br />
	}<br />
	else<br />
	{<br />
		$error_str = $data = "";<br />
		if ($show_page)<br />
		{<br />
			if (!empty($_GET['easiestml_lang'])|| !empty($_COOKIE['easiestml_lang'])) {<br />
				$lang_para='&amp;easiestml_lang='.(!empty($_GET['easiestml_lang']) ?$_GET['easiestml_lang']:$_COOKIE['easiestml_lang']);<br />
			}<br />
			$url = $wiki_url.'index.php?xoops_block=1&amp;cmd=read&amp;page='.rawurlencode($show_page).$lang_para;<br />
			include_once(XOOPS_ROOT_PATH."/class/snoopy.php");<br />
			$snoopy = new Snoopy;<br />
			$snoopy-&gt;read_timeout = 10;<br />
			$snoopy-&gt;fetch($url);<br />
			if (strpos($snoopy-&gt;response_code,"200") === FALSE)<br />
			{<br />
				if (file_exists($cache_file))<br />
					$data = join('',@file($cache_file));<br />
				else<br />
					$data = $error_str = $snoopy-&gt;response_code;<br />
			}<br />
			else<br />
			{<br />
			if (isset($snoopy-&gt;error) &amp;&amp; !empty($snoopy-&gt;error))<br />
				$data = $error_str = $snoopy-&gt;error;<br />
			else<br />
				$data = $snoopy-&gt;results;<br />
			}<br />
		}<br />
		// Fatal, Parseエラーが出た場合<br />
		if (preg_match("#&lt;b&gt;(Fatal|Parse) error&lt;/b&gt;:#",$data))<br />
			$data = "";<br />
		if ($data != $error_str)<br />
		{<br />
			//マルチドメイン対応<br />
			$data = preg_replace("/(&lt;[^&gt;]+(href|action|src)=(\"|'))https?:\/\/".$_SERVER["HTTP_HOST"]."(:[\d]+)?/i","$1",$data);<br />
			// SID 自動付加環境 は SID を削除<br />
			if (ini_get("session.use_trans_sid"))<br />
			{<br />
				$data = preg_replace("/(&amp;|\?)?".preg_quote(ini_get("session.name"),"/")."=[0-9a-f]{32}/","",$data);<br />
			}<br />
			if ($fp = fopen($cache_file,"wb"))<br />
			{<br />
				fputs($fp,$data);<br />
				fclose($fp);<br />
			}<br />
		}<br />
	}<br />
	$data = preg_replace('/\{__PUKI_BLOCK_CALLBACK__\:\:([^\(]*?)\(([^\)]*?)\)\s*\}/e', 'b_pukiwiki_plugin_callback("$1","$2")', $data);<br />
	if (strpos($data,"nobunobu") !== FALSE)<br />
	{<br />
		global $xoopsUser,$xoopsModule,$xoopsConfig;<br />
		$uname = ($xoopsUser)? $xoopsUser-&gt;uname() : $xoopsConfig['anonymous'];<br />
		//名前欄置換<br />
		$data = str_replace("nobunobu",$uname,$data);<br />
	}<br />
	// 外部リンクマーク用 class設定<br />
	$data = preg_replace("/(&lt;a[^&gt;]+?)(href=(\"|')?(?!https?:\/\/".$_SERVER["HTTP_HOST"].")http)/","$1class=\"ext\" $2",$data);<br />
	// CSS Link を発行<br />
	$css_url = (file_exists(XOOPS_THEME_PATH.'/'.$xoopsConfig['theme_set'].'/pukiwiki.css'))?<br />
		XOOPS_THEME_URL.'/'.$xoopsConfig['theme_set'].'/pukiwiki.css'<br />
		:<br />
		$wiki_url.'skin/default.ja.css';<br />
	$css_tag = '&lt;link rel="stylesheet" href="'.$css_url.'" type="text/css" media="screen" charset="shift_jis" /&gt;';<br />
	// 管理画面の CSS<br />
	if(file_exists( XOOPS_ROOT_PATH."/modules/pukiwiki/cache/css.css"))<br />
	{<br />
		$css_tag .= "\n".'&lt;link rel="stylesheet" href="'.$wiki_url.'cache/css.css" type="text/css" media="screen" charset="shift_jis" /&gt;'."\n";<br />
	}<br />
	// ページ用の .css<br />
	$css_tag .= b_pukiwiki_page_get_page_css_tag($show_page,$wiki_url);<br />
	// ヘッダ情報付加<br />
	global $xoopsTpl;<br />
	if ($xoopsTpl)<br />
	{<br />
		$xoopsTpl-&gt;assign('xoops_block_header',$xoopsTpl-&gt;get_template_vars('xoops_block_header').$css_tag);<br />
	}<br />
	else<br />
	{<br />
		$data = $css_tag."\n".$data;<br />
	}<br />
	$block['title'] = "PukiWiki - {$show_page}";<br />
	$block['content'] = $data;<br />
	return $block;<br />
}<br />
function b_pukiwiki_plugin_callback($func, $args){<br />
	$retstr = '';<br />
	$plugin_dir=dirname(dirname(__FILE__)).'/plugin';<br />
	if (file_exists($plugin_dir.'/'.$func.'.inc.php')) {<br />
		require_once($plugin_dir.'/'.$func.'.inc.php');<br />
		$func_name = 'plugin_'.$func.'_block_callback';<br />
		if (function_exists($func_name)) {<br />
			if ($args) {<br />
				$arg_array = explode(',', $args);<br />
			}<br />
			$retstr = call_user_func_array($func_name, $arg_array);<br />
//			echo $plugin_dir .":". $func_name. '(' . $args . ') = ' .$retstr;<br />
		}<br />
	}<br />
return $retstr;<br />
}<br />
function b_pukiwiki_page_edit($options)<br />
{<br />
	$form = "";<br />
	$form .= "PukiWiki Page Name: ";<br />
	$form .= "&lt;input type='text' name='options[]' value='".$options[0]."' /&gt;&lt;br /&gt;";<br />
	$form .= "Block cache: ";<br />
	$form .= "&lt;input type='text' name='options[]' value='".$options[1]."' /&gt;(min)&lt;br /&gt;";<br />
	$form .= "Cache file number: ";<br />
	$form .= "&lt;input type='text' name='options[]' value='".$options[2]."' /&gt;";<br />
	return $form;<br />
}<br />
// ページ名のエンコード<br />
function b_pukiwiki_page_encode($key)<br />
{<br />
	$enkey = '';<br />
	$arych = preg_split("//", $key, -1, PREG_SPLIT_NO_EMPTY);<br />
	foreach($arych as $ch)<br />
	{<br />
		$enkey .= sprintf("%02X", ord($ch));<br />
	}<br />
	return $enkey;<br />
}<br />
// [[ ]] を取り除く<br />
function b_pukiwiki_page_strip_bracket($str)<br />
{<br />
	if(preg_match("/^\[\[(.*)\]\]$/",$str,$match))<br />
	{<br />
		$str = $match[1];<br />
	}<br />
	return $str;<br />
}<br />
// ページ専用CSSタグを得る<br />
function b_pukiwiki_page_get_page_css_tag($page,$wiki_url)<br />
{<br />
	$page = b_pukiwiki_page_strip_bracket($page);<br />
	$ret = '';<br />
	$_page = '';<br />
	$dir = XOOPS_ROOT_PATH."/modules/pukiwiki/cache/";<br />
	foreach(explode('/',$page) as $val)<br />
	{<br />
		$_page = ($_page)? $_page."/".$val : $val;<br />
		$_pagecss_file = b_pukiwiki_page_encode($_page).".css";<br />
		if(file_exists($dir.$_pagecss_file))<br />
		{<br />
			$ret .= '&lt;link rel="stylesheet" href="'.$wiki_url.'cache/'.$_pagecss_file.'" type="text/css" media="screen" charset="shift_jis" /&gt;'."\n";<br />
		}<br />
	}<br />
	return $ret;<br />
}<br />
となる。		
XOOPS 2.0.10へアップデートして、このハックが動作しなくなりました。2.0.10のcommon.phpは2.0.9.xとちょっと違うんですが、違いを全部直しても動作してません。私が直してみたファイルはこちらです。http://www.yuji.eu.org/common.txt -- Yuji 2005-04-24 (日) 13:20:43<br />
2.0.10RCは未テストでしたが、さっき試してみました。http://www.yuji.eu.org/common.txtでうまく動きましたよ。 -- nobunobu 2005-04-24 (日) 21:30:55<br />
すいません。ディレクトリー名をportuguesebrとjapanesebrからportuguesebrutfとjapaneseutfへ変えて、リインストールしてもクッキーには古いデータがあって、どっちも正しく表示されてなかったんです。 -- Yuji 2005-04-24 (日) 23:11:20<br />
お名前:
]]>
</content:encoded>
 <dc:identifier>http://www.kowa.org/modules/pukiwiki/354.html</dc:identifier>
<dc:creator>nobunobu</dc:creator>
</item>

<item rdf:about="http://www.kowa.org/modules/pukiwiki/251.html">
 <title>開発メモ/xoops_version.php</title>
 <link>http://www.kowa.org/modules/pukiwiki/251.html</link>
 <dc:date>2005-02-12T11:46:29+09:00</dc:date>
 <description>?php// $Id: xoops_version.php.html,v 1.1 2004/06/08 09:02:18 0447 Exp $//  ------------------------------------------------------------------------ ////                XOOPS - PHP Content Management System                      ////                   </description>
<content:encoded>
<![CDATA[
&lt;?php<br />
// $Id: xoops_version.php.html,v 1.1 2004/06/08 09:02:18 0447 Exp $<br />
//  ------------------------------------------------------------------------ //<br />
//                XOOPS - PHP Content Management System                      //<br />
//                    Copyright (c) 2000 XOOPS.org                           //<br />
//                       &lt;http://www.xoops.org/&gt;                             //<br />
//  ------------------------------------------------------------------------ //<br />
//  This program is free software; you can redistribute it and/or modify     //<br />
//  it under the terms of the GNU General Public License as published by     //<br />
//  the Free Software Foundation; either version 2 of the License, or        //<br />
//  (at your option) any later version.                                      //<br />
//                                                                           //<br />
//  You may not change or alter any portion of this comment or credits       //<br />
//  of supporting developers from this source code or any supporting         //<br />
//  source code which is considered copyrighted (c) material of the          //<br />
//  original comment or credit authors.                                      //<br />
//                                                                           //<br />
//  This program is distributed in the hope that it will be useful,          //<br />
//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //<br />
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //<br />
//  GNU General Public License for more details.                             //<br />
//                                                                           //<br />
//  You should have received a copy of the GNU General Public License        //<br />
//  along with this program; if not, write to the Free Software              //<br />
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //<br />
//  ------------------------------------------------------------------------ //<br />
//<br />
// ModSample0 xoops用モジュール記述ファイル<br />
// xoops_version.php<br />
// by nobunobu (http://www.kowa.org/)<br />
//<br />
//**************************************************************<br />
//XOOPSモジュール全般の記述<br />
//**************************************************************<br />
//モジュールの名称<br />
$modversion['name'] = _MI_MODSAMPLE0_NAME;<br />
//モジュールのバージョン<br />
$modversion['version'] = 0.01;<br />
//モジュールの説明<br />
$modversion['description'] = _MI_MODSAMPLE0_DESC;<br />
//モジュールのクレジット標記<br />
$modversion['credits'] = &quot;Kowa.ORG&quot;;<br />
//モジュールの作者名<br />
$modversion['author'] = &quot;nobunobu(http://www.kowa.org/)&quot; ;<br />
//<br />
$modversion['help'] = &quot;&quot; ;<br />
//モジュールのライセンス形態<br />
$modversion['license'] = &quot;GPL see LICENSE&quot;;<br />
//XOOPSの公式モジュールかどうか（オリジナルモジュールは0)<br />
$modversion['official'] = 0;<br />
//管理者メニューで表示するアイコン<br />
$modversion['image'] = &quot;images/ModSample0_slogo.png&quot;;<br />
//モジュールの配置ディレクトリ名<br />
$modversion['dirname'] = &quot;ModSample0&quot;;<br />
//**************************************************************<br />
//インストール関連<br />
//**************************************************************<br />
//モジュールのインストール時に使うSQLファイル名<br />
// - phpMyAdminによって作成されたSQLファイルを推奨します。<br />
// - SQLファイル内では、xoops_ などのような、XOOPSインストール時に<br />
//   指定を行うプレフィックスは含んではいけません。<br />
//$modversion['sqlfile']['mysql'] = &quot;sql/mysql.sql&quot;;<br />
//上記のSQLファイルで作成されるテーブル名<br />
// - テーブル名には、xoops_ などのような、XOOPSインストール時に<br />
//   指定を行うプレフィックスは含んではいけません。<br />
//$modversion['tables'][0] = 'ModSample0_table';<br />
//**************************************************************<br />
//使用テンプレート定義<br />
//**************************************************************<br />
//$modversion['templates'][1] = array(<br />
//  'file' =&gt; 'ModSample0_template1.html',<br />
//  'description'] = '',<br />
//);<br />
//**************************************************************<br />
//ブロック定義体<br />
//**************************************************************<br />
//$modversion['blocks'][1] = array(<br />
//  'file'          =&gt; 'ModSample0_block1.php' ,<br />
//  'name'          =&gt; _MI_MODSAMPLE0_BLOCK_BLOCK1 ,<br />
//  'description'   =&gt; _MI_MODSAMPLE0_BLOCK_BLOCK1_DESC ,<br />
//  'show_func'     =&gt; 'ModSample0_block1_show' ,<br />
//  'edit_func'     =&gt; 'ModSample0_block1_edit' ,<br />
//  'template'      =&gt; 'ModSample0_block1.html' ,<br />
//  'options'       =&gt; '10|20'<br />
//) ;<br />
//<br />
//Key:file<br />
//ブロックを処理するPHPソースファイル名<br />
// - ブロック処理のPHPソースファイルは、blocksディレクトリに<br />
//   配置する事が前提となっています。<br />
//<br />
//Key:name<br />
//ブロックの名称<br />
//<br />
//Key:description<br />
//ブロックの説明<br />
//<br />
//Key:show_func<br />
//ブロック表示関数名<br />
// - fileパラメータで指定したPHPソース内の表示用関数を指定します。<br />
//<br />
//Key:edit_func<br />
//ブロック設定オプション表示関数名<br />
// - 管理者メニューのブロック管理で表示オプションを設定する必要が<br />
//   ある場合に、そのオプション設定部分を表示するための関数名を<br />
//   指定します。<br />
// - ブロック管理で設定したオプションの値は、show_func及びedit_funcで<br />
//   指定した関数のパラメータとしてarrayで渡されます。<br />
//<br />
//Key:template<br />
//ブロック表示用テンプレートファイル名<br />
// - ブロック表示にテンプレートを使用する場合にそのテンプレート<br />
//   ファイル名を指定します。<br />
// - ブロック表示用テンプレートファイルは、templates/blocksに<br />
//   配置する事が前提となっています。<br />
//<br />
//Key:options<br />
//ブロック設定オプションのデフォルト値<br />
// - ブロック管理における表示オプションのデフォルト値を指定します。<br />
// - オプションが複数種ある場合には、それぞれを'|'で区切って指定します。<br />
//**************************************************************<br />
//メインメニュー定義<br />
//**************************************************************<br />
//メインメニューにモジュールを表示する場合は1、表示しない場合は0<br />
// - メインメニューに表示する場合、各メニューを選択すると、モジュールの<br />
//   index.phpが呼び出されます。<br />
$modversion['hasMain'] = 0;<br />
//メインメニューの階層サブメニュー定義体<br />
// - 階層サブメニュー表示が必要な場合に指定します。<br />
//$modversion['sub'][1]=array(<br />
//  'name' =&gt; _MI_MODSAMPLE0_SUBMENU1,<br />
//  'url'  =&gt; &quot;submenu1.php&quot;,<br />
//);<br />
//<br />
//Key:name<br />
//サブメニューの表示名<br />
//<br />
//Key:url<br />
//サブメニューを選択した時に実行するURL<br />
//<br />
//機能によっては、権限等のチェックなどのロジックを含めて、<br />
//サブメニューの表示非表示の切替を行ったり、サブメニューに<br />
//表示する項目をDBより読み取ったりする場合もあります。<br />
//**************************************************************<br />
//検索機能定義<br />
//**************************************************************<br />
//XOOPSのキーワード検索機能の検索対象とする場合は1、しない場合は0<br />
$modversion['hasSearch'] = 0;<br />
//検索機能定義体<br />
//$modversion['search'] = array(<br />
//  'file' =&gt; &quot;include/search.inc.php&quot;,<br />
//  'func' =&gt; &quot;ModSample0_search&quot;,<br />
//);<br />
//<br />
//Key:file<br />
//検索機能を処理するPHPソースファイル名<br />
//<br />
//Key:func<br />
//検索処理関数名<br />
// - fileパラメータで指定したPHPソース内の表示用関数を指定します。<br />
// - XOOPSのキーワード検索が行われると、ここで指定された関数に、<br />
//   検索文字列などがパラメータとして受けわたされます。<br />
//**************************************************************<br />
//コメント機能定義<br />
//**************************************************************<br />
//メインコンテンツに対するコメント投稿を許可する場合は1、しない場合は0<br />
$modversion['hasComments'] = 0;<br />
//コメント属性定義体<br />
//$modversion['comments'] = array(<br />
//  'itemName' =&gt; 'event_id',<br />
//  'pageName' =&gt; 'index.php',<br />
//  'callbackFile' =&gt; 'include/comment_functions.php',<br />
//  'callback' =&gt; array(<br />
//      'approve' =&gt; 'ModSample0_comments_approve',<br />
//      'update' =&gt; 'ModSample0_comments_update',<br />
//  ),<br />
//);<br />
//**************************************************************<br />
//管理者メニュー関連<br />
//**************************************************************<br />
//管理者メニュー内での設定機能を持つ場合は1、持たない場合は0<br />
$modversion['hasAdmin'] = 0;<br />
//管理者メニューのアイコンを選択したときの初期画面用PHPファイル名<br />
//$modversion['adminindex'] = &quot;admin/index.php&quot;;<br />
//管理者メニューのアイコンを選択したときのメニュー表示用PHPファイル名<br />
//$modversion['adminmenu'] = &quot;admin/menu.php&quot;;<br />
//**************************************************************<br />
//管理者メニュー一般設定関連<br />
//**************************************************************<br />
//管理者メニューでの設定画面を自動生成する場合は1<br />
// - 設定画面の自動生成では、通常一般設定と呼ばれている設定画面に、<br />
//   以下で設定した項目が追加表示されます。<br />
$modversion['hasconfig'] = 0;<br />
//設定オプションフィールド定義体<br />
// - 一般設定に追加表示する項目の定義体<br />
//$modvesion['config'][1] = array(<br />
//  'name'          =&gt; 'ModSample0_field1' ,<br />
//  'title'         =&gt; '_MI_MODSAMPLE0_FIELD1' ,<br />
//  'description'   =&gt; '_MI_MODSAMPLE0_FIELD1_DESC' ,<br />
//  'formtype'      =&gt; 'textbox' ,<br />
//  'valuetype'     =&gt; 'text' ,<br />
//  'default'       =&gt; 'DEFAULT' ,<br />
//  'options'       =&gt; array(),<br />
//);<br />
//Key:name<br />
// 設定オプションのキー名<br />
// - グローバル変数 $xoopsModuleConfig[設定名称]にて、設定値が取得可能になります。<br />
//<br />
//Key:title<br />
// 設定オプションの表示名称<br />
// - 設定画面に表示されるオプション名称を指定します。<br />
//<br />
//Key:description<br />
//設定オプションの説明<br />
// - 設定画面に表示されるオプションの説明を指定します。<br />
//<br />
//Key:formtype<br />
//設定オプションのデータ表示種別<br />
// - 設定画面に表示されるオプションの値をどのようの表示するかの種別を指定します。<br />
// - 以下の値が使用可能です。<br />
//      textbox<br />
//      textarea<br />
//      select<br />
//      select_multi<br />
//      yesno<br />
//      group<br />
//      group_multi<br />
//<br />
//Key:valuetype<br />
//設定オプションのデータタイプ<br />
// - 以下の値が使用可能です。<br />
//      int<br />
//      text<br />
//      float<br />
//      array<br />
//      other<br />
// - formtypeでgroup_multiかselect_multiを指定した場合には、arrayを設定する必要があります。<br />
//<br />
//Key:default<br />
// 設定オプションのデフォルト値<br />
// - デフォルト値が無い場合には、設定不要です。<br />
// - formtypeが 'yesno'の場合には、0(no)か1(yes)を指定します。<br />
//<br />
//Key:options<br />
//設定オプションの選択項目一覧<br />
// - formtypeが 'select'か'select_multi'の場合に、選択対象項目を格納したarrayを設定します<br />
//   例 'options' =&gt; array(<br />
//                    '_MI_OPT_AUTH_NONE'=&gt;0 ,<br />
//                    '_MI_OPT_AUTH_WAIT'=&gt;1 ,<br />
//                    '_MI_OPT_AUTH_POST'=&gt;3 ,<br />
//                    '_MI_OPT_AUTH_BYGROUP'=&gt;256 ,<br />
//       )<br />
//**************************************************************<br />
//イベント通知機能定義<br />
//**************************************************************<br />
//イベント通知機能を持つ場合は1、持たない場合は0<br />
$modversion['hasNotification'] = 0;<br />
//$modversion['notification']['lookup_file'] = 'include/notification.inc.php';<br />
//$modversion['notification']['lookup_func'] = 'ModSample0_notify_iteminfo';<br />
//イベントのカテゴリー定義<br />
//$modversion['notification']['category'][1] = array(<br />
//  'name' =&gt; 'global',<br />
//  'title' =&gt; _MI_MODSAMPLE0_GLOBAL_NOTIFY,<br />
//  'description' =&gt; _MI_MODSAMPLE0_GLOBAL_NOTIFYDSC,<br />
//  'subscribe_from' =&gt; array(<br />
//      'index.php',<br />
//  ),<br />
//  'item_name' =&gt; 'cid',<br />
//  'allow_bookmark' =&gt; 0,<br />
//);<br />
//通知イベントの定義<br />
//$modversion['notification']['event'][1] = array(<br />
//  'name' =&gt; 'new_event',<br />
//  'category' =&gt; 'global',<br />
//  'title' =&gt; _MI_MODSAMPLE0_GLOBAL_NEWEVENT_NOTIFY,<br />
//  'caption' =&gt; _MI_MODSAMPLE0_GLOBAL_NEWEVENT_NOTIFYCAP,<br />
//  'description' =&gt; _MI_MODSAMPLE0_GLOBAL_NEWEVENT_NOTIFYDSC,<br />
//  'mail_template' =&gt; 'global_newevent_notify',<br />
//  'mail_subject' =&gt; _MI_MODSAMPLE0_GLOBAL_NEWEVENT_NOTIFYSBJ,<br />
//);<br />
?&gt;
]]>
</content:encoded>
 <dc:identifier>http://www.kowa.org/modules/pukiwiki/251.html</dc:identifier>
<dc:creator>nobunobu</dc:creator>
</item>


</rdf:RDF>