在产品页面内使用Prestashop模块tpl变量

时间:2018-06-23 08:06:11

标签: php prestashop smarty prestashop-1.7

我构建了一个Prestashop模块,使我可以为每种产品上传其他图像。通过使用挂钩,使用挂钩{hook h ='displayProductAdditionalInfo'product = $ product}在产品页面上显示图像。请参见下面的模块tpl代码:

{if $images}
    {foreach from=$images item=image}
        {if $image.type ==1}
            <img src="{$this_path}uploads/{$image.image}" width="">
        {else}
            <img src="{$this_path}uploads/{$image.image}" width="">
        {/if}
    {/foreach}
{/if}

我面临的挑战是,我想将此图像之一用作poduct.tpl文件部分的背景图像。例如,使用下面的代码:

<div class="uk-background-cover uk-panel" style="background-image: url(...);">
{block name='page_header'}
   <h1 class="h1" itemprop="name">{block name='page_title'}{$product.name} 
    {/block}</h1>
{/block}
</div>

我考虑过使用{assign var=bgpath value="{hook='displayProductAdditionalInfo'}"},然后在{$bgpath}内使用style="background-image: url({$bgpath});,但是带来了错误。 我还在下面尝试过,以便可以使用style="background-image: url({$bgpath});

{if $images}
        {foreach from=$images item=image}
            {if $image.type ==1}
                {assign var=bgpath value="{$this_path}uploads/{$image.image}"
            {/if}
        {/foreach}
{/if}

不起作用,因为此变量在product.tpl中不可用,但在module.tpl中不可用

我读到我们可能会使用控制器替代,但是我不确定它是否会起作用或如何实现。

1 个答案:

答案 0 :(得分:0)

您可以在tpl文件中使用样式标签代替样式属性。

{if $images}
    {foreach from=$images item=image}
        {if $image.type ==1}
            {assign var=bgpath value="{$this_path}uploads/{$image.image}"
        {/if}
    {/foreach}
<style>
    div.uk-background-cover {
        background-image: url({$bgpath});
    }
</style>
{/if}