Как получить версию компонента из Joomla?

Как получить версию компонента из Joomla?

10.10.2013 02:17:43 Просмотров 45 Источник

Есть ли какой-то метод, чтобы получить версию компонентов по его имени? Я перепробовал много примеров, но не нашел ни одного, который бы работал. Такая вещь, как JComponentHelper::getParams('com_mycomponent')->get('version')не работает, поскольку он извлекает значения из jos_extensions.params строки. Моя версия компонентов находится только в jos_extensions.manifest_cache подряд...

У вопроса есть решение - Посмотреть?

Ответы - Как получить версию компонента из Joomla? / How to get component version from Joomla?

Является ответом!
Lodder

10.10.2013 02:45:21

Вы можете использовать следующее:

Джумла 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.х (платформа 13.3 и ниже)

$xml = JFactory::getXML(JPATH_SITE .'/components/com_wrapper/wrapper.xml');
$version = (string)$xml->version;

echo $version;

Joomla 3.2+:

getXMLбыл объявлен устаревшим по состоянию на 2 недели после этого ответа. Вместо этого используйте SimpleXML


Очевидно, что это пример для компонента-оболочки, поэтому измените пути на все, что соответствует вашим потребностям.

Надеюсь, это поможет

https://stackoverflow.com/questions/19293108/how-to-get-component-version-from-joomla/19293626#comment29198243_19293626
JPATH_SITE должен быть заменен на JPATH_ADMINISTRATOR
https://stackoverflow.com/questions/19293108/how-to-get-component-version-from-joomla/19293626#comment29198496_19293626
@Shakur-ошибка возникает, когда JPATH_ADMINISTRATOR, поэтому я не использовал его.
https://stackoverflow.com/questions/19293108/how-to-get-component-version-from-joomla/19293626#comment29199074_19293626
возможно, это связано с тем, что я в настоящее время тестирую wampserver на поддомене на работе, но я проверю позже должным образом с вашим запрошенным изменением.
https://stackoverflow.com/questions/19293108/how-to-get-component-version-from-joomla/19293626#comment29222307_19293626
Manuifest файлы компонентов хранятся в administrator / components/com_name / поэтому JPATH_ADMINISTRATOR нужен здесь
https://stackoverflow.com/questions/19293108/how-to-get-component-version-from-joomla/19293626#comment45435246_19293626
JFactory::getXml()также является устаревшим с июля 2012 года.....
https://stackoverflow.com/questions/19293108/how-to-get-component-version-from-joomla/19293626#comment45578895_19293626
конец октября 2013 года на самом деле
Phil Schaming

20.10.2013 12:00:59

Если вы ищете список всех компонентов на вашем сайте Joomla, вы можете найти их с помощью менеджера расширений - > управление и выберите тип фильтра "компоненты". Это даст вам список со столбцом версии, показывающим версии всех компонентов. Это ответ на ваш первоначальный вопрос без кодирования.

CoalaWeb

12.01.2015 04:49:02

Привет я использую эту функцию для возврата версий из таблицы расширений на основе элемента (я считаю его более надежным, чем имя), но вы можете легко заменить элемент на имя.

У меня есть это в плагине, и функция нуждается только в элементе ($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'];
}
fietserwin

02.03.2015 04:05:31

Основываясь на ответе CoalaWeb, но с меньшим количеством кода (больше кода используется из фреймворка):

/** @var JTableExtension $extension */
$extension = JTable::getInstance('extension');
$id = $extension->find(array('element' => $extension));
$extension->load($id);
$componentInfo = json_decode($extension->manifest_cache, true);

return $componentInfo['version'];
Ruslan Mavlyanov

23.01.2016 04:58:51

Joomla 1.5, 2.5, 3.Икс.

Мы используем разные XML файлы для Joomla 1.5 (com_ponent.XML) и для 2.5, 3.Х (_manifest.версия XML. Использование SimpleXML :

public static function getVbssoVersion() {
   $xml_path = JPATH_ADMINISTRATOR . '/components/com_ponent/';
   $xml_path .= (defined('JVER') && JVER == '1.5') ? 'com_ponent.xml' : '_manifest.xml';
   $xml_obj = new SimpleXMLElement(file_get_contents($xml_path));

   return strval($xml_obj->version); 
}
haydenyoung

23.10.2017 11:10:45

Чтобы в полной мере использовать в Joomla API используйте JComponentHelper, \для Joomla\реестр\реестр и 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');

Это относится в основном к более новым 3.x версии Joomla; 3.6+ вероятно.

pe7er

29.07.2019 06:41:28

Joomla 3.2+:

Поскольку getXML устарел, можно использовать SimpleXML следующим образом:

$xml = simplexml_load_file(JPATH_COMPONENT_ADMINISTRATOR . '/wrapper.xml');
$version = $xml->version;
Закрыть X