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.

Jawaban:


12

Saya menggunakan cara ini:

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

<component name> - tanpa awalan "com_"


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

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.)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.