Metode terbaik untuk memeriksa apakah komponen diinstal / diaktifkan?

12

Antara joomla 2.5 dan 3.x apa cara terbaik untuk memeriksa apakah komponen lain diinstal dan / atau diaktifkan? Ada kelas pembantu yang disebut JComponentHelpertetapi saya percaya isEnabledfungsi tersebut akan benar-benar melontarkan kesalahan jika komponen yang diperiksa tidak diinstal pada beberapa versi joomla.

Ini bisa sesederhana memukul database secara langsung tetapi saya ingin melihat apakah ada kelas lain / pembantu / metode yang digunakan orang.

Spunkie
sumber

Jawaban:

12

Saya menggunakan cara ini:

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

<component name> - tanpa awalan "com_"

Anibal
sumber
4

coba ini,

Periksa database Anda untuk melihat apakah komponen diinstal dan diaktifkan.

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

jika nilai $ is_enabled adalah 1, maka komponen Anda diaktifkan. jika tidak,

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

Anda benar bahwa beberapa versi akan menampilkan kesalahan jika komponen tidak ada. Sejauh yang saya tahu JComponentHelper::getComponent('com_name', true)->enabledadalah pemeriksaan terbaik jika komponen diaktifkan.

Di Joomla 3.0 dan di atas, Anda dapat menggunakan ini bahkan jika komponen tidak diinstal.

Di Joomla 2.5, bahkan rilis terbaru (2.5.19) akan melempar JError::raiseWarningpesan yang akan di-output ke pengguna akhir jika komponen tidak diinstal. Jika Anda ingin mendukung J2.5, tampaknya Anda harus menggunakan pembantu Anda sendiri untuk memuat komponen. (Anda mungkin bisa membuat pembantu baru yang memperluas JComponentHelper dan hanya menimpa _loadfungsi untuk mendapatkan fitur yang sama hanya dengan perubahan kecil.)

David Fritsch
sumber