модуль регистрации

Автор folkemon, 24 декабря 2017, 13:45:34

« назад - далее »

folkemon

Добрый день,
использую prestashop 1.7.1.0 и тему "classic", в модуле регистрации создал дополнительные поля, но хочу сделать так что бы они поялялись по нажатию на checkbox, как это можно реализовать?

PrestaMan

В файле /themes/classic/assets/js/custom.js добавляете код смены видимости элемента при клике на checkbox.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

folkemon


Adik

$('ид или класс эдемента').click(function(){
        $('ид или класс эдемента').show();

folkemon

было бы так просто( проблема в том, что у полей в регистрации нет класса или 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>
                 

Миколас


folkemon

в таком варианте, действие чекбокса распространяется только на input а не на вест блок(

Миколас


folkemon

самая то как раз и проблема как обернуть, так как доп поля выводятся с помощью цикла  в файле 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),
        ),
    );

PrestaMan

В шаблон добавьте свои поля или через модуль. В модуле можно кастомизировать шаблон формы.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Adik

Кастомизируете форму в 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(){
      ...

folkemon

добавил в custom.js код в виде
$('input[name="INN"]').hide()
$('input[name="mycheck"]').click(function(){
    $('input[name="INN"]').show();
})

но все равно не работает

mistral

В консоле проверьте, может jquery не подключилась или другие js файлы.

folkemon

проверил, в консоли подгрузился js но не выполняется

PrestaMan

Раставьте точки остановки и проверяйте значение переменных.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!