Prestashop-产品图片未在带有友好网址的类别循环中显示

时间:2018-09-07 08:53:51

标签: loops prestashop

打开友好的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 :(得分:0)

默认情况下,您只会在$subcategories变量中获得子类别的数组;因此,除非拥有子类别对象,否则除非获得子类别对象,否则$subcategory_object->getProducts('1','1','100','price','asc')永远无法获得该子类别的产品。

首先,您需要获取子类别对象,为此,您需要通过对Category类进行替代来覆盖getSubCategories文件中的默认功能classes/Category.php

按照下面提到的步骤(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}

希望这对您有用。