首页 > 解决方案 > 如何显示产品的第二张图片?PrestaShop 1.7.5.1

问题描述

我需要仅针对特定块显示不同的封面图像(第二个或最后一个,这并不重要,但不是第一个)ps_bestseller:.

我唯一发现的是这段代码是这个链接,但它只适用于 1.6 版本:

这是我的默认代码:

{block name='product_thumbnail'}

    {if $product.cover}

      <a href="{$product.url}" class="thumbnail product-thumbnail">
        <img
          src = "{$product.cover.bySize.home_default.url}"
          alt = "{if !empty($product.cover.legend)}{$product.cover.legend}{else}{$product.name|truncate:30:'...'}{/if}"
          data-full-size-image-url = "{$product.cover.large.url}"
        >
      </a>
    {else}
      <a href="{$product.url}" class="thumbnail product-thumbnail">
        <img
          src = "{$urls.no_picture_image.bySize.home_default.url}"
        >
      </a>
    {/if}
  {/block}

当我尝试编辑代码时,它返回一个空白页。有什么建议吗?

标签: imageprestashopprestashop-1.7

解决方案


创建一个将使用此内容命名Link.php的覆盖文件:override/classes/

<?php
use PrestaShop\PrestaShop\Core\Addon\Module\ModuleManagerBuilder;
use PrestaShop\PrestaShop\Adapter\SymfonyContainer;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use PrestaShop\PrestaShop\Core\Feature\TokenInUrls;

class Link extends LinkCore
{
    public function getLastImageLink($id_product, $product_name, $type = null) {
        $maxId = Db::getInstance()->getValue('SELECT id_image FROM `'._DB_PREFIX_.'image` WHERE id_product = '.(int)$id_product.'  ORDER BY position DESC');
        return $this->getImageLink($product_name, $id_product.'-'.$maxId, $type = null);
    }
}

Ensuite dans le tpl pour appeler l'url de votre image mettez :

{$link->getLastImageLink($product.id, $product.name, 'large')}

问候


推荐阅读