Product::getProductsProperties(): 'id_image' возвращает 'en_default', а не изображение

Я создал модуль для создания пользовательской страницы с некоторыми продуктами. я пытался

//get all products
$products_partial = Product::getProducts($this->context->language->id, 0, 1000, 'name', 'asc');
$products = Product::getProductsProperties($this->context->language->id, $products_partial);

foreach ($products as $product)
{
    //here comes some logic to select some products (not relevant for this question)

    //echo the image ID
    $results[] = $product;
}

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

//this is a copy of themes/default/product-list.tpl
$this->setTemplate("product-list.tpl");

Теперь отображаются все товары, но без нужного изображения. Оказывается, $product['id_image'] имеет значение en_default, но я не знаю почему. Но почему?

Я попытался найти проблему на форумах PrestaShop и нашел людей с такой же проблемой (1, 2), но решения не было.


person Stephan Vierkant    schedule 06.11.2013    source источник
comment
var_dump($products) перед каждым и опубликовать результат   -  person Jorge Campos    schedule 06.11.2013
comment
массив (размер=78) 'id_product' => строка '25' (длина = 2) (..) 'id_image' => строка 'nl-default' (длина = 10)   -  person Stephan Vierkant    schedule 06.11.2013
comment
Я думаю, что код «PrestaShop» получает последний элемент массива, поэтому что-то в этом коде должно быть неправильным. Вы должны увидеть, что делает метод setTemplate, чтобы решить вашу проблему.   -  person Jorge Campos    schedule 06.11.2013
comment
Нет, в этом массиве нет ничего плохого. Он содержит все товары правильно (включая текст, заголовок, цену и т. д.), но только неправильный id_image.   -  person Stephan Vierkant    schedule 07.11.2013


Ответы (1)


Посмотрите на функцию, которая устанавливает en_default, и я думаю, понятно, почему она делает, что она делает.

public static function defineProductImage($row, $id_lang)
{
    if (isset($row['id_image']))
        if ($row['id_image'])
            return $row['id_product'].'-'.$row['id_image'];

    return Language::getIsoById((int)$id_lang).'-default';
}

Это из версии 1.5.

person Ivan Hanák    schedule 07.11.2013