Перейти к содержимому


Фото
* * * * * 2 голосов

Дополнительное поле при регистрации пользователя


  • Чтобы отвечать, сперва войдите на форум
118 ответов в теме

#1 Almorina

Almorina
  • Пользователь
  • 1 сообщений

Опубликовано 11.03.2012 - 13:18

Вопрос простой. Почему разработчики об этом не подумали?
Нужно создать поле "Телефон" в карточку покупателя. Очень неудобно иметь 2 базы и при каждом звонке искать телефон в базе телефонов.



#2 tbox24

tbox24
  • Пользователь
  • 276 сообщений
  • Версия CMS:2.x
  • Откуда:ua

Опубликовано 11.03.2012 - 13:27

да точно



#3 arsko

arsko
  • Пользователь
  • 265 сообщений

Опубликовано 11.03.2012 - 13:38

А зачем вам туда он нужен?



#4 trinitron

trinitron
  • Пользователь
  • 8 сообщений

Опубликовано 11.03.2012 - 14:30

а что вам мешает самому "ручками" добавить поле в базе и потом добавить поле в карточку покупателя?



#5 beagler

beagler
  • Пользователь
  • 47 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 11.03.2012 - 15:45

Добавляем в таблицу s_users поле phone с типом varchar длиной 20.
Далее в /view/RegisterView.php после
вместо

elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status)))

пишем

elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status, 'phone'=>$this->request->post('phone'))))

в /api/Users.php вместо

$query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.group_id, u.enabled, u.phone, g.discount FROM __users u
LEFT JOIN __groups g ON u.group_id=g.id
WHERE 1 $group_id_filter $keyword_filter ORDER BY u.name $sql_limit");

пишем

$query = $this->db->placehold("SELECT u.*, g.discount FROM __users u
LEFT JOIN __groups g ON u.group_id=g.id
WHERE 1 $group_id_filter $keyword_filter ORDER BY u.name $sql_limit");

далее в /view/UserView.php вместо

elseif($user_id = $this->users->update_user($this->user->id, array('name'=>$name, 'email'=>$email)))

пишем

elseif($user_id = $this->users->update_user($this->user->id, array('name'=>$name, 'email'=>$email, 'phone'=>$this->request->post('phone'))))

после

$this->design->assign('email', $this->user->email);

пишем

$this->design->assign('phone', $this->user->phone);

после

$this->design->assign('email', $this->user->email);

пишем

$this->design->assign('phone', $this->user->phone);

В /simpla/UserAdmin.php
после

$user->email = $this->request->post('email');

пишем

$user->phone = $this->request->post('phone');

Включим поиск по телефону. В /simpla/search_users.php
вместо

$simpla->db->query('SELECT u.id, u.name, u.email FROM __users u WHERE u.name LIKE "%'.mysql_real_escape_string($keyword).'%" OR u.email LIKE "%'.mysql_real_escape_string($keyword).'%"ORDER BY u.name LIMIT ?', $limit);

пишем

$simpla->db->query('SELECT u.* FROM __users u WHERE u.name LIKE "%'.mysql_real_escape_string($keyword).'%" OR u.email LIKE "%'.mysql_real_escape_string($keyword).'%" OR u.phone LIKE "%'.mysql_real_escape_string($keyword).'%" ORDER BY u.name LIMIT ?', $limit);

в /simpla/design/html/user.tpl
после

<li><label class=property>Email</label><input name="email" class="simpla_inp" type="text" value="{$user->email|escape}" /></li>

пишем

<li><label class=property>Телефон</label><input name="phone" class="simpla_inp" type="text" value="{$user->phone|escape}" /></li>

в /simpla/design/html/users.tpl
после

<div class="user_email cell">
<a href="mailto:{$user->name|escape}<{$user->email|escape}>">{$user->email|escape}</a>
</div>

добавляем

<div class="cell">
{$user->phone|escape}
</div>

И на следующей строке вместо

<div class="user_group cell">

пишем

<div class="cell">

В админке пользователей вывели.
Далее открываем /design/default/html/user.tpl и после

<input data-format="email" data-notice="Введите email" value="{$email|escape}" name="email" maxlength="255" type="text"/></td>

пишем

<label>Телефон</label>
<input data-format=".+" data-notice="Введите телефон" value="{$phone|escape}" name="phone" maxlength="20" type="text"/>

Далее открываем /design/default/html/register.tpl и после

<input type="text" name="email" data-format="email" data-notice="Введите email" value="{$email|escape}" maxlength="255" />

пишем


<label>Телефон</label> <input type="text" name="phone" data-format=".+" data-notice="Введите телефон" value="{$phone|escape}" maxlength="20" />

Вроде все. У меня работает.



#6 Danya

Danya
  • Фрилансер
  • 908 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x

Опубликовано 15.03.2012 - 07:44

beagler
Спасибо большое.

Работает, только вот когда человек регистрируется и переходит в кабинет, там поле телефона пустое!

И как сделать, когда клиент залогинен и он переходит в корзину для оформления заказа, автоматически заполнялось поле телефон в форме заказа?



#7 andrewftl

andrewftl
  • Пользователь
  • 225 сообщений

Опубликовано 15.03.2012 - 11:32

Вот сам поковырялся с базой. Нельзя же так сильно упрощать систему! В базе нет контактных данных о клиенте... Потом полез в админку/сайт и правда, при регистрации вводить контактные данные не нужно.
Это же интернет магазин, клиент - самое главное звено!



#8 beagler

beagler
  • Пользователь
  • 47 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 16.03.2012 - 02:48

Danya
1.Странно, когда я захожу в кабинет - телефон есть.
2. Нужно в /view/CartView.php после

$this->design->assign('email', $this->user->email);

добавить


$this->design->assign('phone', $this->user->phone);


#9 Danya

Danya
  • Фрилансер
  • 908 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x

Опубликовано 16.03.2012 - 04:00

beagler

Спасибо большое! Добавил, заработало!

По поводу вывода номера телефона в кабинете, я добавил поле в файле UserView.php после:

$this->design->assign('email', $this->user->email);

добавляем:


$this->design->assign('phone', $this->user->phone);


#10 beagler

beagler
  • Пользователь
  • 47 сообщений
  • Программирование
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 16.03.2012 - 06:37

ну вот и славненько.



#11 igoryk

igoryk
  • Пользователь
  • 173 сообщений
  • Пользователь

Опубликовано 16.03.2012 - 15:10

Вот тут нашел решение - http://dwfile.ru/hom...3&do=blog&id=88



#12 Danya

Danya
  • Фрилансер
  • 908 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x

Опубликовано 17.03.2012 - 00:15

igoryk

это решение для обратной связи!

beagler описал решение для регистрации пользователя с телефонным номером.



#13 arsko

arsko
  • Пользователь
  • 265 сообщений

Опубликовано 17.03.2012 - 14:47

А что тут делать, в шаблоне регистрации добавить поле номер телефона и создать строку в таблице БД, а для отображения в админке номера телефона, откорректируйте файл шаблона админки



#14 filth

filth
  • Пользователь
  • 348 сообщений
  • Пользователь

Опубликовано 16.04.2012 - 15:03

По поводу поиска в админке по номеру телефона. Версия 2.1
код поиска такой

// Поиск
		$keyword = $this->request->get('keyword', 'string');
		if(!empty($keyword))
		{
			$filter['keyword'] = $keyword;
			$this->design->assign('keyword', $keyword);
		}


что добавить???
Спасибо заранее!!!



#15 filth

filth
  • Пользователь
  • 348 сообщений
  • Пользователь

Опубликовано 17.04.2012 - 16:27

АП



#16 Danya

Danya
  • Фрилансер
  • 908 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x

Опубликовано 19.04.2012 - 05:45

beagler

Версия Simpla 2.0.2

По поводу поиска в админке по номеру телефона, у меня файла

/simpla/search_users.php
нет!

есть
/simpla/ajax/search_users.php


изменяю код, но поиск по номеру не работает.



#17 filth

filth
  • Пользователь
  • 348 сообщений
  • Пользователь

Опубликовано 19.04.2012 - 06:41

Аналогично как у Danya. Версия 2.1



#18 kudziama

kudziama
  • Пользователь
  • 9 сообщений

Опубликовано 23.04.2012 - 02:53

Для того чтобы добавить поля к заполнению(индекс, город, и т.п) в корзине надо их прописать в CartView.php? или надо будет еще что то прописывать в базе данных sql , и если прописывать то что именно?
Заранее извиняюсь за нубский вопрос, и заранее спасибо!



#19 Danya

Danya
  • Фрилансер
  • 908 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:1.x, 2.x

Опубликовано 23.04.2012 - 03:07

kudziama

Впринципе всё по аналогии как и с телефоном.



#20 fedot361

fedot361
  • Пользователь
  • 58 сообщений

Опубликовано 28.04.2012 - 04:53

filth
Danya

в файле api/Users.php замените строку

$keyword_filter .= $this->db->placehold('AND u.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR u.email LIKE "%'.mysql_real_escape_string(trim($keyword)).'%"');

на
$keyword_filter .= $this->db->placehold('AND u.name LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR u.email LIKE "%'.mysql_real_escape_string(trim($keyword)).'%" OR u.phone LIKE "%'.mysql_real_escape_string(trim($keyword)).'%"');

для 2.1 после этого поиск будет работать в том числе и по телефону






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых