Tự động xuất bản plugin sau khi cài đặt


7

Tôi đã tạo một vài plugin nhỏ mà tôi cài đặt trên hầu hết các trang web của mình. Nhưng các plugin mới (may mắn thay) bị tắt theo mặc định khi cài đặt. Tôi biết chỉ cần một vài lần nhấp để kích hoạt plugin, nhưng liệu có thể làm cho plugin của tôi tự kích hoạt sau khi cài đặt xong không?

Câu trả lời:


6

Những gì tôi khuyên bạn nên làm là tạo một tập lệnh cài đặt thực thi một postflightchức năng. Chức năng này được tích hợp vào Joomla và sẽ được thực thi sau khi tiện ích mở rộng đã được cài đặt.

Bạn có thể sử dụng một cái gì đó như thế này:

function postflight($type, $parent)
{
    // We only need to perform this if the extension is being installed, not updated
    if (strtolower($type) === 'install') 
    {       
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);

        $fields = array(
            $db->quoteName('enabled') . ' = 1',
            $db->quoteName('ordering') . ' = 9999'
        );

        $conditions = array(
            $db->quoteName('element') . ' = ' . $db->quote('plg_myplugin'), 
            $db->quoteName('type') . ' = ' . $db->quote('plugin')
        );

        $query->update($db->quoteName('#__extensions'))->set($fields)->where($conditions);

        $db->setQuery($query);   
        $db->execute();     
    }
}

Để biết thêm thông tin về tệp tập lệnh, hãy đọc Tài liệu Joomla:

http://docs.j Joomla.org/J2.5:Managing_Component_Updates_(Script.php)

Hi vọng điêu nay co ich


Tôi tin rằng 19999là số nguyên và không cần đúc kiểu;)
Farahmand

@Farahmand - Nó có thể được sử dụng nhưng tôi cho rằng không phải là một yêu cầu chính. Tôi thực sự đã hỏi một câu hỏi về điều này một thời gian trước: j Joomla.stackexchange.com/questions/3738/iêu .. không chắc tại sao sử dụng kiểu đúc lại xứng đáng với một downvote mặc dù vì khái niệm / cách tiếp cận là chính xác
Lodder

1

Bạn có thể tạo một plugin như thế này:

class plgExtensionEnableMyPlugins extends JPlugin
{
    public function onExtensionAfterInstall($installer, $eid)
    {
        if ($eid)
        {
            $db = JFactory::getDbo();
            $db->setQuery("UPDATE #__extensions SET `enabled` = 1 WHERE `extension_id` = $eid AND `type` = 'plugin'");
            $db->execute();
        }
    }
}

Cài đặt và kích hoạt các plugin trên trước khi cài đặt các plugin của bạn.


Bạn đang đề xuất sử dụng một plugin bổ sung để thực hiện hành động này? Vậy điều gì sẽ xảy ra nếu tôi là người dùng tải xuống plugin của @ johan và tôi hy vọng nó sẽ tự động xuất bản? Anh ấy sẽ mong tôi cài đặt plugin này mà bạn đã đề cập trước khi tải xuống chứ?
Lodder

@Lodder, Câu hỏi là về một "cặp" plugin được tạo bởi johan và anh ta muốn cài đặt trên các trang web "của mình". Nếu anh ấy đã nói các điều kiện mà bạn đề cập, câu trả lời của tôi là một cái gì đó khác;)
Farahmand

@Farahmand, tôi sử dụng các plugin chủ yếu trên các trang web tôi phát triển, tuy nhiên, cài đặt và kích hoạt một plugin để tự động kích hoạt một vài người khác có vẻ hơi quá mức. Nhưng cảm ơn vì mã.
johanpw

@johanpw, Không sao. Cá nhân tôi thích sử dụng một plugin thay vì để viết các postflightchức năng cho tất cả các plugin của mình. Tôi tin rằng đó không phải là một quá mức cần thiết. Tôi có thể gỡ cài đặt / vô hiệu hóa plugin ngay khi tôi cài đặt tất cả các plugin của mình. Hy vọng điều này sẽ giúp những người có trường hợp tương tự.
Farahmand
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.