产品功能中的PS 1.7 HTML

时间:2018-10-10 22:59:05

标签: prestashop-1.7

Prestashop 1.7.4.1
我只想为功能添加两个新字段,但这似乎更复杂,我已经尝试过此Prestashop custom field,但是即使遵循PS文档进行覆盖,它也不适用于我的版本。 我的主要目标是要有一个标题,图标和说明,以允许在产品功能内使用HTML。

但是对于一个简单的任务而言,这似乎太多了,所以我想知道如何启用所见即所得的textarea,我设法将输入从text类型更改为textarea:

array(
                    'type' => 'textarea',
                    'label' => $this->trans('Value', array(), 'Admin.Global'),
                    'name' => 'value',
                    'lang' => true,
                    'size' => 255,
                    'hint' => $this->trans('Invalid characters:', array(), 'Admin.Notifications.Info').' <>;=#{}',
                    'required' => true
                ),

因此,问题是,如何在产品功能中启用HTML编辑器。
我是PrestaShop的新手,我已经在论坛上阅读过,但没有关于此实现的帮助。
谢谢你。

更新10-10-2018 6:56(GTM-5)
我修复了HTML部分,现在是验证问题,它仍然会阻止所有html标签...

2 个答案:

答案 0 :(得分:1)

将其添加到字段数组:'autoload_rte' => true中,这样便可以激活TinyMce编辑器的“功能”输入值,如果我没记错的话,是在函数initFormFeatureValue()上,在相同的函数外观上Tools::safeOutput(Tools::getValue('back', ''));并在);之前添加true,以检查是否可行。
更新
打开文件夹FeaturesValue.php中的classes,在行53中查看

'value' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 255),`

替换为:

'value' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml', 'required' => true, 'size' => 255),

然后在您的TPL product-details.tpl中查找:

  {block name='product_features'}
    {if $product.grouped_features}
      <section class="product-features">
        <p class="h6">{l s='Data sheet' d='Shop.Theme.Catalog'}</p>
        <dl class="data-sheet">
          {foreach from=$product.grouped_features item=feature}
            <dt class="name">{$feature.name}</dt>
            <dd class="value">{$feature.value|escape:'htmlall'|nl2br nofilter}</dd>
          {/foreach}
        </dl>
      </section>
    {/if}
  {/block}

替换为:

{block name='product_features'}
  {if $product.grouped_features}
     <section class="product-features">
        <p class="h6">{l s='Data sheet' d='Shop.Theme.Catalog'}</p>
        <dl class="data-sheet">
          {foreach from=$product.grouped_features item=feature}
             <dt class="name">{$feature.name}</dt>
             <dd class="value">{$feature.value nofilter}</dd>
          {/foreach}
        </dl>
     </section>
  {/if}
{/block}

在此块中,您只需将{$feature.value|escape:'htmlall'|nl2br nofilter}的{​​{1}}更改就可以了。
我希望它能起作用,请记住,在产品编辑/新增功能中添加新功能时,您只能从拥有的功能中进行选择,我的意思是,如果您在编辑产品时想要自定义值,则输入功能自定义值仍将保留在{$feature.value nofilter}中,但我希望以此为基础,您对如何更改其余部分有了更好的了解。

答案 1 :(得分:0)

PrestaShop在tpl文件上使用HTML转义:

<td>{$feature.name|escape:'html':'UTF-8'}</td>
<td>{$feature.value|escape:'html':'UTF-8'}</td>

您必须更改它以显示HTML(在您的主题上):

<td>{$feature.name}</td>
<td>{$feature.value}</td>