ソリューションのスクリーンショットを見ましたが、Joomlaのバージョンはhttp経由でページにアクセスするだけで検出されています。
例えば。ソリューションはJoomlaのバージョンの3桁すべてを表示しました。例えば2.5.28、または1.0.xなど、http経由でのみWebページにアクセスします。
サーバーにインストールされているバージョンについて通知される小さなアプリケーションを作成したいと思います。 FTPストレージへのフルアクセスが常にできるわけではないので、単純なHTTP GETからJoomlaバージョンを抽出する方法を知りたいのですが。
わかりましたので、これは私が昨日書いたものです。
http://
接頭辞がURLにないかどうかを確認します。ある場合は、追加します。この場合、https://
を考慮に入れたnotがあることに注意してください。<version>
タグから値を取得します。<version>
タグから値を読み取ろうとします。switch
ブロックに追加して追加しました。このアプローチは、2つを除いて正確なバージョンを提供しませんが、平均を提供します。 jQueryのバージョンを検出することを考えていましたが、多くの人がコアバージョンを最新に更新すると、結果が不正確になることに気付きました。Unknown
を返します。注:このスクリプトはCURL
を使用するため、サーバーで有効になっていることを確認してください。
class JoomlaVersions
{
public function getJoomlaVersion($site)
{
// Add http prefix if missing
if (strpos($site,'http://') === false)
{
$site = 'http://'.$site;
}
// Get the number value from the <version> tag in the XML file
$dom = new DOMDocument;
$url = $site . '/administrator/manifests/files/joomla.xml';
libxml_use_internal_errors(true);
$exists = $this->XMLexists($url);
if( $exists )
{
$dom->load($url);
$versions = $dom->getElementsByTagName('version');
foreach ($versions as $version)
{
return $version->nodeValue;
}
}
else
{
$mce = $this->getTinyMCEversion($site);
if($mce)
{
// Base Joomla version on the TinyMCE version
switch ($mce)
{
case '3.5.6':
$joomla = '3.0.0 - 3.1.6';
break;
case '4.0.10':
$joomla = '3.2.0 - 3.2.1';
break;
case '4.0.12':
$joomla = '3.2.2';
break;
case '4.0.18':
$joomla = '3.2.3 - 3.2.4';
break;
case '4.0.22':
$joomla = '3.3.0';
break;
case '4.0.28':
$joomla = '3.3.1 - 3.3.6';
break;
case '4.1.7':
$joomla = '3.4.0';
break;
default:
$joomla = '3.x';
}
return $joomla;
}
else
{
return 'Unknown';
}
}
}
// Get TinyMCE Version
private function getTinyMCEversion($site)
{
$tinymce = $site . '/plugins/editors/tinymce/tinymce.xml';
libxml_use_internal_errors(true);
$exists = $this->XMLexists($tinymce);
if( $exists )
{
$dom->load($tinymce);
$vTag = $dom->getElementsByTagName('version');
foreach ($vTag as $tag)
{
return $tag->nodeValue;
}
}
}
// Check file exists using CURL
private function XMLexists($url)
{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$getinfo = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $getinfo;
}
}
次に、次のように関数を呼び出します。
$version = new JoomlaVersions;
echo $version->getJoomlaVersion('http://joomla.org');
他のユーザーのためのツールとして、自分のWebサイトにモジュールを作成しました。
フォークしたり、プルリクエストを送信したりする場合は、Githubリポジトリも作成しました。
とにかく、ご存じのように、私はバックエンドの開発者ではないので、コードに多くの改善を加えることができます。別の解決策があるか、現在持っているものを更新できる場合は、必ず新しい回答として投稿してください。
サイトのバージョンのみに関心がある場合、小規模なサイトを作成してインストールできますプラグインURLを開いてJoomlaバージョンを共有するプラグイン。http://example.com/plugins/getversion/getversion.php?configuredSecret
/administrator/manifests/files/joomla.xml
バージョン番号を返すために。主に初心者に注意してください:configuredSecret
は、承認されたリクエストに対してのみ公開されているチャネルを共有するための古典的なアプローチの1つです。統合接続を保護するためのより良い方法がない場合、2つのシステムを接続するために一般的に使用されます。
これは正確なコードソリューションではないため、これを個別の回答として追加します。
2つのXHRリクエストを実行するFirefox拡張機能を開発しました。 1つは最新バージョンを取得するJoomla APIサイト、もう1つは現在表示している現在のWebサイトの_joomla.xml
_ファイルです。次に、2つのバージョンを比較し、結果をconsole.log()
します。