Jump to content

Edit History

admin@rhodani.com

[email protected]


mistake

On 12/31/2019 at 10:07 AM, ventura said:

Lo que necesitas entonces es añadir al principio de mimodulo. php los invocadores de las clases que proporcionan toda la info de los productos


use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever;
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
use PrestaShop\PrestaShop\Core\Product\ProductListingPresenter;
use PrestaShop\PrestaShop\Adapter\Product\ProductColorsRetriever;

Luego puedes crear una instancia con todos los datos del producto, asi por ejemplo



protected function getLosProductosAMostrar()
    {

       
        $sql =' La consulta con los criterios especificos, con los productos selecionados a mostrar'

        $products = Db::getInstance()->executeS($sql); 

        $assembler = new ProductAssembler($this->context);

        $presenterFactory = new ProductPresenterFactory($this->context);
        $presentationSettings = $presenterFactory->getPresentationSettings();
        $presenter = new ProductListingPresenter(
            new ImageRetriever(
                $this->context->link
            ),
            $this->context->link,
            new PriceFormatter(),
            new ProductColorsRetriever(),
            $this->context->getTranslator()
        );

        $products_for_template = [];

        foreach ($products as $rawProduct) {
            $products_for_template[] = $presenter->present(
                $presentationSettings,
                $assembler->assembleProduct($rawProduct),
                $this->context->language
            );
        }

        return $products_for_template;   // Array resultante con toda la info de los productos
    }

Por ultimo se pasa el array de los productos resultantes al archivo .tpl del modulo, con la función especifica


  public function getWidgetVariables($hookName = null, array $configuration = [])
    {
           $products = $this->getLosProductosAMostrar($productIds);

            if (!empty($products)) {
                return array(
                    'products' => $products,
                );
    }

 

 

 

Muchas gracias por la info.

 

A ver si mañana puedo hacer las pruebas y os cuento como ha quedado.

 

A funcionado a la perfección.

Muchas gracias por el código.

 

saludos.

admin@rhodani.com

[email protected]

37 minutes ago, ventura said:

Lo que necesitas entonces es añadir al principio de mimodulo. php los invocadores de las clases que proporcionan toda la info de los productos


use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever;
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
use PrestaShop\PrestaShop\Core\Product\ProductListingPresenter;
use PrestaShop\PrestaShop\Adapter\Product\ProductColorsRetriever;

Luego puedes crear una instancia con todos los datos del producto, asi por ejemplo



protected function getLosProductosAMostrar()
    {

       
        $sql =' La consulta con los criterios especificos, con los productos selecionados a mostrar'

        $products = Db::getInstance()->executeS($sql); 

        $assembler = new ProductAssembler($this->context);

        $presenterFactory = new ProductPresenterFactory($this->context);
        $presentationSettings = $presenterFactory->getPresentationSettings();
        $presenter = new ProductListingPresenter(
            new ImageRetriever(
                $this->context->link
            ),
            $this->context->link,
            new PriceFormatter(),
            new ProductColorsRetriever(),
            $this->context->getTranslator()
        );

        $products_for_template = [];

        foreach ($products as $rawProduct) {
            $products_for_template[] = $presenter->present(
                $presentationSettings,
                $assembler->assembleProduct($rawProduct),
                $this->context->language
            );
        }

        return $products_for_template;   // Array resultante con toda la info de los productos
    }

Por ultimo se pasa el array de los productos resultantes al archivo .tpl del modulo, con la función especifica


  public function getWidgetVariables($hookName = null, array $configuration = [])
    {
           $products = $this->getLosProductosAMostrar($productIds);

            if (!empty($products)) {
                return array(
                    'products' => $products,
                );
    }

 

 

 

Muchas gracias por la info.

 

A ver si mañana puedo hacer las pruebas y os cuento como ha quedado.

 

 

×
×
  • Create New...