좋아, 이것이 내가 어제 쓴 것입니다.
Joomla 2.5 및 3.x 전용
http://
URL에서 접두사가 누락 되었는지 확인하십시오 . 그렇다면 추가합니다. 이 경우 나는 것을주의 하지 촬영 한 https://
고려.
- 그런 다음 Joomla 매니페스트 파일을 가져 오려고 시도하고 존재하는지 읽을 수 있는지 확인합니다.
- 존재하는 경우
<version>
태그 에서 값을 가져옵니다 .
- XML 파일을 읽을 수없는 경우 TinyMCE 버전을 얻기 위해 대체를 작성했습니다. 다시
<version>
태그 에서 값을 읽으려고 시도합니다 .
- 지금부터 각 Joomla 버전에 대한 릴리스 정보를 살펴보면서 TinyMCE 업데이트가있는 버전을 확인하는 데 오랜 시간이 걸렸습니다. 그렇게 한 사람들은
switch
블록에 코드를 더 추가했습니다 . 이 방법은 2 개를 제외한 정확한 버전을 제공하지는 않지만 평균을 제공합니다. jQuery 버전을 감지하려고 생각했지만 많은 사람들이 코어 버전을 최신 버전으로 업데이트하여 결과가 정확하지 않다는 것을 깨달았습니다.
- TinyMCE 버전을 찾을 수 없으면 (기본적으로 줌라가 아닌 사이트)이 함수는을 반환
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');
내 웹 사이트에서 다른 사용자를위한 도구로 모듈을 만들었습니다.
Joomla 버전 감지 도구
포크하거나 풀 요청을 제출하려면 Github 리포지토리도 만들었습니다.
Joomla 버전 감지 Github Repo
어쨌든, 여러분 중 일부는 아시다시피 백엔드 개발자가 아니므로 코드를 개선 할 수있는 많은 개선 사항이있을 것입니다. 다른 솔루션이 있거나 현재 가지고있는 것을 업데이트 할 수 있다면 새로운 답변으로 게시하십시오.