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?


12

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? Có tồn tại một lớp trình trợ giúp được gọi JComponentHelpernhưng tôi tin rằng isEnabledhàm thực sự 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.

Câu trả lời:


12

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_"


4

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

3

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)->enabledlà kiểm tra tốt nhất nếu một thành phần được kích hoạ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) sẽ đưa ra một JError::raiseWarningthô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 đè _loadchức năng để có được các tính năng tương tự chỉ với thay đổi nhỏ.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.