it-swarm-id.com

Metode terbaik untuk memeriksa apakah komponen diinstal / diaktifkan?

Antara joomla 2.5 dan 3.x apa cara terbaik untuk memeriksa apakah komponen lain diinstal dan/atau diaktifkan? Ada kelas pembantu yang disebut JComponentHelper tapi saya percaya fungsi isEnabled 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.

12
Spunkie

Saya menggunakan cara ini:

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

<component name> - tanpa awalan "com_"

12
Anibal

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

Anda benar bahwa beberapa versi akan menampilkan kesalahan jika komponen tidak ada. Sejauh yang saya tahu JComponentHelper::getComponent('com_name', true)->enabled adalah 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::raiseWarning pesan yang akan di-output ke pengguna akhir jika komponen tidak diinstal. Jika Anda ingin mendukung J2.5, sepertinya Anda harus menggunakan pembantu Anda sendiri untuk memuat komponen. (Anda mungkin bisa membuat pembantu baru yang memperluas JComponentHelper dan hanya menimpa _load berfungsi untuk mendapatkan fitur yang sama hanya dengan perubahan minor.)

3
David Fritsch