it-swarm-vi.com

Phương pháp tốt nhất để kiểm tra nếu một thành phần được cài đặt / kích hoạt?

Giữa j Joomla 2.5 và 3.x cách tốt nhất để kiểm tra xem một thành phần khác đã được cài đặt và/hoặc kích hoạt chưa? Tồn tại một lớp trình trợ giúp gọi là JComponentHelper nhưng tôi tin rằng hàm isEnabled sẽ thực sự gây ra lỗi nếu thành phần đang được kiểm tra không được cài đặt trên một số phiên bản j Joomla.

Điều này có thể đơn giản như truy cập trực tiếp vào cơ sở dữ liệu nhưng tôi muốn xem liệu có các lớp/người trợ giúp/phương thức khác mà mọi người sử dụng không.

12
Spunkie

Tôi sử dụng cách này:

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

<component name> - không có tiền tố "com_"

12
Anibal

thử đi,

Kiểm tra cơ sở dữ liệu của bạn để xem thành phần đã được cài đặt và kích hoạt chưa.

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

nếu giá trị của $ is_enables là 1, thì thành phần của bạn được bật. nếu không thì,

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

Bạn đúng rằng một số phiên bản sẽ hiển thị lỗi nếu thành phần không tồn tại. Theo như tôi biết JComponentHelper::getComponent('com_name', true)->enabled là kiểm tra tốt nhất nếu một thành phần được bật.

Trong Joomla 3.0 trở lên, bạn có thể sử dụng điều này ngay cả khi thành phần chưa được cài đặt.

Trong Joomla 2.5, ngay cả bản phát hành mới nhất (2.5.19) cũng sẽ ném JError::raiseWarning thông báo sẽ được xuất ra cho người dùng cuối nếu thành phần không được cài đặt. Nếu bạn muốn hỗ trợ J2.5, có vẻ như bạn sẽ phải sử dụng trình trợ giúp của riêng mình để tải thành phần. (Bạn có thể có thể tạo một trình trợ giúp mới mở rộng JComponentHelper và chỉ ghi đè _load chức năng để có được các tính năng tương tự chỉ với thay đổi nhỏ.)

3
David Fritsch