Beste Methode, um zu überprüfen, ob eine Komponente installiert / aktiviert ist?

12

Wie kann zwischen joomla 2.5 und 3.x am besten überprüft werden, ob eine andere Komponente installiert und / oder aktiviert ist? Es gibt eine Hilfsklasse namens, JComponentHelperaber ich glaube, die isEnabledFunktion wird tatsächlich einen Fehler auslösen, wenn die zu überprüfende Komponente in einigen Joomla-Versionen nicht installiert ist.

Das kann so einfach sein, als würde man die Datenbank direkt aufrufen, aber ich wollte sehen, ob es andere Klassen / Helfer / Methoden gibt, die Leute benutzen.

Spunkie
quelle

Antworten:

12

Ich benutze diesen Weg:

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

<component name> - Ohne Präfix "com_"

Anibal
quelle
4

Versuche dies,

Überprüfen Sie Ihre Datenbank, um festzustellen, ob die Komponente installiert und aktiviert ist.

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

Wenn der Wert von $ is_enabled 1 ist, ist Ihre Komponente aktiviert. Andernfalls,

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

Sie haben Recht, dass einige Versionen einen Fehler anzeigen, wenn die Komponente nicht vorhanden ist. Nach meinem Kenntnisstand JComponentHelper::getComponent('com_name', true)->enabledist es am besten zu prüfen, ob eine Komponente aktiviert ist.

In Joomla 3.0 und höher können Sie dies auch dann verwenden, wenn die Komponente nicht installiert ist.

In Joomla 2.5 wird sogar die neueste Version (2.5.19) eine JError::raiseWarningMeldung ausgeben, die an den Endbenutzer ausgegeben wird, wenn die Komponente nicht installiert ist. Wenn Sie J2.5 unterstützen möchten, müssten Sie anscheinend Ihren eigenen Helfer verwenden, um die Komponente zu laden. (Möglicherweise können Sie einen neuen Helfer erstellen, der JComponentHelper erweitert und die _loadFunktion überschreibt , um mit nur geringfügigen Änderungen dieselben Funktionen zu erhalten.)

David Fritsch
quelle