0

我如何从 joomla 1.6/2.5 中禁用/尚未激活的插件中获取一些参数?

$module = JPluginHelper::getPlugin('system','myplugin');
$moduleParams = new JParameter($module->params);
$val = $moduleParams->get("key");

此方法不起作用,因为我需要在元素 JFormField 生成器中使用。

感谢帮助!

4

3 回答 3

2

由于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;
于 2013-06-11T11:28:47.347 回答
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'];
于 2013-06-11T12:06:43.307 回答
0

只能自己找答案了。

$data = null;
foreach ((array) $this->form as $k => $v) {
  if($val instanceof JRegistry){
    $data = &$v;
    break;
  }
}
$data = $data->toArray();
$val = $data['params']['key'];

谢谢!再见!

于 2013-06-11T22:53:15.103 回答