私はJoomlaにはあまり詳しくありませんが、インストールされているすべての拡張機能とそのバージョン番号を可能であればリストするスクリプトを作成する必要があります。私はすでにWordPress、TYPO3、Drupalでこれを実行しましたが、Joomlaでは、これまでに見たことから、これはお尻のかなり大きな痛みのようです:
->
<extension type="module" version="1.5.0" ...>
...
<version>2.0</version>
...
</extension>
それは何ですか? 8.5.1? 1.5.0? 2.0? -
Joomlaをまったく使用したことがないので、これはかなり混乱しますが、私の誤解かもしれません。
私が実際に知りたいことは、次のとおりです。フォルダ構造とその中のファイルに基づいて、インストールされているすべてのJoomla拡張機能とそのバージョンを取得する信頼できる方法はありますか?または、スクリプト(私の場合はPython)を通じてこの情報を取得する他の方法はありますか?
インストールされている拡張機能はすべて、データベースの#__extensions
テーブル。したがって、単純なデータベースクエリを実行して、名前とマニフェストキャッシュ(バージョンを含む)を取得できます。
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('name', 'manifest_cache')))
->from($db->quoteName('#__extensions'));
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $extension)
{
$decode = json_decode($extension->manifest_cache);
echo $extension->name . ' : ' . $decode->version . '<br>';
}
上記は、デフォルトのJoomla拡張機能を含む、すべてのプラグイン、コンポーネント、モジュール、テンプレート、ライブラリ、パッケージを取得することに注意してください。
もちろん、取得する拡張機能のタイプを変更することもできます。たとえば、コンポーネントのみを取得する場合は、上記のコードのクエリを次のように変更します。
$query->select($db->quoteName(array('name', 'manifest_cache', 'type')))
->from($db->quoteName('#__extensions'))
->where($db->quoteName('type') . ' = ' . $db->quote('component'));
お役に立てれば