$manager->notify( 'PrePluginOptionsEdit', array( 'context' => 'global', 'plugid' => $pid, 'options'=>&$aOptions ) );
$manager->notify( 'PrePluginOptionsEdit', array( 'context' => $context, 'contextid' => $contextid, 'options'=>&$aOptions ) );
動作確認用プラグインNP_PluginOptionsExtras.php
<?php class NP_PluginOptionsExtras extends NucleusPlugin { function getName() { return 'PluginOptionsExtras'; } function getAuthor() { return 'nakahara21'; } function getURL() { return ''; } function getVersion() { return '0.0'; } function getDescription() { return 'samples for PluginOptions Extras'; } function install() { $this->createOption('g_extra','BlogOption', 'text', ''); $this->createBlogOption('b_extra','BlogOption', 'text', ''); $this->createCategoryOption('c_extra','CategoryOption', 'text', ''); $this->createMemberOption('m_extra','MemberOption', 'text', ''); $this->createItemOption('i_extra','ItemOption', 'text', ''); } function supportsFeature($what){ switch ($what){ case 'SqlTablePrefix': return 1; default: return 0; } } function getEventList() { return array('PrePluginOptionsEdit'); } function event_PrePluginOptionsEdit($data) { $extraString = '<div style="color:red;">*Input '.$data['context'].' values for NP_PluginOptionsExtras</div>'; $context = $data['context']; $optionNamesForExtra = array( 'global' => 'g_extra', 'category' => 'c_extra', 'item' => 'i_extra', 'blog' => 'b_extra', 'member' => 'm_extra' ); $oid = $this->_getOID($context, $optionNamesForExtra[$context]); switch ($context){ case 'global': $data['options'][$oid]['extra'] = $extraString; break; case 'category': case 'item': case 'blog': case 'member': for($i=0;$i<count($data['options']);$i++){ if($data['options'][$i]['oid'] == $oid && $data['options'][$i]['name'] == $optionNamesForExtra[$context]){ $data['options'][$i]['extra'] = $extraString; } } break; default: break; } } } ?>
各オプション入力エリアに赤字でメッセージを出力する例。
メッセージに限らず、これを応用すれば、javascriptによる入力支援や入力規則の制限などにも使用できます。