it-swarm-vi.com

Tôi nên sử dụng JResponse :: setBody hoặc onContentPrepare để thay thế chuỗi?

Tôi đang phát triển một plugin shortcodes tìm kiếm nội dung Joomla và tạo các đầu ra html từ chuỗi phù hợp.

Hiện tại tôi đang sử dụng

   public function onContentPrepare($context, &$row, &$params, $page = 0){

        if ($this->run_plg != 1)return;
        require_once 'shortcodes.php';
        $row->text = shortcodes($row->text);

        return true;
    }

Và nó hoạt động rất tốt. Như bạn có thể thấy điều này chạy qua mọi nội dung Joomla về cơ bản, bao gồm các mô-đun (Không chắc chắn về Virtuemart hoặc một số tiện ích mở rộng của bên thứ 3 khác). Nhưng nếu bạn sử dụng shortcode trong các tệp mẫu của mình thì nó sẽ không tìm thấy.

Vì vậy, tôi đang suy nghĩ về việc đặt chức năng trong onAfterRender như thế này:

function onAfterRender() {
    require_once 'shortcodes.php';
    $body        = JResponse::getBody();
    $body       = shortcodes($body);
    JResponse::setBody($body);
}

Điều này sẽ phù hợp với chuỗi bất cứ nơi nào trên trang web. Mối quan tâm của tôi là hiệu suất. Dưới đây là ví dụ đơn giản về chức năng shortcodes.

https://eval.in/141437

cái ban đầu được tinh chỉnh bằng PREG_SET_ORDER và chỉ chạy nếu tìm thấy chuỗi từ $ shortcode ['type'].

Vì vậy, câu hỏi là, những gì bạn sẽ đề nghị và tại sao nếu bạn có thời gian để giải thích.

Cảm ơn bạn và CONGRATS :)

5
Dan

Như với câu trả lời khác về hiệu suất của plugin , cách tốt nhất để tìm hiểu là kiểm tra .

Hãy xem câu trả lời khác để biết chi tiết, nhưng thật dễ dàng để thêm các báo cáo ghi nhật ký thời gian bằng cách sử dụng lớp JLog để so sánh kết quả thời gian của từng phương thức.

Điều đó nói rằng, nếu bạn cần bắt shortcode ở mọi nơi trên trang web thì onAfterRender là cách nhanh chóng, dễ dàng và có lẽ là duy nhất (sử dụng bổ sung).

1
codinghands

onContentPrepare được xây dựng ít nhiều cho đầu ra của các tiện ích mở rộng. Theo ý kiến ​​của tôi, không nên thêm bất kỳ nơi nào khác để tìm/thay thế tải. Lý do tôi nói điều này là để đảm bảo rằng Joomla phù hợp với các phương thức của nó.

Vì vậy, nếu cần một số loại tìm/thay thế, tốt nhất bạn nên đặt nó trong một mô-đun HTML tùy chỉnh thay thế (bạn cũng có thể tạo bố cục tùy chỉnh cho nó và như vậy). Bằng cách này, các plugin nội dung sẽ phân tích cú pháp nội dung của bạn, để các plugin hệ thống của bạn điều chỉnh các cài đặt môi trường và như vậy, hoặc tải các thư viện bổ sung (về cơ bản, điều chỉnh lõi của Joomla và mở rộng nó).

Nhìn vào các phần mở rộng khác, chủ yếu là trình quản lý mô-đun Nâng cao, nó cho phép bạn nhắm mục tiêu các mô-đun với nhiều cài đặt hơn. Mặc dù nó có thể không giúp bạn, nhưng sự kiểm soát mà họ đưa ra có thể dẫn đến các giải pháp thay thế mà bạn không nghĩ đến bằng cách khác. http://www.nonumber.nl/

1
Jordan Ramstad