Bạn có thể tải một thể hiện widget từ một mẫu?


8

Tôi muốn tạo 'widget' ở một số khu vực nhất định trên trang web của mình, có thể có một số tham số nhất định có thể định cấu hình bởi quản trị viên cửa hàng Magento không có kỹ thuật. Widgets, bởi tất cả các mô tả nghe có vẻ như một cách tốt đẹp để làm điều này. Tất cả các yếu tố adminhtml được đặt ra để cho phép chúng điền vào các tham số mà không gặp quá nhiều rắc rối.

Tuy nhiên, điều tôi không thể làm được là cách tải và hiển thị một thể hiện widget cụ thể tại một điểm cụ thể trong một mẫu (như được tạo qua CMS> Widget> Thêm Instance Widget mới và được lưu trữ trong widget_instance). Tôi đã sử dụng tính năng cập nhật bố cục để chèn nó vào một khối, hoạt động khá tốt, nhưng nó không đủ linh hoạt cho những gì tôi muốn đạt được.

Có thể trong một tệp mẫu để tải và kết xuất một thể hiện widget?

Câu trả lời:


9

Vâng, bạn có thể làm một cái gì đó như thế này:

$widget = Mage::getModel('widget/widget_instance')->load($widgetId);
$widgetBlock = $this
                   ->getLayout()
                   ->createBlock($widget->getType(),
                                 $widget->getTitle(),
                                 $widget->getWidgetParameters());
echo $widgetBlock->toHtml();

0

Nếu bạn không biết ID widget của mình, bạn có thể sử dụng ID này và nó không giới hạn đối với các mẫu.

$collection = Mage::getModel('widget/widget_instance')->getCollection();
        $collection->addStoreFilter(Mage::app()->getStore()->getId(), false)
            ->addFieldToFilter('title', $filter)->load();

        $widget = $collection->getFirstItem(); 

        if($widget && is_numeric($widget->getId())) {
            $widgetBlock = Mage::app()->getLayout()
                ->createBlock(
                    $widget->getType(),
                    $widget->getTitle(),
                    $widget->getWidgetParameters()
                );
            return $widgetBlock;
        }
        return false;
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.