Prestashop - изображения товаров не отображаются в цикле категорий с понятными URL - PullRequest
0 голосов
/ 07 сентября 2018

Изображения моих товаров не отображаются в категориях после включения дружественных URL. Если я выключу его, они появятся снова.

Я пробовал:

  • Восстановление изображений в бэк-офисе
  • Отключение кеша

Когда я проверяю код с дружественными URL-адресами, ссылки на изображения отображаются в странном формате: https://www.website.fr/3689-home_default/.jpg

Prestashop 1.6

РЕДАКТИРОВАТЬ:

Похоже, проблема связана с тем, как я запрашиваю продукты в моей пользовательской категории TPL. Я запрашиваю товары из подкатегорий вручную (я не показываю сразу все товары этой категории) следующим образом:

{foreach from=$subcategories item=subcategory}
    {if $subcategory.id_category == 64659}

        {assign var="subcategory_id" value=$subcategory.id_category}
        {assign var="subcategory_object" value=$subcategories_objects.$subcategory_id}
        {include file="./product-list.tpl" products=$subcategory_object->getProducts('1','1','100','price','asc')}

    {/if}
 {/foreach}

Когда я запрашиваю продукты со следующей строкой, изображения отображаются как обычно:

{include file="./product-list.tpl" products=$products}

В product-list.tpl это строка, которая получает изображение:

src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')|escape:'html':'UTF-8'}"

Спасибо.

1 Ответ

0 голосов
/ 11 сентября 2018

По умолчанию вы получите массив подкатегорий только в переменной $subcategories; поэтому получение продуктов этой подкатегории никогда не будет работать $subcategory_object->getProducts('1','1','100','price','asc') до тех пор, пока у вас не появится объект подкатегории.

Сначала вам нужно получить объект подкатегории и для этого вам нужно переопределить функцию по умолчанию getSubCategories из файла classes/Category.php, сделав переопределить класса Category.

Выполните указанные ниже шаги (1-2), чтобы создать переопределенный класс и изменить код в шаблоне, упомянутом в шаге (3)

1) Создайте файл Category.php по пути override\classes и добавьте в него код ниже. это переопределит функцию по умолчанию для получения категории.

<?php
/**
 * @override classes/Category.php
 * 
 */
class Category extends CategoryCore
{
    /**
     * @override
     * Return current category childs
     *
     * @param int $id_lang Language ID
     * @param bool $active return only active categories
     * @return array Categories
     */
    public function getSubCategories($id_lang, $active = true)
    {
        $result = parent::getSubCategories($id_lang, $active);
        foreach ($result as &$row) {
            // Preapre object of sub category here
            $row['object'] = new Category($row['id_category'], $id_lang);
        }
        return $result;
    }
}

2) Удалить файл class_index.php из папки cache.

Ваша функция отмены теперь готова.

3) Добавьте приведенный ниже код в шаблон, чтобы показать товары

{foreach from=$subcategories item=subcategory}
    {if $subcategory.id_category == 64659}
        {include file="./product-list.tpl" products=$subcategory.object->getProducts('1','1','100','price','asc')}
    {/if}
{/foreach}

Надеюсь, это сработает для вас.

...