Ответить Новая тема Новый опрос 
 Добавление нового поля описание в карточку товара
baton94
Новичок
Сообщений: 74
Регистрация: 06-04-2014


04-08-2017 02:52
Всем привет!
Уважаемые форумчане, подскажите, пожалуйста, как мне на страницу добавить два поля точно такие же как краткое и полное описание. Чтобы в админке заполнялись и на сайт выводились на странице товара.
Заранее благодарю!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


04-08-2017 15:04
Цитата:( baton94 @ 04-08-2017 03:52 Смотреть сообщение )
как мне на страницу добавить два поля точно такие же как краткое и полное описание. Чтобы в админке заполнялись и на сайт выводились на странице товара.


Два способа решения данной задачи.
Правильный вариант:
Написать модуль который создаст отдельные таблицы и свяжет данные с доп. полями.

Быстрый вариант решения:
Откройте файл /classes/Product.php и после:
Код:
public $description_short;
добавьте:
Код:
public $description2;
public $description_short2;


после:
Код:
'description_short' =>             array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),

добавьте:
Код:
'description2' =>                 array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),
'description_short2' =>         array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),


в таблице ИМ выполните след. запрос (например через phpMyAdmin):
Код:
ALTER TABLE `ps_product_lang` ADD `description2` text;
ALTER TABLE `ps_product_lang` ADD `description_short2` text;


Откройте файл /адм.дир./themes/default/template/controllers/products/informations.tpl и после:
Код:
<div class="form-group">
    <div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="description" type="tinymce" multilang="true"}</span></div>
    <label class="control-label col-lg-2" for="description_{$id_lang}">
        <span class="label-tooltip" data-toggle="tooltip"
            title="{l s='Appears in the body of the product page.'}">
            {l s='Description'}
        </span>
    </label>
    <div class="col-lg-9">
        {include
            file="controllers/products/textarea_lang.tpl"
            languages=$languages input_name='description'
            class="autoload_rte"
            input_value=$product->description}
    </div>
</div>


добавьте:
Код:
<hr/>
<div class="form-group">
    <div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="description_short2" type="tinymce" multilang="true"}</span></div>
    <label class="control-label col-lg-2" for="description_short2_{$id_lang}">
        <span class="label-tooltip" data-toggle="tooltip" title="{l s='Appears in the product list(s), and at the top of the product page.'}">
            {l s='Short description2'}
        </span>
    </label>
    <div class="col-lg-9">
        {include
            file="controllers/products/textarea_lang.tpl"
            languages=$languages
            input_name='description_short2'
            class="autoload_rte"
            input_value=$product->description_short2
            max=$PS_PRODUCT_SHORT_DESC_LIMIT}
    </div>
</div>
<div class="form-group">
    <div class="col-lg-1"><span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="description2" type="tinymce" multilang="true"}</span></div>
    <label class="control-label col-lg-2" for="description2_{$id_lang}">
        <span class="label-tooltip" data-toggle="tooltip"
            title="{l s='Appears in the body of the product page.'}">
            {l s='Description2'}
        </span>
    </label>
    <div class="col-lg-9">
        {include
            file="controllers/products/textarea_lang.tpl"
            languages=$languages input_name='description2'
            class="autoload_rte"
            input_value=$product->description2}
    </div>
</div>
<hr/>



в шаблоне
Код:
/themes/используемый шаблон/product.tpl
выводите данные через:
Код:
{$product->description2}

и
Код:
{$product->description_short2}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
baton94
Новичок
Сообщений: 74
Регистрация: 06-04-2014


04-08-2017 15:35
Огромное спасибо!
Все работает отлично)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ametist_A
Новичок
Сообщений: 1
Регистрация: 16-10-2019


16-10-2019 15:51
Алекс, скажите, пожалуйста, этот вариант внесения изменений в файлы для 1.7.6.0 подойдет?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


16-10-2019 19:10
Цитата:( Ametist_A @ 16-10-2019 16:51 Смотреть сообщение )
Алекс, скажите, пожалуйста, этот вариант внесения изменений в файлы для 1.7.6.0 подойдет?

Да, основные доработки (в файле /classes/Product.php и БД) будут те же самые, а вот правки в шаблоне требуют изменения.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
fantast
Новичок
Сообщений: 1
Регистрация: 06-04-2011


17-11-2020 22:35
Напишите пожалуйста более детально касательно правок шаблона для 1,7,6 ... не могу найти где эти файлы tpl


Сообщение отредактировал fantast (17-11-2020 17:36)
 
Вне форума
ПМ 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Triton63


Профессионал
Сообщений: 886
Откуда: Оренбург
Регистрация: 28-05-2011


18-11-2020 16:27
Цитата:( fantast @ 17-11-2020 20:35 Смотреть сообщение )
Напишите пожалуйста более детально касательно правок шаблона для 1,7,6 ... не могу найти где эти файлы tpl
В Для prestashop 1.7.6.8 шаблон classic
В карточке товара
/themes/classic/templates/catalog/product.tpl
для короткого описания добавляем
Код:
{block name='product_description_short2'}
  <div id="product-description-short2-{$product.id}">{$product.description_short2 nofilter}</div>
{/block}

для подробного
Код:
{block name='product_description2'}
  <div class="product-description2">{$product.description2 nofilter}</div>
{/block}


Помимо правки /classes/Product.php
и импорта в БД, как написал выше Алекс
не надо искать /адм.дир./themes/default/template/controllers/products/informations.tpl в 1.7 его нет!
потому нужно внести изменения в следующие файлы
Код:
/src/PrestaShopBundle/Resources/views/Admin/Product/ProductPage/Panels/essentials.html.twig
/src/PrestaShopBundle/Resources/views/Admin/Product/ProductPage/product.html.twig
/src/PrestaShopBundle/Model/Product/AdminModelAdapter.php
/src/PrestaShopBundle/Form/Admin/Product/ProductInformation.php

открываем
/src/PrestaShopBundle/Resources/views/Admin/Product/ProductPage/Panels/essentials.html.twig
находим строки 93-107
Код:
<div class="summary-description-container">
  <ul class="nav nav-tabs bordered">
    <li id="tab_description_short" class="nav-item"><a href="#description_short" data-toggle="tab" class="nav-link description-tab active">{{ 'Summary'|trans({}, 'Admin.Catalog.Feature') }}</a></li>
    <li id="tab_description" class="nav-item"><a href="#description" data-toggle="tab" class="nav-link description-tab">{{ 'Description'|trans({}, 'Admin.Global') }}</a></li>
  </ul>

  <div class="tab-content bordered">
    <div class="tab-pane panel panel-default active" id="description_short">
      {{ form_widget(formShortDescription) }}
    </div>
    <div class="tab-pane panel panel-default " id="description">
      {{ form_widget(formDescription) }}
    </div>
  </div>
</div>


и меняем на
Код:
<div class="summary-description-container">
  <ul class="nav nav-tabs bordered">
  
    <li id="tab_description_short" class="nav-item"><a href="#description_short" data-toggle="tab" class="nav-link description-tab active">{{ 'Summary'|trans({}, 'Admin.Catalog.Feature') }}</a></li>
    <li id="tab_description" class="nav-item"><a href="#description" data-toggle="tab" class="nav-link description-tab">{{ 'Description'|trans({}, 'Admin.Global') }}</a></li>
    <li id="tab_description_short2" class="nav-item"><a href="#description_short2" data-toggle="tab" class="nav-link description-tab">{{ 'Summary2'|trans({}, 'Admin.Catalog.Feature') }}</a></li>
    <li id="tab_description2" class="nav-item"><a href="#description2" data-toggle="tab" class="nav-link description-tab">{{ 'Description2'|trans({}, 'Admin.Catalog.Feature') }}</a></li>
  </ul>

  <div class="tab-content bordered">
    <div class="tab-pane panel panel-default active" id="description_short">
      {{ form_widget(formShortDescription) }}
    </div>
    <div class="tab-pane panel panel-default " id="description">
      {{ form_widget(formDescription) }}
    </div>
    <div class="tab-pane panel panel-default" id="description_short2">
      {{ form_widget(formShortDescription2) }}
    </div>
    <div class="tab-pane panel panel-default " id="description2">
      {{ form_widget(formDescription2) }}
    </div>
    
  </div>
  
</div>



Открываем
/src/PrestaShopBundle/Resources/views/Admin/Product/ProductPage/product.html.twig
находим строку 66
Код:
'formDescription': form.step1.description,

и добавляем после неё
Код:
'formShortDescription2': form.step1.description_short2,
'formDescription2': form.step1.description2,

Открываем
/src/PrestaShopBundle/Model/Product/AdminModelAdapter.php
после строк 131 и152
Код:
'description_short',

добавить в обоих случаях
Код:
'description2',
'description_short2',

в этом же файле строка ~497 или 501
находим
Код:
'description_short' => $product->description_short,

и добавляем
Код:
'description2' => $product->description2,
'description_short2' => $product->description_short2,


Открываем
/src/PrestaShopBundle/Form/Admin/Product/ProductInformation.php
находим строку 217
Код:
//FEATURES & ATTRIBUTES

и ПЕРЕД ней добавляем
Код:
->add('description2', TranslateType::class, [
                'type' => FormattedTextareaType::class,
                'options' => [
                    'required' => false,
                    'attr' => [
                        'class' => 'serp-default-description',
                        'placeholder' => $this->translator->trans('Add text description 2', [], 'Admin.Catalog.Help'),
                    ],
                    'constraints' => [
                        new TinyMceMaxLength([
                            'max' => FormattedTextareaType::LIMIT_TEXT_UTF8,
                        ]),
                    ],
                ],
                'locales' => $this->locales,
                'hideTabs' => true,
                'label' => $this->translator->trans('Description2', [], 'Admin.Global'),
                'required' => false,
            ])
            ->add('description_short2', TranslateType::class, [
                'type' => FormType\TextareaType::class, // https://github.com/symfony/symfony/issues/5906
                'options' => [
                    'attr' => [
                        'class' => 'autoload_rte',
                        'placeholder' => $this->translator->trans('Add text short description 2', [], 'Admin.Catalog.Help'),
                        'counter' => (int) $this->configuration->get('PS_PRODUCT_SHORT_DESC_LIMIT') <= 0 ? 800 : (int) $this->configuration->get('PS_PRODUCT_SHORT_DESC_LIMIT'),
                    ],
                    'constraints' => [
                        new TinyMceMaxLength([
                            'max' => (int) $this->configuration->get('PS_PRODUCT_SHORT_DESC_LIMIT') <= 0 ? 800 : (int) $this->configuration->get('PS_PRODUCT_SHORT_DESC_LIMIT'),
                        ]),
                    ],
                    'required' => false,
                ],
                'locales' => $this->locales,
                'hideTabs' => true,
                'label' => $this->translator->trans('Short description2', [], 'Admin.Catalog.Feature'),
                'required' => false,
            ])


Вот и все.


Сообщение отредактировал Triton63 (18-11-2020 14:36)


Изображения:
2tab.jpg - Размер файла101.3KB, Скачиваний: 100 (Нажмите для увеличения)
 



Интернет-магазин ионизатор воздуха ЭкоЮнит: Лампа Чижевского
shop.aeroion.ru
-------------------------------------------------------------------------------
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос