Bir bileşenin kurulu / etkinleştirilmiş olup olmadığını kontrol etmenin en iyi yöntemi?


12

Joomla 2.5 ve 3.x arasında başka bir bileşenin kurulu ve / veya etkin olup olmadığını kontrol etmenin en iyi yolu nedir? Adında bir yardımcı sınıf var JComponentHelperama ben isEnabledkontrol ediliyor bileşen bazı joomla sürümlerinde yüklü değilse aslında bir hata atılacak inanıyoruz .

Bu doğrudan veritabanına vurmak kadar basit olabilir ama insanların kullandığı diğer sınıflar / yardımcıları / yöntemleri olup olmadığını görmek istedim.

Yanıtlar:


12

Bu şekilde kullanıyorum:

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

<component name> - "com_" öneki olmadan


4

bunu dene,

Bileşenin kurulu ve etkinleştirilmiş olup olmadığını görmek için veritabanınızı kontrol edin.

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

$ is_enabled değeri 1 ise, bileşeniniz etkindir. aksi takdirde,

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

3

Bileşen yoksa bazı sürümlerin bir hata görüntülemesi konusunda haklısınız. Bildiğim kadarıyla JComponentHelper::getComponent('com_name', true)->enabledbir bileşenin etkinleştirilip etkinleştirilmediğinin en iyi kontrolü.

Joomla 3.0 ve üzeri sürümlerde, bileşen yüklü olmasa bile bunu kullanabilirsiniz.

Joomla 2.5'te, en son sürüm (2.5.19) bile JError::raiseWarningbileşen kurulmamışsa son kullanıcıya verilecek bir mesaj gönderir. J2.5'i desteklemek istiyorsanız, bileşeni yüklemek için kendi yardımcınızı kullanmanız gerektiği anlaşılıyor. (Muhtemelen JComponentHelper'ı genişleten ve sadece _loadküçük değişiklikle aynı özellikleri elde etmek için işlevi geçersiz kılan yeni bir yardımcı yapabilirsiniz .)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.