$modversion['license']があります。しかし、実質的には、XOOPSのモジュールが暗黙のうちにGPL2にライセンシングしています。
これは妙だな、と思って調べてみたら、特殊なケースを覗いて、モジュールのライセンスはXOOPS2に引っ張られてGPL2にしなければならないようです。GPL2では、「プログラム」の派生物(二次的著作物)はGPL2でなければならないと定めています。(GPL3でもだめ。)
いや、ちょっとまてよ。モジュールって別にXOOPSの派生物じゃないじゃん!と思ったのですが、これがどうもGPL2ではモジュールを派生物と捉えるのが妥当のようです。どうしてこうなるかというと、GPL2ではソースコードをつぎのように捉えているからです。
ある実行形式の著作物にとって完全なソースコード とは、それが含むモジュールすべてのソースコード全部に加え、関連するイン ターフェース定義ファイルのすべてとライブラリのコンパイルやインストール を制御するために使われるスクリプトをも加えたものを意味する。 GNU 一般公衆利用許諾契約書
どういうことかというと、「実行時に読み込んでいるライブラリもそのプログラムの一部です」ということ。XOOPSのモジュールの場合、require '../../mainfile.php';を行うので、その時点でXOOPS2のGPL汚染が始まります。現にGPLのFAQで次のようなことが述べられています。
ライブラリが(LGPLではなく)GPLの下で公開されている場合、そのライブラリを利用するプログラムにはGPLが適用されていなければならないのでしょうか?
はい。なぜなら、実際に実行されるプログラムはライブラリを含んでいるから です。
GNU GPLに関して良く聞かれる質問
GPLの下で公開されていたプログラムがプラグインを使うとして、プラグインのライセンスにはどのような条件がありますか?
それはプログラムがどのようにプラグインを呼び出すかに依ります。プログラ ムがforkやexecでプラグインを呼び出すならば、プラグインは別のプログラム であり、メインプログラムのライセンスはそれらにはなんの条件も課しません。
もしプログラムがプラグインと動的にリンクされており、お互いにファンクショ ンコールを使ってデータ構造を共有している場合、それらは単一のプログラム を形成していると見なされますので、プラグインはメインプログラムの拡張部 分として扱われなければなりません。すなわち、それらはGPLかGPLと矛盾しな いフリーソフトウェアライセンスの下で公開されなければならないということ です。
プログラムがプラグインと動的にリンクされているが、それらの間のコミュニ ケーションはいくつかのオプションとともにプラグインの「main」関数を呼び 出して返値を待つだけという場合は、境界線上で微妙なケースとなります。
GNU GPLに関して良く聞かれる質問
このFAQが意味するのは、モジュールがXOOPSのライブラリ(例えば、XoopsTpl, XoopsObject, XoopsUserなど)を使う限り、別個に配布しようが、モジュールはGPL2になるということです。動的にライブラリを使うか場合、GPLは感染しない、なんという主張もありましたが、実際にライブラリを使うのに動的か静的かでGPLの制約が変わるというのも変な話です。
しかし、まったくXOOPSのライブラリに依存せず、なおかつ、XOOPSなしでも完全な実行ができるモジュールであれば、GPL2を名乗る必要もありません。それはGPLのFAQを隅々読みつくせば、このことを暗示する記述が見られます。しかし、そのようなモジュールはXOOPSと互換するようなライブラリを独自で開発するか、単純な機能しかもたないモジュール(例えば、index.phpでphpinfo()だけを出すモジュール)に限られると考えられます。あくまで、理論上可能という話です。XOOPS専用モジュールである限り、GPL汚染からは逃れられそうにありません。
XOOPS Cubeは修正BSDライセンスでリリースされていると聞きます。では、縛りのゆるい修正BSD版XOOPS Cube用にモジュールをリリースすれば、GPL汚染から逃れることができるでしょうか?
そもそも、XOOPS Cubeが修正BSDライセンスだと勘違いしている人がいるように思います。
XOOPS Cube Legacy は、 Cube コアのモジュールのひとつです。当プロジェクトが新作した Cube コアと、 XOOPS2 JP の後継版として働く Legacy の二つが手を繋いで、 XOOPS Cube Legacy (以下XCL)が動作します。XCL は、 ”XOOPS Cube でもあり、 XOOPS2 JP の後継アプリケーションでもある” という、とてもユニークな CMS です。
XOOPS Cube Legacy の真実……?
では、XOOPS Cubeのどこが修正BSDライセンスかというと、XOOPS Cube Coreです。これはXCLでいうところの、XOOPS_ROOT/core/フォルダのみを差します。xoopscube.jpにはXOOPS Cube Coreのみが修正BSDライセンスとの旨を誤解なく書いています。
XOOPS Cube Core
XOOPS Cube Coreは修正BSDライセンスを採用しています。修正BSDライセンスは、元のBSDライセンスから広告条項の部分を削除したものです。
ライセンス
[修正 2010/03/07]正確には、XOOPS CubeとXOOPS Cube Coreは同じものを差します。したがって、XOOPS Cubeは修正BSDライセンスということになります。なお、XOOPS CubeとXOOPS Cube Legacyはライセンスが異なります。XOOPS Cubeは修正BSDライセンス、XOOPS Cube LegacyはGPL2ライセンスです。修正BSDライセンスのXOOPS Cubeというのは、ここで配布されているものです。
coreだけでモジュールを作ればライセンスはGPLに限られません。ところが、coreだけでは通常のモジュールを作れないのが現実です。つまり、XOOPS CubeであってもXCLであっても、GPL2が飛び火してしまうのは避けられないことのようです。
[補足 2010/03/07]minahitoさんによると、「XCコアモジュール(Legacy Base非依存の、コアのサブシステムを差し替えるもの)は修正BSDで出せますよ。」とのことなので、Legacyから独立したベースモジュールの場合、GPL汚染は起こりません。
テーマはモジュールと異なり、CC(クリエティブ・コモンズ)で公開されていることがあります。どうも、テーマはモジュールとは事情が異なるようです。それは、ひとつの考えとして、テーマがそれだけで完結している点が挙げられると思います。
テーマはSmartyに依存していますが、Smarty自体はLGPLです。LGPLは動的にライブラリを使う場合は、GPLやLGPLの制約を受けないというライセンスです。したがって、Smartyに依存するだけでは、GPLの感染の問題はありません。
しかし、XOOPSのSmartyプラグイン(xoops_date_format, xoops_userなど)を使ったテーマを配布する場合は、テーマもGPL2ライセンスにする必要がありそうです。なぜなら、XOOPSのSmartyプラグインはGPLだからです。GPLでは、動的にプラグインを使用する場合でも、その著作物をGPLにライセンシングすることを要求します。
Smartyにもとから入っているプラグインだけで作ったテーマなら、GPLでなくてもいいといったところだと思います。ただし、Smarty変数がXOOPSなしでは定義されない点を考えると、XOOPSに依存しているということになり、GPL2適用の義務が生じるかもしれません。この点で、テーマはGPLと非互換のCCで配布するのは、グレーゾーンでもあります。
[補足 2010/03/07]minahitoさんによると、「あとテーマは、コードとみるかリソースとみるかで解釈が全く変わります。パイプラインがテーマをコンパイルし、結合可状態へ導いて初めてリンクされるので、GPLとコンフリクトしないライセンスなら(コンフリクトするとXCLで使用不可)選べると思います。」とのことです。リソース、つまり「データ」としてテーマを見る場合はGPL以外の選択肢もあるということ。(minahitoさんはGPLと互換性のあるライセンスならOKとしていますが、GPL汚染を受けていないと主張できる独立したテーマなら、非互換のライセンスで配布も可能なはずです。なぜなら、結合の制約は「複製・頒布・改変」のときだけで、実行するときにGPL非互換と結合することは制限していないはず。)ただし、コードかリソースかも解釈に依存していて、もしテーマがリソースだと判断できない場合は、GPL汚染を受けるかもしれないということです。たとえば、ひとつのテーマパッケージにXOOPS依存のPHPコードが混じっている場合など。詳しくはFAQに書いてあります。
]]>Smarty 3 APIはシンタクスが新しくなりました。Smarty2のシンタクスはサポートしますが、将来サポートが保証されない可能性があります。
Smarty3はPHP5のみ対応します。PHP4では動きません。
{php}タグはデフォルトでは無効になりました。{php}タグを使うことは非推奨です。$smarty->allow_php_tag=true;で{php}タグを有効にすることができます。
しかし、複数の{php}タグにまたがるPHPコードは、これ以上は動かないでしょう。
ホワイトスペースに囲まれたデリミタは今後、Smartyのタグとして扱われません。したがって、{ foo }はタグとしてコンパイルされません。この場合、コンパイルするには{foo}とする必要があります。この変更により、{literal}が必要とならないので、Javascript/CSSが扱いやすくなります。なお、$smarty->auto_literal = false;でこの設定を無効化できます。
Smarty2は、パラメータにクォートしていない文字列が現れたとき、大雑把で曖昧な面がありました。一方、Smarty3はより厳密です。といっても、特別な文字(A-Za-z0-9_以外)を含まない限り、今でもクォーテーションなしの文字列を使うことはできます。
例えば、ファイル名の文字列はクォートしなければなりません。
{include file='path/foo.tpl'}
Smarty3は初期化するのに、__constructメソッドを使います。Smartyクラスを拡張するとき、もし、小クラスが独自のコンストラクタを定義すると、Smartyのコンストラクタは実行されません。Smartyのコンストラクタを実行する必要があれば、小クラスのコンストラクタでparent::__construct()を実行してください。
class MySmarty extends Smarty {
function __construct() {
parent::__construct();
// your initialization code goes here
}
}
Smarty3はspl_autoload_registerで独自のオートローダーを登録します。もしあなたのコード中に__autoload関数が存在するのなら、 それを明示的に__autoloadスタックに登録しなければなりません。 詳しくは、http://us3.php.net/manual/en/function.spl-autoload-register.php を御覧下さい。
Smarty3ではPHP spl_autoloaderをサポートしています。このオートローダーは、ファイル名を小文字にすることを要求しています。したがって、Smartyプラグインのファイル名は小文字である必要があります。Smarty2では、大文字小文字が混在したファイル名でも動作しました。
Smarty2では特別なSmarty変数(例えば、$smarty.section...や$smarty.foreach)がグローバルスコープでした。もし、同じ名前のループがサブテンプレートにあると、親テンプレートの変数を上書きしていまします。
Smarty3では特別なSmarty変数は、ループがあるテンプレートのローカルスコープになります。もし、親テンプレートの変数をサブテンプレートに渡す場合は、パラメータにする必要があります。
{include file='path/foo.tpl' index=$smarty.section.foo.index}
Smarty3はutf-8をデフォルトcharsetとして、定数SMARTY_RESOURCE_CHAR_SETに定義します。これは、escapeのような修飾子のデフォルトcharsetとして使われるようになります。もし、utf-8以外のcharsetをテンプレートで使う場合、適宜にSMARTY_RESOURCE_CHAR_SETを定義することに注意してください。そうしなければ、なにも出力されない可能性があります。
テンプレートのソースに予期される改行の出力を得るために、{if},{else},{elseif},{/if}タグのコンパイル後コードに¥nが追加されました。もし、{if}タグなどが行末にある場合、HTMLの出力結果が改行されます。
パスワードは定期的に変更するほうがより安全と言われています。PasswordLimitterは、XOOPSのユーザのパスワードに期限を設け、期限がすぎたユーザに対しては、ログイン時にパスワード変更を促すメッセージを表示します。
1.1とばしてしまった…orz
パスワードは定期的に変更するほうがより安全と言われています。PasswordLimitterは、XOOPSのユーザのパスワードに期限を設け、期限がすぎたユーザに対しては、ログイン時にパスワード変更を促すメッセージを表示します。
NateOnは韓国で最もシェアのあるインスタントメッセンジャーです。Windowsであれば、NateOnをインストールすることができます。しかし、韓国語のソフトであるためか、日本語Windowsでは文字化けを起こすことがしばしばあります。また、NateOnは基本的に韓国語のインターフェイスになるので、韓国語に不慣れな人には操作が難しい面もあります。
そこで、NateOnを日本語にきちんと対応してあるPidginで使うことをおすすめします。PidginでNateOnを使うためには、以下のファイルをダウンロードします。
ダウンロードしてきたPidgin本体をダブルクリックしてインストールします。インストールは手順にしたがって行います。
Pidginを起動している場合は一端終了してください。pidgin-nateon_svn140.zipを解凍します。解凍すると、locale, pixmaps, pluginsの3つのフォルダが現れます。それらを、C:\Program Files\Pidginにコピーします。上書きが必要な場合は、上書きします。
これで、NateOnがPidginで使えるようになったはずです。Pidginを起動して、NateOnが使えるか確認します。NateOnのアカウントの追加は、以下の手順で行います。
このままだと、ハングルが文字化けしています。Pidginを立ち上げてみると、「□」がたくさん並んでいるのがわかると思います。これは、Pidginのフォントがハングルに対応していないためです。
そこで、ハングル対応のフォントに置き換えます。編集するさいには、Emeditorなどのテキストエディタを使ってください。
gtk-font-name = "XXXX"となっている部分を
gtk-font-name = "Arial Unicode MS 10"に変更します。さらに、
style "user-font"
{
font_name="Arial Unicode MS 10"
}
widget_class "*" style "user-font"
を追加します。
なお、Arial Unicode MSは様々な文字に対応したユニバーサルフォントです。あまり、綺麗なフォントとは言えませんが、とりあえず読めることが重要なので、Arial Unicode MSを使います。
Pidgin用プラグイン開発者さん http://blog.haz3.com/205(韓国語)
]]>SuinDebugプリロードは、たったひとつのファイルで、あなたのXOOPS Cube Legacyでのデバッグをよりスムースにするためのサイトプリロードです。
HD画質なので、フルスクリーンで見るのをおすすめします。
SuinDebugを公開サイトにアップロードしないでください。あくまで、このプリロードは非公開の開発環境で使用することを想定しています。たとえば、VMwareやXAMPP・MAMPで構築されたローカル開発環境。なお、サイトを公開する場合は、SuinDebugを削除してください。
SuinDebug is a site preload. It will help your debugging when you develop modules in XOOPS Cube Legacy.
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.
]]>www.justmyshop.comにアクセスして、ログインします。
「お客さまカウンター」を開きます。
「定額利用サービス」の「契約内容の確認・解約」を開きます。
内容を確認して「解約する」をクリックします。/p>
さらに、「解約する(解約の受付)」をクリックします。
解約完了画面が出ます。以上です。
ATOKさん、お世話になりました。いままでありがとう。Googleさんは、アップデートもいちいち出たりしないで良い人です^-^。
]]>次のプラグインは、単に文字色を赤くするだけのものです。mypluginがプラグイン名です。$(this).css('color', 'red');の部分以外がプラグインの骨組みとなり、この部分だけ差し替えれば、全く別のプラグインを作ることができます。
(function($){
$.fn.myplugin = function() {
return this.each(function() {
$(this).css('color', 'red');
});
};
})(jQuery);
このプラグインの動作デモ
]]>
この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。
そして下がそのコード。
require "../../../mainfile.php";
$mid = $xoopsModule->mid();
if ( defined('XOOPS_CUBE_LEGACY') )
{
$url = sprintf('%s/modules/legacy/admin/index.php?action=PreferenceEdit&confmod_id=%u', XOOPS_URL, $mid);
}
else
{
$url = sprintf('%s/modules/system/admin.php?fct=preferences&op=showmod&mod=%u', XOOPS_URL, $mid);
}
header('Location: '.$url);
]]>その前に、ここで紹介するTipsは、管理画面でカスタムブロックを作るより、はるかに回りくどくPHPの知識が必要な点を注意しておきます。なので、特殊な機能や要件を必要としない限り、カスタムブロックは管理画面で作るべきです。
まず、XOOPS Cubeのプリロードでカスタムブロックを作るメリットはいくつかあります。
特にこの中でも、ファイルとして扱えるメリットは大きいです。たとえば、開発環境で一定の変数を出力したりとデバッグ用途にブロックをプリロードで実装します。あとは、公開するときにプリロードを削除するだけで、データベースを汚したりすることは一切ありません。管理画面で操作するブロックだと、ついつい消し忘れ・消し損ないなんてこともありますが、プリロードだとファイルを確実に削除すれば、消し損なうこともありません。
ダウンロード次に、プリロードのソースを紹介します。16行目の$indexが、ブロックを表示する位置になります。l, r, cl, cc, crの順に、左・右・中央左・中央中・中央右を意味します。
18行目から22行目はブロックの表示に関する設定です。nameはブロック名で、アルファベット英数ですきな名前を指定します。titleはブロックの題目で、ブロックの上部に表示されます。contentはブロックの内容で、HTMLなどで書くことができます。weightはブロックの並び順で、数値が小さいほど上に、数値が多きほど下にブロックが表示されます。
<?php
/**
* A simple description for this script
*
* PHP Version 5.2.4 or Upper version
*
* @package PreloadBlock
* @author Hidehito NOZAWA aka Suin <http://suin.asia/>
* @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' => -1,
'name' => 'preload_block',
'title' => 'プリロードブロック',
'content' => '<i>ブロックの内容</i>',
'weight' => -1, // 並び順
);
protected $indexes = array(
'l' => 0,
'r' => 1,
'cl' => 3,
'cr' => 4,
'cc' => 5
);
protected $blocks = array(
'l' => 'xoops_lblocks',
'r' => 'xoops_rblocks',
'cl' => 'xoops_clblocks',
'cr' => 'xoops_crblocks',
'cc' => 'xoops_ccblocks'
);
public function postFilter()
{
if ( $this->mController->_mStrategy->mStatusFlag != LEGACY_CONTROLLER_STATE_PUBLIC )
{
return;
}
$this->mRoot->mDelegateManager->add('Legacy_RenderSystem.BeginRender', array(&$this, 'beginRender'));
$this->mRoot->mContext->mAttributes['legacy_BlockShowFlags'][$this->indexes[$this->index]] = true;
$this->mRoot->mContext->mAttributes['legacy_BlockContents'][$this->indexes[$this->index]][] = $this->block;
}
protected function beginRender(&$tpl)
{
if ( !empty($tpl->_tpl_vars['isFileTheme']) )
{
uasort($tpl->_tpl_vars[$this->blocks[$this->index]], array(&$this, 'reOrder'));
}
}
protected function reOrder($a, $b)
{
if ($a['weight'] == $b['weight'])
{
return 0;
}
return $a['weight'] > $b['weight'] ? 1 : -1;
}
}
?>
なお、このプリロードはしゃのさんのnowプリロードを参考にさせていただきました。
]]>ながらくメンテナンスしていないXOOPS検索モジュールですが、XOOPS Cube Legacyでも動作するようです。このモジュールは、/search.phpの検索機能(グローバルサーチという)を乗っ取り、より充実した検索機能を実現すべくXOOPS2向けに作られたモジュールです。search.phpを乗っ取るさい、XOOPS2ではsearch.phpを直接書き換える手続きが必要でした。一方、XOOPS Cube Legacyでは、preloadを置くだけで乗っ取りが完了します。XOOPS Cube LegacyでもXOOPS検索モジュールを使っている方はどうぞpreloadをダウンロードしてお使い下さい。
ちなみに、XOOPS Cubeのグローバルサーチを乗っ取りたい人は、このプリロードが参考になるかと思います。
<?php
/**
*
* @package SearchModuleRedirecter
* @author Hidehito NOZAWA aka Suin <http://suin.asia/>
* @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->mRoot->mDelegateManager->add('Legacypage.Search.Access', array($this, 'redirect'), XCUBE_DELEGATE_PRIORITY_FIRST);
}
function redirect()
{
if ( file_exists(XOOPS_ROOT_PATH.'/modules/'.$this->searchDirname.'/index.php') )
{
$moduleHandler =& xoops_gethandler('module');
$moduleObj =& $moduleHandler->getByDirname($this->searchDirname);
if ( $moduleObj->getVar('isactive') == 1 )
{
header('Location: '.XOOPS_URL.'/modules/'.$this->searchDirnam.'/index.php?'.$_SERVER['QUERY_STRING']);
die;
}
}
}
}
?>]]>新年あけましておめでとうございます。ということで、新年は親戚と会う機会が多いのですが、子どもがいるいとこが多くなったと実感するこのごろです。子どもの学年は知ってるけど、何歳だっけ?、簡単に調べられたらなあ、と思ったのがサービス提供の切っ掛けになりました。
学年と年齢くらいなら、対応表を作っておけばよさそうですが、あえて問答式のサービスにしました。なんでそうなったかですが、なんさいナビがGoogleの検索結果に上がることで、Googleで「中1 年齢」や「小学2年生 何歳」などと直感的に検索するだけで、検索結果から年齢が分かるような仕組みにしたかったからです。やってみると分かりますが、意外と上のキーワードで年齢をすぐに知れるページは見つかりません。
検索窓に「小4」などのキーワードを入れることで、年齢を調べられます。調べた結果は、一定のURLになり、Googleボットがクロールできる形になります。
今のところ、学年情報と年齢情報が帰ってくるだけです。今後は、生まれた年(西暦・和暦)の情報を表示したり、Wikipediaに関連づけたりできたらいいかもと思ってます。
]]>Windowsの環境によっては、上の4の直後に「ランタイムエラーが発生しました。デバッグしますか」というエラーが出ることがあります。このエラーが起こると、ステップ5で「次のスライド」をクリックしても、スライドが移り変わらなくなってしまいます。
これは、Internet Explorer 7がProducerに対応していないためです。Internet Explorer 7を一旦削除し、Internet Explorer 6を入れなすことで、ランタイムエラーを起こさないようにできます。
]]>VMwareでWindows XPを使うのはどういう感じかというと、まるでWindows XPがMacのアプリの1つのように動かすというイメージだ。 したがって、次のような利点がある。
気になるのはMacBook AirでVMwareが実用に堪えるかだ。 MacBook Airのスペックは次のとおりであるが、 同時に2つのOSを動かすには若干不安がのこる。
MacBook Air + VMware Fusionを使い始めて半年くらいになる。 結論から言うと、VMware Fusion + Windows XPは実用範囲内である。 Office Word 2003を起動して文章を作成したり、 Internet Explorerでネットサーフィンする程度はまったく問題なかった。
しかし、次のような問題点は、一工夫必要だ。
Windows XPを再開するまでの時間を短縮するのは、あまり効果的な方法がないと思う。 Windowsをサスペンドするときに、不要なソフトは終了しておくなどすると、若干早くなる。
Mac側で起動中のソフトはできるだけ少なくすると、VMwareも軽く動作する。 私の場合、VMwareで長時間作業する場合は、一旦Macを再起動するようにしている。 起動直後にVMwareを実行すると、すいすいと動く。
余談だが、MacBook AirにはDVDドライブがないので、Windowsをインストールする際には外付けのDVDドライブが必要になる。
Macユーザの弱点は、まわりがWindowsユーザという点だと思う。 急にWindows環境が必要になることは しばしばある。 そんなときは、VMwareをインストールしておくと便利だ。
]]>機能の詳細は、Shiori 1.00のページで紹介しています。
上のように管理画面でユーザがブックマークしたページの統計を見られるようにしました。この機能は、Shiori 0.xにあった機能ですが、1.xを開発するときに削除しました。しかし、統計が便利という意見をいただいたので、復活することにしました。たぶん、ソート機能が充実したおかげで、0.xの統計より若干便利になっていると思います。(0.xの統計がどんなだったか思い出せないw)
サーバ上のshioriフォルダを削除したあと、1.02のshioriをアップロードしてください。その後、モジュール管理でshioriモジュールの「アップデート」を実行してください。
]]>
Koinsモジュールは、パーツを選んでいくとモジュールアイコンを作ることができます。 特別な画像編集ソフトがないモジュール開発者もアイコンを手軽に作ることができます。 パーツになる素材画像を追加すると、作れるアイコンのバリエーションを増やすことも可能です。
WindowsやMacなどの書き込み権限が自由なローカル環境では、作成したアイコンを直接モジュールに反映することができます。 外部モジュール反映機能は管理者のみが使用できます。
| PHPバージョン | 5.2.4 以上 |
| GD 必須 | |
| XOOPS | XOOPS Cube 2.1.6 / XOOPS 2.0.16a |
| 文字コード | UTF-8 / EUC-JP |
Koinsは素材パーツを自由に追加することができます。
| プレート | /modules/koins/images/plates |
| マーク | /modules/koins/images/icons |
| フォント | /modules/koins/images/letters |
128x28のpng画像を追加します。左側28x28の領域にマークが合成されてもいいような画像にしてください。
28x28のpng画像を追加します。図形の色は基本的に白です。背景色は透過にしてください。
高さ7pxの画像を追加します。フォント画像はKoins_Class_IconGeneratorクラスの_setupLettersImgメソッドに対応関係をマッピングしています。
]]>Shioriモジュールは、ユーザが個人のブックマーク帳を所有でき、サイト内のあらゆるページをブックマークできるようにするモジュールです。 読みかけのページ、毎日チェックする掲示板、いつか役立つかもしれない記事などを見失わないようにすることを目的に作られました。
ワンクリックブックマークとは、星アイコンをクリックするだけで、そのページをShioriにブックマークできる機能です。 この機能により、ユーザは少ない手間でページをブックマークすることができ、使い勝手が向上します。
解説動画も新しくしてみました。
| PHPバージョン | 5.2.4 以上 |
| mbstring 必須 | |
| XOOPS | XOOPS Cube 2.1.6~ / XOOPS 2.0.16aJP~ |
| 文字コード | UTF-8(推奨) / EUC-JP |
shioriフォルダごと上書きしてください。その後、モジュールアップデートを行ってください。
/html/modules/shiori/削除し、1.01に置き換えて下さい。その後、モジュールアップデートを実行してください。
1.01は0.51とは全く違う内容になっています。互換性を完全に保証するわけではありません。サーバーにアップロード前に必ずローカルでテストしてください。
]]>Shioriモジュールは、ユーザが個人のブックマーク帳を所有でき、サイト内のあらゆるページをブックマークできるようにするモジュールです。 読みかけのページ、毎日チェックする掲示板、いつか役立つかもしれない記事などを見失わないようにすることを目的に作られました。
ワンクリックブックマークとは、星アイコンをクリックするだけで、そのページをShioriにブックマークできる機能です。 この機能により、ユーザは少ない手間でページをブックマークすることができ、使い勝手が向上します。
| PHPバージョン | 5.2.4 以上 |
| mbstring 必須 | |
| XOOPS | XOOPS Cube 2.1.6 以上 |
| 文字コード | UTF-8 |
/html/modules/shiori/削除し、1.00に置き換えて下さい。その後、モジュールアップデートを実行してください。
1.00は0.51とは全く違う内容になっています。互換性を完全に保証するわけではありません。サーバーにアップロード前に必ずローカルでテストしてください。
]]>