如何从joomla 1.6 / 2.5中的已禁用/尚未激活的插件中获取一些参数?
$module = JPluginHelper::getPlugin('system','myplugin');
$moduleParams = new JParameter($module->params);
$val = $moduleParams->get("key");
这个方法不起作用,因为我需要在一个元素JFormField生成器中使用。
感谢您的帮助!
答案 0 :(得分:1)
使用JPluginHelper::getPlugin
,只能访问已启用的插件,因此这里是直接访问数据库的代码。
// Build query
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query
->select( 'params' )
->from( '#__extensions' )
->where( 'type = ' . $db->q('plugin') )
->where( 'folder = ' . $db->q('authentication') ) // Plugin type
->where( 'element = ' . $db->q('gmail') ) // Plugin element
;
// Execute query
$db->setQuery($query);
try
{
$result = $db->loadResult();
}
catch (RuntimeException $e)
{
return false;
}
// Parse parameters
if (!empty($result))
{
$params = new JRegistry($result);
$val = $params->get('key', 'defaultValue');
}
您可以将查询结果存储在JFormField对象中,以便在案例字段多次可用时保存数据库查询。
protected $results = null;
答案 1 :(得分:0)
也许您可能想尝试一下:
// Get plugin parameters
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('`params`')
->from ('`#__extensions`')
->where ("`type` = 'plugin'")
->where ("`folder` = 'system'")
->where ("`element` = 'myplugin'");
$db->setQuery($query);
$res = json_decode($db->loadResult(), true);
$val = $res['key'];
答案 2 :(得分:0)
我自己找到答案。
$data = null;
foreach ((array) $this->form as $k => $v) {
if($val instanceof JRegistry){
$data = &$v;
break;
}
}
$data = $data->toArray();
$val = $data['params']['key'];
谢谢!再见!