구성 요소가 설치 / 활성화되어 있는지 확인하는 가장 좋은 방법은 무엇입니까?


12

Joomla 2.5와 3.x 사이에서 다른 구성 요소가 설치 및 / 또는 활성화되어 있는지 확인하는 가장 좋은 방법은 무엇입니까? 헬퍼 클래스가 JComponentHelper있지만 isEnabled검사중인 구성 요소가 일부 줌라 버전에 설치되어 있지 않으면 함수에서 실제로 오류가 발생 한다고 생각합니다 .

이것은 데이터베이스를 직접 치는 것만 큼 간단 할 수 있지만 사람들이 사용하는 다른 클래스 / 도우미 / 메소드가 있는지 확인하고 싶었습니다.

답변:


12

나는 이런 식으로 사용합니다 :

// Check for component
if (!JComponentHelper::getComponent('<component name>', true)->enabled)
{
.....
}

<component name> - "com_"접두사없이


4

이 시도,

구성 요소가 설치되어 사용 가능한지 데이터베이스를 확인하십시오.

$db = JFactory::getDbo();
$db->setQuery("SELECT enabled FROM #__extensions WHERE name = 'com_name'");
$is_enabled = $db->loadResult();

$ is_enabled의 값이 1이면 구성 요소가 사용됩니다. 그렇지 않으면,

if (!JComponentHelper::isEnabled('com_mycomp', true))
{
    JError::raiseError('404', JText('Component not installed / enabled'));
}

3

구성 요소가 없으면 일부 버전에서 오류가 표시 될 수 있습니다. 내가 아는 JComponentHelper::getComponent('com_name', true)->enabled한 구성 요소가 활성화되어 있는지 확인하는 것이 가장 좋습니다.

Joomla 3.0 이상에서는 구성 요소가 설치되지 않은 경우에도이를 사용할 수 있습니다.

Joomla 2.5에서는 최신 릴리스 (2.5.19)조차도 JError::raiseWarning구성 요소가 설치되지 않은 경우 최종 사용자에게 출력 되는 메시지를 표시합니다. J2.5를 지원하려면 구성 요소를로드하기 위해 자체 도우미를 사용해야 할 것 같습니다. (JComponentHelper를 확장하고 _load함수를 재정 의하여 사소한 변경으로 동일한 기능을 얻는 새로운 도우미를 만들 수 있습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.