Перейти к содержанию
Официальный форум поддержки Simpla

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


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

 

 

Огромное спасибо! Все работает!

 

Вот инструкция, так сказать, пошаговая:

=========Добавление поля "Телефон"
1. В таблице s_users добавляем поле phone с типом varchar и длиной 20

2./view/RegisterView.php
вместо строки
			elseif($user_id = $this->users->add_user(array('name'=>$name,
вставляем
			elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR'],'phone'=>$this->request->post('phone'))))
			
3. /api/Users.php
заменить в двух местах (дописать u.phone)
				$query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.group_id, u.enabled, u.last_ip, 
 на
		$query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.group_id, u.enabled, u.last_ip, u.phone, u.created, g.discount, g.name as group_name FROM __users u LEFT JOIN __groups g ON u.group_id=g.id $where LIMIT 1", $id);

4. /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);

5. /simpla/UserAdmin.php
после
			$user->email = $this->request->post('email');
пишем
			$user->phone = $this->request->post('phone');
			
6. /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>

7. /simpla/design/html/users.tpl
после
					<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">
В админке пользователей вывели.

8. /design/ВАША ТЕМА/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"/>

Настраиваем поиск по телефону
меняем в двух местах
				$keyword_filter .= $this->db->placehold('AND u.name LIKE "%'.mysql_real_escape_strin
на
				$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)).'%"');	
	
9./design/ВАША ТЕМА/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" />

 

Немножко не всё. Подстановка номера телефона (если был указан) при оформлении покупки в корзине:

 

В к этому всему. В файле CartView.php к этим строкам

			else
			{
				$this->design->assign('name', $this->user->name);
				$this->design->assign('email', $this->user->email);			
			}

добавить

 

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

чтоб получилось

 

else
			{
				$this->design->assign('name', $this->user->name);
				$this->design->assign('email', $this->user->email);						$this->design->assign('phone', $this->user->phone);
			}
Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...
  • Ответов 118
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме

Изображения в теме

Намучался уже :(

 

Все делаю по пунктам, все везде понятно. Перестает работать регистрация после пункта

2./view/RegisterView.php
вместо строки
            elseif($user_id = $this->users->add_user(array('name'=>$name,
вставляем
            elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR'],'phone'=>$this->request->post('phone'))))

 

ошибка выскакивает выше шапки после заполнения полей и нажатия "зарегистрировать":

 

Warning: Unknown column 'phone' in 'field list' [INSERT INTO s_users SET name='Solo3', email='s2@s.ru', password='25bd7ffe55e1a928f2cbe03dfbc98ac8', enabled='1', last_ip='188.44.232', phone='222222'] in /home/cp/public_html/api/Database.php on line 105

Warning: Cannot modify header information - headers already sent by (output started at /home/cp/public_html/api/Database.php:105) in /home/cp/public_html/index.php on line 33
 

 

 

Может конечно вся беда в том что я не совсем понял 1 пункт? 

 

1. В таблице s_users добавляем поле phone с типом varchar и длиной 20

Где такая таблица?

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

Намучался уже :(

 

Все делаю по пунктам, все везде понятно. 

 

Может конечно вся беда в том что я не совсем понял 1 пункт? 

 

 

1. В таблице s_users добавляем поле phone с типом varchar и длиной 20
Где такая таблица?

 

 

Совершенно верно, Вам нужно создать поле в БД.

Зайдите в phpMyAdmin (находиться в панели управления хостингом) и выполните SQL запрос вида:

ALTER TABLE s_users ADD phone varchar(20) AFTER name

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

Совершенно верно, Вам нужно создать поле в БД.

Зайдите в phpMyAdmin (находиться в панели управления хостингом) и выполните SQL запрос вида:

ALTER TABLE s_users ADD phone varchar(20) AFTER name

 

Спасибо огромное!

Ошибок больше не возникает, при регистрации телефон принимает. В Панеле управления телефон отображается.

 

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

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

а может кто-то пытался реализовать смену телефона в кабинете пользователя самим пользователем? Пытаюсь сделать по аналогии с паролем, но почему-то при нажатии на "Принять" заодно происходит сбрасывание пароля. если же менять одновременно и пароль и телефон, то всё нормально.
в ваша_версия/html/user.tpl вставил следующий код:

<label>Телефон</label>
	<input type="text" name="phon" data-format=".+" data-notice="Введите телефон" value="{$phon|escape}" maxlength="20" />
              <label><a href='#' onclick="$('#phon').show();return false;">Изменить телефон</a></label>
	<input id="phon" value="" name="phon" type="phon" style="display:none;"/>
	
	<label><a href='#' onclick="$('#password').show();return false;">Change password</a></label>
	<input id="password" value="" name="password" type="password" style="display:none;"/>

	<input type="submit" class="button" value="Submit">

Подскажите, в чём косяк?

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

а может кто-то пытался реализовать смену телефона в кабинете пользователя самим пользователем? Пытаюсь сделать по аналогии с паролем, но почему-то при нажатии на "Принять" заодно происходит сбрасывание пароля. если же менять одновременно и пароль и телефон, то всё нормально.

в ваша_версия/html/user.tpl вставил следующий код:



<label>Телефон</label>
	<input type="text" name="phon" data-format=".+" data-notice="Введите телефон" value="{$phon|escape}" maxlength="20" />
              <label><a href='#' onclick="$('#phon').show();return false;">Изменить телефон</a></label>
	<input id="phon" value="" name="phon" type="phon" style="display:none;"/>
	
	<label><a href='#' onclick="$('#password').show();return false;">Change password</a></label>
	<input id="password" value="" name="password" type="password" style="display:none;"/>

	<input type="submit" class="button" value="Submit">

Подскажите, в чём косяк?

Зачем? он и так спокойно меняется. Стер старый, ввел новый, нажал сохранить

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...

Коллеги, добавлял новое поле, решил сделать дифф, и выложить. Кому надо - пользуйтесь. Добавляете в базу s_users новое поле (в моём случае pallada_id), и накладываете дифф любым удобным способом :)

 

http://pastebin.com/nAqr3iQg

 

Enjoy.

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

Вопросы задают, отвечу и сюда.

 

Это обычный diff, созданный гитом (вы же используете системы контроля версий, господа программисты, верно?). Применять его либо через:


Применение патча к нескольким файлам

https://akm.pp.ua/Linux/inf/PatchDiff.htm

 

либо руками просмотреть изменения и внести в свои файлы. Прочитать что такое diff если не знаем - полезно, пригодится.

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

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

 

Simpla 2.3.3

Ссылка на сообщение
Поделиться на другие сайты
  • 1 месяц спустя...

 

Настраиваем поиск по телефону

меняем в двух местах

                $keyword_filter .= $this->db->placehold('AND u.name LIKE "

%'.mysql_real_escape_strin

на

                $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)).'%"');    

 

в каких файлах надо это менять? все облазил не нашел похожих кодов..... подскажите пожалуйста...

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

После внесения изменений перестали отображаться новые пользователи: 

 

Для отображения списка всех пользователей, нужно в файле api/Users.php в запросах убрать условие LIMIT 1

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

 

Danya

1.Странно, когда я захожу в кабинет - телефон есть.

2. Нужно в /view/CartView.php после

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

добавить

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

 

Все сделал по инструкции, но почему-то в кабинете пользователя телефон не виден. 

Аналогичная ситуация и в админке, если выбираем зареганного пользователя, все показываем, а поле телефон пустое.

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

а в API sql запросе все верно указано? 

посмотрите в get_ что верно указан телефон

Запрос делал такой: ALTER TABLE `s_users` ADD `phone` VARCHAR( 20 ) NOT NULL не знаю верно ли?

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

Привет всем!

Ребята, ну подскажите, может я что то пропустил.

Хочу добавить 3 поля в корзину при оформлении заказа.

 

Отредактировал эти файлы и проверил все по 10 раз, уже незнаю что делать!!!!!!

 

- api/Orders.php

- view/CartView.php

- simpla/OrderAdmin.php

- simpla/design/html/order.tpl

- design/мой_шаблон/html/cart.tpl

- design/мой_шаблон/html/order.tpl

- Поля в базу данных добавил

 

Ошибка вылазеет сразу после того как добавил товар в корзину и перешел в нее.

 

Ошибка такая:

Warning: Cannot modify header information - headers already sent by (output started at /home/wm37831/domains/anunu.ru/public_html/view/CartView.php:1) in /home/wm37831/domains/anunu.ru/public_html/index.phpon line 26

 

Движок: Simpla 2.1.0

Заранее благодарю за ответ!!!!

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

Похоже, файл view/CartView.php  имеет неверную кодировку. Надо UTF-8 (без BOM).

Огромнейшее спасибо!!!! Все заработало!!!!  :)  :)  :) Моей радости нет придела!!! Еще раз большое спасибо!!!!!

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...