¿Se puede cargar una instancia de widget desde una plantilla?


8

Me gustaría crear 'widgets' en ciertas áreas de mi sitio, que pueden tener ciertos parámetros configurables por un administrador no técnico de la tienda Magento. Los widgets, según todas las descripciones, suenan como una buena manera de hacer esto. Todos los elementos adminhtml están en su lugar para permitirles completar los parámetros sin demasiados problemas.

Sin embargo, lo que no puedo resolver es cómo cargar y representar una instancia de widget específica en un punto particular de una plantilla (tal como se creó a través de CMS> Widget> Agregar nueva instancia de widget y se almacena en widget_instance). Utilicé la función de actualización de diseño para insertarlo en un bloque, que funciona razonablemente bien, pero no es lo suficientemente flexible para lo que deseo lograr.

¿Es posible en un archivo de plantilla cargar y representar una instancia de widget?

Respuestas:


9

Sí, puedes hacer algo como esto:

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

0

Si no conoce su ID de widget, puede usar esto, y no está limitado a plantillas.

$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;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.