Перейти к содержанию
Форум поддержки пользователей VamShop

обязательные поля при оформлении заказа- как сделать их не обязательными?


Рекомендуемые сообщения

в общем такая ситуация- есть к примеру поле почтового индекса..стоит красная галка- мол обязательное заполнение.. а если человек заказывает доставку по своему же городу и спешит как суслик  ( такое не редкость в москве)- он просто не видит этой формы- все заполнил нажал..и хоп..остался тут же- с надписью вы не заполнили все поля..

разозлился и убежал..

отсюда вывод- надо найти возможность- убирать обязательность заполения каких либо полей..

скажем имя обязательно- а фамилию нет..

тоже самое с индексом..

Ссылка на сообщение
Поделиться на другие сайты

Это в файле /create_account.php

Попробуй заменить:


  if (ACCOUNT_POSTCODE == 'true') {
if (strlen($postcode) < ENTRY_POSTCODE_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_POST_CODE_ERROR);
}
  }
[/code] на:
[code]
//  if (ACCOUNT_POSTCODE == 'true') {
// if (strlen($postcode) < ENTRY_POSTCODE_MIN_LENGTH) {
// $error = true;
//
// $messageStack->add('create_account', ENTRY_POST_CODE_ERROR);
// }
//  }

Ссылка на сообщение
Поделиться на другие сайты
  • 2 months later...

Вопрос обратный - как сделать поля обязательными для заполнения. Например поле Компания. Также установил модуль для дополнительных полей при регистрации клиента. Новые поля получаются не обязательными. Как их тоже делать обязательными?

Ссылка на сообщение
Поделиться на другие сайты

Это тоже только руками в crete_account.php добавлять проверку, по типу кода выше, для поля компания примерно так наверное:


  if (ACCOUNT_COMPANY == 'true') {
if (strlen($company) < ENTRY_COMPANY_MIN_LENGTH) {
$error = true;

$messageStack->add('create_account', ENTRY_COMPANY_ERROR);
}
  }
[/code]

В базу данных, в таблицу configuration нужно добавить ENTRY_COMPANY_MIN_LENGTH, по примеру ENTRY_POSTCODE_MIN_LENGTH, это будет новая опция в Админке - Настройки - Основные - Минимульные значения, добавить тексты для этой новой опции в /lang/russian/admin/configuration.php

Добавить * в /lang/russian/russian.php в константе ENTRY_COMPANY_ERROR

Вот как-то так.

т.е. придётся лазить по файлам, по языковым файлам, по базе данных.

Ссылка на сообщение
Поделиться на другие сайты

Спасибо, работает, только как еще добавить подсветку этой ошибки и восклицательный знак. Сейчас название ошибки выводит вверху - делать внизу не обязательно.

Каким кодом выводится подсветка ошибки?

Ссылка на сообщение
Поделиться на другие сайты

В /create_account.php есть такая строка:


vam_draw_hidden_field('required', gender,firstname,lastname,dob,email,address,postcode,city,state,country,telephone,pass,confirmation', 'id="required"'));

[/code] Это список полей, обязательных для заполнения, список id кодов полей, вот добавь в него company. А затем в метке, где определяется поле формы компании:
[code]
$vamTemplate->assign('INPUT_COMPANY', vam_draw_input_fieldNote(array ('name' => 'company', 'text' => '&nbsp;'. (vam_not_null(ENTRY_COMPANY_TEXT) ? '<span class="Requirement">'.ENTRY_COMPANY_TEXT.'</span>' : ''))));

Добавь параметр id="company". Вот так:

$vamTemplate->assign('INPUT_COMPANY', vam_draw_input_fieldNote(array ('name' => 'company', 'text' => '&nbsp;'. (vam_not_null(ENTRY_COMPANY_TEXT) ? '<span class="Requirement">'.ENTRY_COMPANY_TEXT.'</span>' : '')), '', 'id="company"'));

[/code]

По идее, будет ошибка внизу выводиться, если поле компания не заполнено.

Попробуй.

Ссылка на сообщение
Поделиться на другие сайты

Получилось так как на скриншоте, почему-то не срабатывает яваскрипт ошибки.Выдает когда только вносиш company в список полей, обязательных для заполнения, список id кодов полей. Может где-то еще что-то есть?

Ссылка на сообщение
Поделиться на другие сайты

Саша на локалке, поэтому даю скриншот. Шаблон original, только переделанный - на дивах, без таблиц

Ссылка на сообщение
Поделиться на другие сайты

Странно, а по умолчанию ошибки как, также отображаются, если ничего не править в файлах?!

или поля формы красным подсвечиваются?

Ссылка на сообщение
Поделиться на другие сайты

Когда не править, все подсвечивается и ошибки отображаются. Попробую сейчас сделать скриншот.

Ссылка на сообщение
Поделиться на другие сайты

А, я забыл ещё пару изменений.

Сделай всё тоже самое + ещё в /templates/vamshop/module/create_account.html замени:


<p>{#text_company#} {$INPUT_COMPANY}</p>
[/code] на:
[code]
<p><label for="company" title="{$ENTRY_COMPANY_ERROR}">{#text_company#}</label> {$INPUT_COMPANY}</p>
а также в /includes/form_check.js.php добавь:

if(f.name=='company' && f.value.length<<?php echo ENTRY_COMPANY_MIN_LENGTH; ?> && f.id!='email'){cf_adderr(f)}
[/code] после:
[code]
if(f.name=='city' && f.value.length<<?php echo ENTRY_CITY_MIN_LENGTH; ?> && f.id!='email'){cf_adderr(f)}

Ссылка на сообщение
Поделиться на другие сайты

Все равно как на самом первом скриншоте. Прикрепил файл - может будет время - посмотришь?

create_account.php

Ссылка на сообщение
Поделиться на другие сайты

Давай с самого начала, вот что я делал:

1. В /includes/form_check.js.php замени:


if(f.name=='postcode' && f.value.length<<?php echo ENTRY_POSTCODE_MIN_LENGTH; ?> && f.id!='email'){cf_adderr(f)}
[/code] на:
[code]
if(f.name=='postcode' && f.value.length<<?php echo ENTRY_POSTCODE_MIN_LENGTH; ?> && f.id!='email'){cf_adderr(f)}
if(f.name=='company' && f.value.length<<?php echo ENTRY_COMPANY_MIN_LENGTH; ?> && f.id!='email'){cf_adderr(f)}
2. В /lang/russian/russian.php замени:

define('ENTRY_COMPANY_ERROR', '');

define('ENTRY_COMPANY_TEXT', '');

[/code] на:
[code]
define('ENTRY_COMPANY_ERROR', 'Укажите компанию.');

define('ENTRY_COMPANY_TEXT', '*');

3. В /templates/шаблон/module/create_account.html замени:

<p>{#text_company#} {$INPUT_COMPANY}</p>
[/code] на:
[code]
<p><label for="comp" title="{$ENTRY_COMPANY_ERROR}">{#text_company#}</label> {$INPUT_COMPANY}</p>
4. В /create_account.php замени:

vam_draw_hidden_field('action', 'process') . vam_draw_hidden_field('required', 'gender,firstname,lastname,dob,email,address,postcode,city,state,country,telephone,pass,confirmation', 'id="required"')
[/code] на:
[code]
vam_draw_hidden_field('action', 'process') . vam_draw_hidden_field('required', 'gender,firstname,lastname,comp,dob,email,address,postcode,city,state,country,telephone,pass,confirmation', 'id="required"')
замени:

$vamTemplate->assign('INPUT_COMPANY', vam_draw_input_fieldNote(array ('name' => 'company', 'text' => '&nbsp;'. (vam_not_null(ENTRY_COMPANY_TEXT) ? '<span class="Requirement">'.ENTRY_COMPANY_TEXT.'</span>' : ''))));

[/code] на:
[code]
$vamTemplate->assign('INPUT_COMPANY', vam_draw_input_fieldNote(array ('name' => 'company', 'text' => '&nbsp;'. (vam_not_null(ENTRY_COMPANY_TEXT) ? '<span class="Requirement">'.ENTRY_COMPANY_TEXT.'</span>' : '')), '', 'id="comp"'));

У меня работает!

Ссылка на сообщение
Поделиться на другие сайты

Саша спасибо! У тебя все красиво получилось. Все равно не работает, пробовал в 3 браузерах. js включен. Попробую еще вечером, дома, все переделать с чистого листа. Может еще модуль доп полей как-то влияет. По результатам отпишусь. Извини за беспокойство!

Ссылка на сообщение
Поделиться на другие сайты

Проверь ещё раз, всё ли ты правильно исправляешь.

Я ж вот писал и делал параллельно, всё вроде нормально, сделай только то, что я написал вот в послденем сообщении, всё, что выше, можно не делать.

Доп. поля не должны влиять, по идее.

Ссылка на сообщение
Поделиться на другие сайты

Действительно сделал ошибки, исправил, но работает только в Мозилле. В опере и ie не хочет. В опере js был действительно не включен, включил, но все равно не фунциклирует, может в кешах где то сохранилось. Забросил на сервер, ссылку скинул тебе в личные - посмотри если у тебя есть опера и ie.

Ссылка на сообщение
Поделиться на другие сайты

А ты в create_account.php больше ничего не правил?

В /includes/header.php form_check.js.php

Ничего больше не правил?!

А попробуй всего поля включить в Админке - Настройки - Основные - Данные клиента.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...