it-swarm.com.de

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

Was ist der beste Weg zwischen joomla 2.5 und 3.x zu überprüfen, ob eine andere Komponente installiert und/oder aktiviert ist? Es gibt eine Hilfsklasse namens JComponentHelper, aber ich glaube, die Funktion isEnabled 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.

12
Spunkie

Ich benutze diesen Weg:

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

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

12
Anibal

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'));
}
4
kumarramalingam

Sie haben Recht, dass einige Versionen einen Fehler anzeigen, wenn die Komponente nicht vorhanden ist. Soweit ich weiß, ist JComponentHelper::getComponent('com_name', true)->enabled die beste Prüfung, 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::raiseWarning - Nachricht 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. (Sie könnten wahrscheinlich einen neuen Helfer erstellen, der JComponentHelper erweitert und die Funktion _load Überschreibt, um die gleichen Funktionen mit nur geringfügigen Änderungen zu erhalten.)

3
David Fritsch