打开友好的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'}"
谢谢。
答案 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}
希望这对您有用。