Как получить переменные $ product в шаблоне пользовательского модуля в Prestashop 1.7 - PullRequest
0 голосов
/ 02 июля 2019

Я борюсь с пользовательским модулем. Я хочу использовать переменную $ product в шаблоне пользовательского модуля.

Это работает на каждой странице продукта, но не в категории и на домашней странице, дает мне ошибку отладки

Notice: Undefined index: product

как

{$product.name}

Когда я обертываю это как

 {foreach from=$products item="product"}
     {$product.name}
 {/foreach} 

тогда переменные $ product работают, но я хочу только показать переменную, соответствующую продукту.

Есть идеи?

Я реализовал функции продукта из ps_specials со всеми необходимыми интерфейсами, такими как

 $products = $this->getSpecialProducts();

 $this->smarty->assign(
    array(
        'products' => $products,
    )); 

 return false;

Покажите мне, как получить переменную $ product на домашней странице и на странице категорий (в подключенном файле пользовательского шаблона из пользовательского модуля в {hook h = 'displayProductListReviews' product = $ product})


Edit.

Моя функция выглядит прямо сейчас

 public function hookDisplayProductListReviews($params){

    $templateFile = 'test.tpl';
    $products = $this->getSpecialProducts($params['product']);
    $this->context->smarty->assign(
        array(
            'products' => $products,
        )); 
    return $this->fetch('module:'.$this->name.'/'.$templateFile);
}

пока все хорошо, потому что с

{foreach from=$products item=product} {$product->name} {/foreach}

я могу напечатать $ product-> name, но ...

Как использовать его без цикла foreach, чтобы печатать имена всех продуктов, собранных в функции getSpecialProducts (из модуля ps_specials)?

1 Ответ

1 голос
/ 02 июля 2019

Вы должны сделать

public function hookDisplayProductListReviews($params){
    $products = $this->getSpecialProducts($params['product']);
}

Когда вы используете {hook h='displayProductListReviews' product=$product}) product=$product будет в $ params, вы можете использовать print_r($params);die();, чтобы посмотреть, что именно находится в этой переменной

...