如果产品没有图片,我想显示制造商徽标图片。
我在ProductController.php上找到了这个:
if (!isset($cover)) {
if (isset($images[0])) {
$cover = $images[0];
$cover['id_image'] = (Configuration::get('PS_LEGACY_IMAGES') ? ($this->product->id.'-'.$images[0]['id_image']) : $images[0]['id_image']);
$cover['id_image_only'] = (int)$images[0]['id_image'];
} else {
$cover = array(
'id_image' => $this->context->language->iso_code.'-default',
'legend' => 'No picture',
'title' => 'No picture'
);
}
}
但我不知道如何放置制造商标识而不是没有图片。
答案 0 :(得分:0)
您可以尝试使用以下代码在ProductController.php中获取产品制造商的图像
$man_id = $this->product->id_manufacturer;
$image_url = _PS_MANU_IMG_DIR_.$man_id'-medium.jpg';
答案 1 :(得分:0)
您必须对ProductController.php
和product.tpl
if (!isset($cover)) {
if (isset($images[0])) {
$cover = $images[0];
$cover['id_image'] = (Configuration::get('PS_LEGACY_IMAGES') ? ($this->product->id.'-'.$images[0]['id_image']) : $images[0]['id_image']);
$cover['id_image_only'] = (int)$images[0]['id_image'];
} else {
$cover = array(
'id_image' => $this->context->language->iso_code.'-default',
'legend' => 'No picture',
'title' => 'No picture'
); //here your modification code
$manufacturer_image = _PS_MANU_IMG_DIR_.$item['id_manufacturer'].'-'.ImageType::getFormatedName('medium').'.jpg';
}
}
然后在TPL:
{if $have_image}
<span id="view_full_size">
{if $jqZoomEnabled && $have_image && !$content_only}
<a class="jqzoom" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" rel="gal1" href="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'thickbox_default')|escape:'html':'UTF-8'}">
<img itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}"/>
</a>
{else}
<img id="bigpic" itemprop="image" src="{$link->getImageLink($product->link_rewrite, $cover.id_image, 'large_default')|escape:'html':'UTF-8'}" title="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" alt="{if !empty($cover.legend)}{$cover.legend|escape:'html':'UTF-8'}{else}{$product->name|escape:'html':'UTF-8'}{/if}" width="{$largeSize.width}" height="{$largeSize.height}"/>
{if !$content_only}
<span class="span_link no-print">{l s='View larger'}</span>
{/if}
{/if}
</span>
{else}
{* here you modification code *} <span id="view_full_size">
<img itemprop="image" src="{$manufacturer_image}" id="bigpic" alt="" title="{$product->name|escape:'html':'UTF-8'}" width="{$largeSize.width}" height="{$largeSize.height}"/>
{if !$content_only}
<span class="span_link">
{l s='View larger'}
</span>
{/if}
</span>
{/if}
如果您想要在所有商店中使用相同的行为(购物车,查看产品等),您必须覆盖管理此视图的所有特定控制器(CartController
等)。
我个人不喜欢但可以工作的其他更简单的选项是为没有图像的每个产品设置默认图像,并且该图像应该是制造商图像。要自动执行此操作,您应订阅所有图像实体挂钩(actionObjectImageAddAfter
,actionObjectImageUpdateAfter
,actionObjectImageDeleteAfter
),并检查产品是否还有图像,以便在其位置放置默认制造商图像。然后,当添加真实图像时,删除&#34;默认图像&#34;。
public function hookActionObjectImageUpdateAfter($params)
{
if (!Image::getImagesTotal((int) $params['object']->id_product))
{
//create an image for this product with manufacturer image
}
}
祝你好运。