Автор Тема: модуль регистрации  (Прочитано 1186 раз)

24 Декабрь 2017, 13:45:34
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день,
использую prestashop 1.7.1.0 и тему "classic", в модуле регистрации создал дополнительные поля, но хочу сделать так что бы они поялялись по нажатию на checkbox, как это можно реализовать?
24 Декабрь 2017, 13:52:37
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В файле /themes/classic/assets/js/custom.js добавляете код смены видимости элемента при клике на checkbox.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
24 Декабрь 2017, 14:41:16
Ответ #2
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
а можно поподробнее?
24 Декабрь 2017, 15:08:50
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
$('ид или класс эдемента').click(function(){
        $('ид или класс эдемента').show();
24 Декабрь 2017, 15:57:08
Ответ #4
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
было бы так просто( проблема в том, что у полей в регистрации нет класса или id. на выходе получается такого строка <div class="form-group row ">
    <label class="col-md-3 form-control-label">
              тест
          </label>
    <div class="col-md-6">
    <input class="form-control" name="INN" type="text" value="">
    </div>
    <div class="col-md-3 form-control-comment">   
                 Необязательно
    </div>
  </div>
                 
24 Декабрь 2017, 16:02:10
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
name же есть
$('[name="INN"]')
24 Декабрь 2017, 19:19:36
Ответ #6
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
в таком варианте, действие чекбокса распространяется только на input а не на вест блок(
24 Декабрь 2017, 20:30:35
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 3419
  • Репутация: +79/-6
  • Сообщество PrestaShop
    • Просмотр профиля
Оберни все в div с ид.
25 Декабрь 2017, 07:54:25
Ответ #8
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
самая то как раз и проблема как обернуть, так как доп поля выводятся с помощью цикла  в файле costumer-form.tpl
  <section>
    {block "form_fields"}
      {foreach from=$formFields item="field"}
        {block "form_field"}
          {form_field field=$field}
        {/block}
      {/foreach}
      <div>{$hook_create_account_form nofilter}</div>
    {/block}
  </section>

сами же поля создал в файле customerformatter.php
public function getFormat()
    {
        $format = [];
        $format['INN'] = (new FormField)
            ->setName('INN')
            ->setType('hidden')
        ;
и в файле customer.php
public static $definition = array(
        'table' => 'customer',
        'primary' => 'id_customer',
        'fields' => array(
'INN' => array('type' => self::TYPE_STRING),
        ),
    );
25 Декабрь 2017, 13:19:26
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В шаблон добавьте свои поля или через модуль. В модуле можно кастомизировать шаблон формы.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
25 Декабрь 2017, 14:09:20
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Кастомизируете форму в CustomerFormatter.php
$format['myfild'] = (new FormField)
            ->setName('myfild')
            ->setType('text')
            ->setLabel($this->translator->trans(
                    'My fild', [], 'Shop.Forms.Labels'
            ));
               
$format['mycheck'] = (new FormField)
            ->setName('mycheck')
            ->setType('checkbox')
            ->setLabel($this->translator->trans(
                        'Show filds', [], 'Shop.Theme.CustomerAccount'
            ));
В файл custom.js прячете поле при загрузки страницы и показываете при клике
$('input[name="myfild"]').hide()
$('input[name="mycheck"]').click(function(){
      ...
25 Декабрь 2017, 18:11:08
Ответ #11
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
добавил в custom.js код в виде
$('input[name="INN"]').hide()
$('input[name="mycheck"]').click(function(){
    $('input[name="INN"]').show();
})
но все равно не работает
25 Декабрь 2017, 19:18:45
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В консоле проверьте, может jquery не подключилась или другие js файлы.
26 Декабрь 2017, 08:23:45
Ответ #13
  • Новичок
  • *
  • Сообщений: 16
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
проверил, в консоли подгрузился js но не выполняется
26 Декабрь 2017, 12:38:47
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Раставьте точки остановки и проверяйте значение переменных.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!