Флаги продукта Prestashop 1.7 - PullRequest
1 голос
/ 08 мая 2020

Я здесь новенький. У меня возникла проблема с добавлением к пользовательской теме в PrestaShop 1.7 флага нового продукта: Bestselling .

Я обнаружил, что в ProductLazyArray.php есть определения для этих флагов, но этот файл является основным файлом, и я не уверен, что мне следует его изменять.

Вы можете мне помочь с этим? Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 18 мая 2020

спасибо за ответ. Я понял это, добавив хук в ProductLazyArray. php. Это выглядит так:

        \Hook::exec('actionProductFlagsModifier', array (
        'flags' => & $flags,
        'product' => $this-> product,
    ));

И мой модуль logi c выглядит так:

  public function getBestSellingProductsId() {
    $bestSellingProducts = ProductSale::getBestSalesLight((int)$this->langID, 0);
    $productsIdArray = array();
    foreach ($bestSellingProducts as $bestSellingProduct) {
        if (!empty($bestSellingProducts) && !in_array($bestSellingProduct['id_product'], $productsIdArray)) {
            $productsIdArray[] = $bestSellingProduct['id_product'];
        }
    }
    return $productsIdArray;
}

public function isBestSelling($arrayOfBestSellingIds = array(), $productId) {
    if (!empty($arrayOfBestSellingIds)) {
        if (in_array($productId, $arrayOfBestSellingIds)) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

public function hookActionProductFlagsModifier($params)
{
    $bestSellings = $this->getBestSellingProductsId();
    $allProductsId = $params['product']['id_product'];
    if (!empty($allProductsId)) {
        if (in_array($allProductsId, $bestSellings)) {
            array_push($params['product'], $params['product']['is_best_seller'] = (int) in_array($allProductsId, $bestSellings));
        }
    }
    if (in_array('is_best_seller', $params['product'])
        && $this->isBestSelling($bestSellings, $allProductsId)) {
        $params['flags']['bestseller'] = array(
            'type' => 'bestseller',
            'label' => 'Hit'
        );
    }
    return $params;
}
0 голосов
/ 17 мая 2020

Посмотрите официальное руководство по переопределению классов Prestashop

https://devdocs.prestashop.com/1.7/modules/concepts/overrides/

...