如何从Joomla获取组件版本?

如何从Joomla获取组件版本?,joomla,joomla2.5,joomla-extensions,Joomla,Joomla2.5,Joomla Extensions,是否有某种方法可以通过名称获取组件版本?我尝试了很多例子,但没有找到任何有效的。像jcomponentThelper::getParams('com_mycomponent')->get('version')这样的东西不起作用,因为它从jos_extensions.params行检索值。“我的组件”版本仅在jos\u扩展中。清单\u缓存行…您可以使用以下内容: Joomla 2.5: $parser = JFactory::getXMLParser('Simple'); $xml = JPATH

是否有某种方法可以通过名称获取组件版本?我尝试了很多例子,但没有找到任何有效的。像
jcomponentThelper::getParams('com_mycomponent')->get('version')
这样的东西不起作用,因为它从
jos_extensions.params
行检索值。“我的组件”版本仅在
jos\u扩展中。清单\u缓存
行…

您可以使用以下内容:

Joomla 2.5:

$parser = JFactory::getXMLParser('Simple');
$xml = JPATH_SITE .'/components/com_wrapper/wrapper.xml';
$parser->loadFile($xml);
$doc = $parser->document;
$element = $doc->getElementByPath('version');
$version = $element->data();

echo $version;
Joomla 3.x(平台13.3及以下)


Joomla 3.2+:

$parser = JFactory::getXMLParser('Simple');
$xml = JPATH_SITE .'/components/com_wrapper/wrapper.xml';
$parser->loadFile($xml);
$doc = $parser->document;
$element = $doc->getElementByPath('version');
$version = $element->data();

echo $version;
getXML
在回答此问题2周后被弃用。相反,使用


显然,这是包装器组件的一个示例,因此请更改路径以满足您的需要


希望这有帮助

您可以使用以下功能:

Joomla 2.5:

$parser = JFactory::getXMLParser('Simple');
$xml = JPATH_SITE .'/components/com_wrapper/wrapper.xml';
$parser->loadFile($xml);
$doc = $parser->document;
$element = $doc->getElementByPath('version');
$version = $element->data();

echo $version;
Joomla 3.x(平台13.3及以下)


Joomla 3.2+:

$parser = JFactory::getXMLParser('Simple');
$xml = JPATH_SITE .'/components/com_wrapper/wrapper.xml';
$parser->loadFile($xml);
$doc = $parser->document;
$element = $doc->getElementByPath('version');
$version = $element->data();

echo $version;
getXML
在回答此问题2周后被弃用。相反,使用


显然,这是包装器组件的一个示例,因此请更改路径以满足您的需要


希望这对您有所帮助

如果您正在Joomla站点中查找所有组件的列表,您可以使用扩展管理器->管理并选择类型过滤器“组件”来查找它们。这将为您提供一个带有版本列的列表,其中显示所有组件的版本。
这是对您原始问题的回答,无需编码。

如果您要查找Joomla站点中所有组件的列表,您可以使用扩展管理器->管理并选择类型筛选器“组件”来查找它们。这将为您提供一个带有版本列的列表,其中显示所有组件的版本。
这是对您原始问题的回答,无需编码。

您好,我使用此函数根据元素从扩展表返回版本(我发现它比名称更可靠),但您可以轻松地用元素替换名称

我有一个插件,这个函数只需要元素($ext)来检查表中当前的扩展名

function extversion($ext) {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select('manifest_cache');
    $query->from($db->quoteName('#__extensions'));
    $query->where('element = "' . $ext . '"');
    $db->setQuery($query);

    $manifest = json_decode($db->loadResult(), true);
    return $manifest['version'];
}

您好,我使用此函数根据元素从extensions表返回版本(我发现它比name更可靠),但您可以轻松地用元素替换name

我有一个插件,这个函数只需要元素($ext)来检查表中当前的扩展名

function extversion($ext) {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select('manifest_cache');
    $query->from($db->quoteName('#__extensions'));
    $query->where('element = "' . $ext . '"');
    $db->setQuery($query);

    $manifest = json_decode($db->loadResult(), true);
    return $manifest['version'];
}

基于CoalaWeb的答案,但代码较少(框架中使用的代码较多):


基于CoalaWeb的答案,但代码较少(框架中使用的代码较多):

Joomla 1.5,2.5,3.X。 对于Joomla 1.5(com_ponent.XML)和2.5、3.X(_manifest.XML)版本,我们使用不同的XML文件。 使用:

Joomla 1.5,2.5,3.X。 对于Joomla 1.5(com_ponent.XML)和2.5、3.X(_manifest.XML)版本,我们使用不同的XML文件。 使用:


要充分利用Joomla API,请使用JComonentHelper、\Joomla\Registry\Registry和JTable类:

$component = \JComponentHelper::getComponent('com_myextension');
$extension = \JTable::getInstance('extension');
$extension->load($component->id);
$manifest = new \Joomla\Registry\Registry($extension->manifest_cache);

echo $manifest->get('version');

这主要适用于更新的Joomla 3.x版本;3.6+可能。

要充分利用Joomla API,请使用JComponentThelper、\Joomla\Registry\Registry和JTable类:

$component = \JComponentHelper::getComponent('com_myextension');
$extension = \JTable::getInstance('extension');
$extension->load($component->id);
$manifest = new \Joomla\Registry\Registry($extension->manifest_cache);

echo $manifest->get('version');

这主要适用于更新的Joomla 3.x版本;3.6+可能。

Joomla 3.2+:

$parser = JFactory::getXMLParser('Simple');
$xml = JPATH_SITE .'/components/com_wrapper/wrapper.xml';
$parser->loadFile($xml);
$doc = $parser->document;
$element = $doc->getElementByPath('version');
$version = $element->data();

echo $version;
由于不推荐使用getXML,您可以通过以下方式使用SimpleXML:

$xml = simplexml_load_file(JPATH_COMPONENT_ADMINISTRATOR . '/wrapper.xml');
$version = $xml->version;

Joomla 3.2+:

$parser = JFactory::getXMLParser('Simple');
$xml = JPATH_SITE .'/components/com_wrapper/wrapper.xml';
$parser->loadFile($xml);
$doc = $parser->document;
$element = $doc->getElementByPath('version');
$version = $element->data();

echo $version;
由于不推荐使用getXML,您可以通过以下方式使用SimpleXML:

$xml = simplexml_load_file(JPATH_COMPONENT_ADMINISTRATOR . '/wrapper.xml');
$version = $xml->version;

JPATH_站点应替换为JPATH_ADMINISTRATOR@Shakur-当
JPATH\u ADMINISTRATOR
时发生错误,这就是我没有使用它的原因。可能是因为我目前正在工作的子域上的wampserver上测试,但稍后我将使用您请求的更改进行正确测试。组件的ManuiTest文件存储在管理员/components/com_name/so此处需要JPATH_管理员2013年10月下旬实际上JPATH_站点应替换为JPATH_ADMINISTRATOR@Shakur-当
JPATH\u ADMINISTRATOR
时发生错误,这就是我没有使用它的原因。可能是因为我目前正在工作的子域上的wampserver上进行测试,但我稍后会进行测试正确处理您请求的更改。组件的Manuifest文件存储在administrator/components/com\u name/中,因此2013年10月底需要使用JPATH\u administrator