PS 1.7 HTML в функции продукта - PullRequest
       5

PS 1.7 HTML в функции продукта

0 голосов
/ 11 октября 2018

Prestashop 1.7.4.1
Я хочу добавить два новых поля только для функций, но это кажется более сложным, я уже пробую это Пользовательское поле Prestashop , но это не такработать для моей версии, даже следуя документации PS для перезаписи.Моя главная цель - иметь заголовок, значок и описание, которые позволяют использовать HTML внутри функций продукта.

Но это слишком много для простой задачи, поэтому вместо этого я хотел бы узнать, как включить WYSIWYG.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 голосов
/ 11 октября 2018

Добавьте это к вашему массиву полей: '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} на {$feature.value nofilter} и все ...
Надеюсь, это сработает, имейте в виду, что во время редактирования продукта / нового при добавлении новой функции вы можете выбрать только то, что выЯ имею в виду, что если вы хотите, чтобы пользовательское значение при редактировании продукта имело значение, входное значение для пользовательского значения функции будет по-прежнему type text, но я надеюсь, что с этим у вас будет лучшее представление о том, как изменить остальные.

0 голосов
/ 11 октября 2018

PrestaShop использует HTML escape для файлов tpl:

<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>
...