<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>スイナシア(プリロード)</title>
<link>http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89</link>
<description>「プリロード」なエントリー</description>
<language>ja</language>
<lastBuildDate>Sat, 31 Jul 2010 19:10:53 +0900</lastBuildDate>
<docs>http://backend.userland.com/rss/</docs>
<category>プリロード</category>
<item>
<title>Google Analyticsのトラッキングコードを追加するプリロード</title>
<link>http://suin.asia/2010/05/02/google_analytics_preload</link>
<description><![CDATA[<p>Google Analyticsは無料で利用できる高機能なアクセス解析サービスです。利用する場合は、サイトにトラッキングコードを追加します。XOOPS Cubeで、トラッキングコードを追加するには、普通はテーマにトラッキングコードを書き込んでしまうのが早いです。しかし、テーマを変更することが想定される場合は、プリロードにしておくと便利です。テーマが変わってもトラッキングコードが抜ける心配がないからです。</p>

<p>下のプリロードはGoogleAnalytics.class.phpというファイル名で保存します。トラッキングコードを所定の場所にコピペするだけです。Google Analytics以外に、HTMLのヘッダに貼りつけたいコードがある時にも、応用できると思います。</p>

<pre class="php" name="code">
&lt;?php

class GoogleAnalytics extends XCube_ActionFilter
{
	public function preBlockFilter()
	{
		$this-&gt;mRoot-&gt;mDelegateManager-&gt;add('XoopsTpl.New', array(&amp;$this, 'hook'));
	}

	public function hook(&amp;$xoopsTpl)
	{
		$trackingCode = &lt;&lt;&lt; DOC_END
//トラッキングコードをここに貼付け。
DOC_END;

		$xoopsModuleHeader = $xoopsTpl-&gt;get_template_vars('xoops_module_header');
		$xoopsTpl-&gt;assign('xoops_module_header', $xoopsModuleHeader.$trackingCode);
	}
}

?&gt;
</pre>]]></description>
<pubDate>Sun, 02 May 2010 01:17:39 +0900</pubDate>
<guid>http://suin.asia/2010/05/02/google_analytics_preload</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
<category domain="http://suin.asia/tag/GoogleAnalytics">GoogleAnalytics</category>
</item>
<item>
<title>DynamicThemeChanger 1.0.0 URLで動的にテーマを切り替えるプリロード</title>
<link>http://suin.asia/2010/04/21/dynamic_theme_changer_100</link>
<description><![CDATA[<a href="http://suin-xoops.googlecode.com/files/DynamicThemeChanger.1.0.0.zip" class="download">ダウンロード</a>
<p>DynamicThemeChangerはURLで指定したテーマに切り替えるプリロードです。テーマ配布サイトがテーマのプレビューを示すことを想定して作りました。プリロードをアップロードすることで、URLで?theme={テーマディレクトリ名}の形でテーマを指定すると、そのテーマに切り替わります。</p>]]></description>
<pubDate>Wed, 21 Apr 2010 23:43:47 +0900</pubDate>
<guid>http://suin.asia/2010/04/21/dynamic_theme_changer_100</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
<category domain="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89">ダウンロード</category>
<category domain="http://suin.asia/tag/DynamicThemeChanger">DynamicThemeChanger</category>
</item>
<item>
<title>WhiteoutRescue 真っ白画面解決支援プリロード</title>
<link>http://suin.asia/2010/03/12/whiteoutrescue_preload</link>
<description><![CDATA[<p>
<a href="http://dl.dropbox.com/u/949822/Downloads/WhiteoutRescue_1.0.zip" class="download">WhiteoutRescue_1.0.zip</a>
ホワイトデイ(3月14日)は、一般には男子が女子にクッキーをあげる日ですが、XOOPSユーザにとっては厄日だそうです。XOOPSオーナーが最も嫌うのは、エラーなどでXOOPSの画面が「真っ白」になることです。ホワイトデイの「ホワイト」が「真っ白」を連想させることもあり、ホワイトデイに「真っ白」画面が出ると、その年のXOOPS運が大殺界であることを意味するそうで、縁担ぎのために3月14日の1日だけXOOPSを止めたり、熱心なXOOPS関係のデベロッパーの中にはこの日だけ開発を休んだりするそうです。</p>

<p>WhiteoutRescueプリロードは、ホワイトデイに「真っ白」画面を出さないためのプリロードです。ホワイトデイに真っ白画面に出くわしたサイトオーナーがこのプリロードをアップロードします。そして、真っ白画面のページにアクセスすると、黒背景を基調としたデバッグページが現れます。サイトオーナーはそのデバッグ情報をたよりに真っ白画面を解消します。このように、真っ白画面を直すことで、厄払いの意味になり、その年のXOOPS運が大安になると言われています。</p>

<p class="photo"><a href="http://picasaweb.google.co.jp/lh/photo/8WxTNouyTtprVY2q8vpKJQ?feat=embedwebsite"><img src="http://lh5.ggpht.com/_dG0BBWAhWis/S5kJmrP1wtI/AAAAAAAABJ8/5_DyGvIV9vM/s400/%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3%201.png" /></a></p>

<h3>動作要件</h3>
<ul>
<li>XOOPS Cube Legacy 2.x</li>
<li>PHP 5.1 (5.2からかも)</li>
<li>UTF-8環境(EUC-JPでも動くことは動く)</li>
</ul>

<h3>WhiteoutRescueプリロードの使い方</h3>

<p>XOOPSオーナーに伝わるWhiteoutRescueプリロードの使い方は以下のようです。</p>

<ol>
<li>WhiteoutRescue.class.phpを/preloadにアップロードする</li>
<li>真っ白のページにアクセスする</li>
<li>表示されたデバッグ情報をもとに問題を解決する</li>
<li>使い終わったら、WhiteoutRescue.class.phpを削除する</li>
</ol>

<p>なお、使い終わってもWhiteoutRescueプリロードを削除しないでいると、XOOPSのセキュリティやパフォーマンスが低下し、XOOPSが白い悪魔に取り憑かれるそうなので、必ず削除するようにしましょう。</p>

<p>WhiteoutRescueを使っても真っ白のままの場合、以下のことが考えられます。</p>
<ul>
<li>プリロード読み込み以前にXOOPSがこけてる</li>
<li>PHPのパースエラー（セミコロンがダブルコロンだ、など）この場合はPHPのエラーログを参照</li>
<li>サーバーの問題 (.htaccessの設定ミスなど)</li>
<li>そもそもXOOPS Cube Legacyじゃない</li>
<li>しかるべくして真っ白なページ</li>
</ul>

<h3>ライセンス</h3>
<p>GNU GPL2ライセンスです。動作無保証です。あなたは、GPL2の条件をみたせばこのプログラムを改変・頒布することができます。</p>

<h3>リポジトリ</h3>
<code>
svn checkout http://suin-xoops.googlecode.com/svn/trunk/WhiteoutRescue suin-xoops-read-only
</code>

<h3>[訂正 2010/03/12]</h3>
<p>XOOPSオーナーの間で、3月14日が厄日などの記述がありましたが、実際にはそんな習慣はないそうです。教えてくれたwhite_devilさんありがとうございます。</p>]]></description>
<pubDate>Fri, 12 Mar 2010 00:19:16 +0900</pubDate>
<guid>http://suin.asia/2010/03/12/whiteoutrescue_preload</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89">ダウンロード</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
</item>
<item>
<title>SubversionでのPreloadの管理方法</title>
<link>http://suin.asia/2010/03/11/how_to_manage_preloads_with_subversion</link>
<description><![CDATA[<p>Preloadをバージョン管理する便利な方法を紹介しようと思います。ディレクトリごとにバージョン管理する場合、開発中のプリロードを/preloadディレクトリにおいてしまうと、他のプリロードまでバージョンされてしまいます。こういう場合では、/preloadにサブディレクトリを作って、そこでバージョン管理したほうが管理性が向上します。</p>
<p xml:lang="en">I will introduce you how to develop preloads with Subversion. If you put your preloads under /preload directory, it is difficult to manage the versions of its. Because, Subversion treats not only your preload but also the other ones. In such a case, you can make subdirectories under /preload. This way helps you to increase your manageability.</p>
<p>配布することを考えれば、サブディレクトリにLicense.txtやReadme.txtを置くといいでしょう。そうしておくと、svn -exportでプリロードの配布パッケージが簡単に生成できます。</p>
<p xml:lang="en">If you plan to distribute your preload, you may put License.txt or Readme.txt under the subdirectory. It is a smart way. You only have to command "svn -export" at the subdirectory when you distribute it.</p>

<h3>ディレクトリの構成方法</h3>

<pre>
/XOOPS_ROOT_PATH
	/preload
		/VersionedPreload.class.php (a)
		/VersionedPreload
			/.svn
			/VersionedPrelaod.class.php (b)
			/License.txt
			/Readme.txt
</pre>

<h3>VersionedPreload.class.php (a)のソース</h3>

<pre class="php" name="code">
&lt;?php

$file = basename(__FILE__);
$dir  = str_replace('.class.php', '', $file);

require $dir.'/'.$file;

?&gt;
</pre>

<p>(a)はただ、requireするだけです。（プロキシと言ったラインだろうか。）このサンプルソースはどんなプリロードにもそのまま流用できます。なぜなら、ファイル名を動的に取得しているからです。/preloadディレクトリに(a)をひとつ作っておけば、新しくプリロードを作る度に、コピーして名前を変更するだけでいいので便利です。</p>
<p xml:lang="en">The (a) only includes your preload. You can apply this sample to your any other preloads. Because, this sample get the file name dynamically. If you create the (a) once, you only have to copy and rename it, when you create a new preload. It is useful.</p>

<h3>VersionedPreload.class.php (b)のソース</h3>

<pre class="php" name="code">
&lt;?php
/**
 *
 * @package    Versioned Preload
 * @author     Foo Bar &lt;http://example.com/&gt;
 * @copyright  2010 Foo Bar
 * @license    http://www.gnu.org/licenses/gpl-2.0.html GNU GPL v2 or later
 *
 */

if ( !defined('XOOPS_ROOT_PATH') ) exit;

class VersionedPreload extends XCube_ActionFilter
{
	public function preBlockFilter()
	{
		$this-&gt;mRoot-&gt;mDelegateManager-&gt;add('Delegate.Name', array(__CLASS__, 'doSomething'));
	}

	public static funciton doSomething(&amp;$param)
	{
		// Do something here.
	}
}
?&gt;
</pre>

<p>(b)では、プリロードを作るときの普段どおりの書き方をするだけです。とくに変わったことをする必要もありません。</p>]]></description>
<pubDate>Thu, 11 Mar 2010 17:14:45 +0900</pubDate>
<guid>http://suin.asia/2010/03/11/how_to_manage_preloads_with_subversion</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
<category domain="http://suin.asia/tag/%E9%96%8B%E7%99%BA">開発</category>
</item>
<item>
<title>ユーザのパスワードに期限をつけるプリロード PasswordLimitter 1.2</title>
<link>http://suin.asia/2010/03/05/passwordlimitter</link>
<description><![CDATA[<a href="http://dl.dropbox.com/u/949822/Downloads/PasswordLimitter_1.2.zip" class="download">ダウンロード</a>

<p>パスワードは定期的に変更するほうがより安全と言われています。PasswordLimitterは、XOOPSのユーザのパスワードに期限を設け、期限がすぎたユーザに対しては、ログイン時にパスワード変更を促すメッセージを表示します。</p>

<h3>インストール方法</h3>
<ol>
<li>PasswordLimitter.class.phpを/preloadにアップロード</li>
<li>管理アカウントで、http://あなたのXOOPS/misc.php?password_limitter=adminにアクセス</li>
<li>「INSTALL」をクリックしてインストールを実行</li>
<li>その後、設定ページで期限日数を設定する</li>
</ol>

<h3>アンインストール方法</h3>
<ol>
<li>管理アカウントで、http://あなたのXOOPS/misc.php?password_limitter=adminにアクセス</li>
<li>「UNINSTALL」をクリックしてインストールを実行</li>
<li>PasswordLimitter.class.phpを/preloadから削除</li>
</ol>

<h3>変更点 1.0 =&gt; 1.2</h3>
<ul>
<li>ユーザ新規登録時に有効期限がセットされないバグを修正。</li>
</ul>
<p>1.1とばしてしまった…orz</p>

<h3>開発情報</h3>

<ul>
<li><a href="http://code.google.com/p/suin-xoops/source/browse/#svn/trunk/PasswordLimitter">リポジトリ</a></li>
</ul>]]></description>
<pubDate>Fri, 05 Mar 2010 01:47:43 +0900</pubDate>
<guid>http://suin.asia/2010/03/05/passwordlimitter</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
<category domain="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89">ダウンロード</category>
<category domain="http://suin.asia/tag/PasswordLimitter">PasswordLimitter</category>
</item>
<item>
<title>ユーザのパスワードに期限をつけるプリロード PasswordLimitter 1.0</title>
<link>http://suin.asia/2010/02/23/passwordlimitter_1.0</link>
<description><![CDATA[<div class="errorMsg">
<ul>
<li>この情報は古いです。<a href="http://suin.asia/2010/03/05/passwordlimitter">新しい情報</a>を御覧下さい。</li>
</ul>
</div>

<p>パスワードは定期的に変更するほうがより安全と言われています。PasswordLimitterは、XOOPSのユーザのパスワードに期限を設け、期限がすぎたユーザに対しては、ログイン時にパスワード変更を促すメッセージを表示します。</p>

<h3>インストール方法</h3>
<ol>
<li>PasswordLimitter.class.phpを/preloadにアップロード</li>
<li>管理アカウントで、http://あなたのXOOPS/misc.php?password_limitter=adminにアクセス</li>
<li>「INSTALL」をクリックしてインストールを実行</li>
<li>その後、設定ページで期限日数を設定する</li>
</ol>

<h3>アンインストール方法</h3>
<ol>
<li>管理アカウントで、http://あなたのXOOPS/misc.php?password_limitter=adminにアクセス</li>
<li>「UNINSTALL」をクリックしてインストールを実行</li>
<li>PasswordLimitter.class.phpを/preloadから削除</li>
</ol>

<h3>開発情報</h3>

<ul>
<li><a href="http://code.google.com/p/suin-xoops/source/browse/#svn/trunk/PasswordLimitter">リポジトリ</a></li>
</ul>]]></description>
<pubDate>Tue, 23 Feb 2010 05:59:19 +0900</pubDate>
<guid>http://suin.asia/2010/02/23/passwordlimitter_1.0</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
<category domain="http://suin.asia/tag/PasswordLimitter">PasswordLimitter</category>
</item>
<item>
<title>あなたのモジュール開発が加速するSuinDebugプリロード</title>
<link>http://suin.asia/2010/02/12/suin_debug_preload</link>
<description><![CDATA[<a href="http://dl.dropbox.com/u/949822/Downloads/SuinDebug_1.0.zip" class="download">Download</a>

<p>SuinDebugプリロードは、たったひとつのファイルで、あなたのXOOPS Cube Legacyでのデバッグをよりスムースにするためのサイトプリロードです。</p>

<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/n_XczAn4_8A&hl=ja_JP&fs=1&hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/n_XczAn4_8A&hl=ja_JP&fs=1&hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>

<p>HD画質なので、フルスクリーンで見るのをおすすめします。</p>

<h3>特徴</h3>

<ul>
<li>
<h4>サイト(開発環境)を汚さない</h4>
SuinDebugは、たったひとつのファイルからなるサイトプリロードです。{stdout_buffer}をテーマに書くことでテーマが汚れるデメリットや、デバッグ関連のファイルをいくつもアップロードすることで、開発パッケージに余分なファイルがあふれるデメリット、デバッグ関連の情報をデータベースに保存することで、データベースに不必要な情報が紛れ込むデメリットが一切ありません。
</li>
<li>
<h4>エラーで画面を汚さない</h4>
SuinDebugは、PHPやMySQLなどのデバッグ情報をウェブページに直接出力しません。デバッグ情報などによる、レイアウト崩れ・ソースの汚損からま逃れることができます。
</li>
<li>
<h4>ポップアップウィンドウを開かない</h4>
SuinDebugを使えば、デバッグのためにこれ以上ポップアップウィンドウを開く必要はありません。デバッグ情報はJavaScriptによるモーダルウィンドウで表示されます。つまり、ひとつのウィンドで完結するので、ポップアップからくるストレスを軽減できます。
</li>
<li>
<h4>それなりのインターフェイス</h4>
エラーSQLやDelegateのハイライト機能など、視覚的な面が考慮されています。また、デバッグモードを切り替える必要なしに、SQL, Delegate, XoopsTpl, stdout_buffer, PHP Errorsを一様に閲覧することができます。
</li>
</ul>

<h3>使い方</h3>

<ol>
<li>SuinDebugをダウンロードします。</li>
<li>それを解凍して、{XOOPS_ROOT}/preload/に保存します。</li>
<li>JavaScriptをONにした状態で、管理者アカウントでログインします。</li>
<li>管理画面でPHPデバッグモードをONにします。</li>
<li>ウィンドウ上端から100pxくらいのところにカーソルを移動するとメニューが表示されます。</li>
<ol>

<h3>注意</h3>

<p>SuinDebugを公開サイトにアップロードしないでください。あくまで、このプリロードは非公開の開発環境で使用することを想定しています。たとえば、VMwareやXAMPP・MAMPで構築されたローカル開発環境。なお、サイトを公開する場合は、SuinDebugを削除してください。</p>


<h3>SuinDebug description</h3>

<p>SuinDebug is a site preload. It will help your debugging when you develop modules in XOOPS Cube Legacy.</p>

<h3>Features</h3>

<ul>
<li>
<h4>SuinDebug doesn't litter your XOOPS</h4>
SuinDebug consists of only one site preload file. You never have to write {stdout_buffer} in your theme. You never have to upload too many files for debugging. You never have to add any information into your database. You only have to upload SuinDebug preload.
</li>
<li>
<h4>SuinDebug doesn't litter your webpages with errors</h4>
SuinDebug doesn't directory output debugging information into your webpages such as PHP or MySQL. So, it doesn't break webpage layout with debugginf information.
</li>
<li>
<h4>SuinDebug never opens popup windows any more</h4>
To show debugging informaiton, SuinDebug uses mordal window. So it never annoy you with popup windows.
</li>
<li>
<h4>SuinDebug has good interface</h4>
Without changing debugging mode, you can browse SQL, Delegate, XoopsTpl, stdout_buffer, PHP Errors at the same time in the same window.
</li>
</ul>

<h3>How to Use</h3>

<ol>
<li>Please Download SuinDebug.</li>
<li>Please Upload it to {XOOPS_ROOT}/preload/</li>
<li>Please Turn on JavaScript and login as site admin.</li>
<li>Please Turn on PHP debugging mode in legacy module.</li>
<li>Please Move your pointer by near 100px from window top.</li>
<ol>

<h3>Notice</h3>

<p>Please DO NOT upload SuinDebug to public website. SuinDebug should be used only in local developing envenment; for example, VMware, XAMMP, MAMP and so on. When you public your website, please remove SuinDebug.</p>]]></description>
<pubDate>Fri, 12 Feb 2010 15:40:56 +0900</pubDate>
<guid>http://suin.asia/2010/02/12/suin_debug_preload</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
<category domain="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89">ダウンロード</category>
<category domain="http://suin.asia/tag/SuinDebug">SuinDebug</category>
</item>
<item>
<title>XOOPS Cube + preload でカスタムブロックを作成する方法</title>
<link>http://suin.asia/2010/01/25/preload_block</link>
<description><![CDATA[<p>カスタムブロックは、通常legacyモジュールやaltsysで作ることができます。ここでは、プリロードでカスタムブロックを作ることを紹介します。</p>

<p>その前に、ここで紹介するTipsは、管理画面でカスタムブロックを作るより、はるかに回りくどくPHPの知識が必要な点を注意しておきます。なので、特殊な機能や要件を必要としない限り、カスタムブロックは管理画面で作るべきです。</p>

<p>まず、XOOPS Cubeのプリロードでカスタムブロックを作るメリットはいくつかあります。</p>

<ul>
<li>ファイルとして配布できる</li>
<li>ファイルなので、不要になれば削除するだけ</li>
<li>PHPなどの複雑なロジックが書きやすい（通常のカスタムブロックでもPHPは使えます）</li>
</ul>

<p>特にこの中でも、ファイルとして扱えるメリットは大きいです。たとえば、開発環境で一定の変数を出力したりとデバッグ用途にブロックをプリロードで実装します。あとは、公開するときにプリロードを削除するだけで、データベースを汚したりすることは一切ありません。管理画面で操作するブロックだと、ついつい消し忘れ・消し損ないなんてこともありますが、プリロードだとファイルを確実に削除すれば、消し損なうこともありません。</p>

<a href="http://dl.dropbox.com/u/949822/Downloads/PreloadBlock.class.php" class="download">ダウンロード</a>
<p>次に、プリロードのソースを紹介します。16行目の$indexが、ブロックを表示する位置になります。l, r, cl, cc, crの順に、左・右・中央左・中央中・中央右を意味します。</p>

<p>18行目から22行目はブロックの表示に関する設定です。nameはブロック名で、アルファベット英数ですきな名前を指定します。titleはブロックの題目で、ブロックの上部に表示されます。contentはブロックの内容で、HTMLなどで書くことができます。weightはブロックの並び順で、数値が小さいほど上に、数値が多きほど下にブロックが表示されます。</p>

<pre name="code" class="php">
&lt;?php
/**
 * A simple description for this script
 *
 * PHP Version 5.2.4 or Upper version
 *
 * @package    PreloadBlock
 * @author     Hidehito NOZAWA aka Suin &lt;http://suin.asia/&gt;
 * @copyright  2009 Hidehito NOZAWA
 * @license    http://www.gnu.org/licenses/gpl-2.0.html GNU GPL v2.0
 *
 */

class PreloadBlock extends XCube_ActionFilter
{
	protected $index = 'l';
	protected $block = array(
		'id'      =&gt; -1,
		'name'    =&gt; 'preload_block',
		'title'   =&gt; 'プリロードブロック',
		'content' =&gt; '&lt;i&gt;ブロックの内容&lt;/i&gt;',
		'weight'  =&gt; -1, // 並び順
	);
	protected $indexes = array(
		'l' =&gt; 0,
		'r' =&gt; 1,
		'cl' =&gt; 3,
		'cr' =&gt; 4,
		'cc' =&gt; 5
	);
	protected $blocks = array(
		'l' =&gt; 'xoops_lblocks',
		'r' =&gt; 'xoops_rblocks',
		'cl' =&gt; 'xoops_clblocks',
		'cr' =&gt; 'xoops_crblocks',
		'cc' =&gt; 'xoops_ccblocks'
	);

	public function postFilter()
	{
		if ( $this-&gt;mController-&gt;_mStrategy-&gt;mStatusFlag != LEGACY_CONTROLLER_STATE_PUBLIC )
		{
			return;
		}

		$this-&gt;mRoot-&gt;mDelegateManager-&gt;add('Legacy_RenderSystem.BeginRender', array(&amp;$this, 'beginRender'));
		$this-&gt;mRoot-&gt;mContext-&gt;mAttributes['legacy_BlockShowFlags'][$this-&gt;indexes[$this-&gt;index]]  = true;
		$this-&gt;mRoot-&gt;mContext-&gt;mAttributes['legacy_BlockContents'][$this-&gt;indexes[$this-&gt;index]][] = $this-&gt;block;
	}

	protected function beginRender(&amp;$tpl)
	{
		if ( !empty($tpl-&gt;_tpl_vars['isFileTheme']) )
		{
			uasort($tpl-&gt;_tpl_vars[$this-&gt;blocks[$this-&gt;index]], array(&amp;$this, 'reOrder'));
		}
	}

	protected function reOrder($a, $b)
	{
		if ($a['weight'] == $b['weight'])
		{
			return 0;
		}
		return $a['weight'] &gt; $b['weight'] ? 1 : -1;
	}
}

?&gt;
</pre>

<p>なお、このプリロードはしゃのさんの<a href="http://petitoops.com/modules/chalog/?action=BlogView&id=392">nowプリロード</a>を参考にさせていただきました。</p>]]></description>
<pubDate>Mon, 25 Jan 2010 17:30:10 +0900</pubDate>
<guid>http://suin.asia/2010/01/25/preload_block</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
<category domain="http://suin.asia/tag/Tips">Tips</category>
</item>
<item>
<title>Searchモジュールに転送するpreload</title>
<link>http://suin.asia/2010/01/24/preload_for_search_module</link>
<description><![CDATA[<a href="http://dl.dropbox.com/u/949822/Downloads/SearchModuleRedirecter.class.php" class="download">ダウンロード</a>
<p>ながらくメンテナンスしていない<a href="http://suin.asia/2007/12/05/search">XOOPS検索モジュール</a>ですが、XOOPS Cube Legacyでも動作するようです。このモジュールは、/search.phpの検索機能(グローバルサーチという)を乗っ取り、より充実した検索機能を実現すべくXOOPS2向けに作られたモジュールです。search.phpを乗っ取るさい、XOOPS2ではsearch.phpを直接書き換える手続きが必要でした。一方、XOOPS Cube Legacyでは、preloadを置くだけで乗っ取りが完了します。XOOPS Cube LegacyでもXOOPS検索モジュールを使っている方はどうぞpreloadをダウンロードしてお使い下さい。</p>
<p>ちなみに、XOOPS Cubeのグローバルサーチを乗っ取りたい人は、このプリロードが参考になるかと思います。</p>
<pre name="code" class="php">&lt;?php
/**
 *
 * @package    SearchModuleRedirecter
 * @author     Hidehito NOZAWA aka Suin &lt;http://suin.asia/&gt;
 * @copyright  2009 Hidehito NOZAWA
 * @license    http://www.gnu.org/licenses/gpl-2.0.html GNU GPL v2.0
 *
 */

if ( !defined('XOOPS_ROOT_PATH') ) exit;

class SearchModuleRedirecter extends XCube_ActionFilter
{
        var $searchDirname = 'search';

        function preBlockFilter()
        {
                $this-&gt;mRoot-&gt;mDelegateManager-&gt;add('Legacypage.Search.Access', array($this, 'redirect'), XCUBE_DELEGATE_PRIORITY_FIRST);
        }

        function redirect()
        {
                if ( file_exists(XOOPS_ROOT_PATH.'/modules/'.$this-&gt;searchDirname.'/index.php') )
                {
                        $moduleHandler =&amp; xoops_gethandler('module');
                        $moduleObj =&amp; $moduleHandler-&gt;getByDirname($this-&gt;searchDirname);
                        if ( $moduleObj-&gt;getVar('isactive') == 1 )
                        {
                                header('Location: '.XOOPS_URL.'/modules/'.$this-&gt;searchDirnam.'/index.php?'.$_SERVER['QUERY_STRING']);
                                die;
                        }
                }
        }
}

?&gt;</pre>]]></description>
<pubDate>Sun, 24 Jan 2010 16:48:47 +0900</pubDate>
<guid>http://suin.asia/2010/01/24/preload_for_search_module</guid>
<category domain="http://suin.asia/tag/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89">ダウンロード</category>
<category domain="http://suin.asia/tag/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89">プリロード</category>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/saerch">saerch</category>
</item>
</channel>
</rss>