如何从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