Добавить поле в профиле пользователя. IPB 2.3.6 - Дизайн и модификация Invision Power Board

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

 

Правила форума

Здесь обсуждаются вопросы оформления форумов IPB 2.x.
Пожалуйста, не оффтопьте, если зашли сюда случайно, и обратите внимание на соседние разделы.
Оформление форумов IPB 3.x.
Настройка форумов, включая установку и техническую настройку скинов.
Размещение рекламы на форумах.
SEO оптимизация форума.
Техническая поддержка наших скинов и модов.

СвернутьПрикрепленные теги

Теги не найдены

  • 2 Страниц +
  • 1
  • 2
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

Добавить поле в профиле пользователя. IPB 2.3.6

#1 Пользователь не на сайте   sergey_privacy ответил: »

 
 
  • Newbie
  • *
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 06-Июль 15
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 06 Июль 2015 - 00:29

Добрый день!
Я в IPB новичок. У меня возникло 2 связанных друг с другом вопроса.
1. Хочу добавить в таблицу данных пользователя новое поле "MyRating_ID". При просмотре пользователем своего профиля он видит поля "Ваш e-mail адрес", "Среднее количество сообщений в день" и т.д. Я хочу ниже добавить свое поле "MyRating_ID", в котором будет отображаться значение из таблицы. Если я правильно понимаю, в одном файле происходит чтение значений из базы, а где то в другом файле лежит "скелет" страницы. Какие файлы надо поправить, чтобы вывести это поле?
2. При регистрации пользователя в базу добавляется новая строка. Т.к. количество полей в ней изменилось, какой файл поправить для того, чтобы регистрация прошла успешно?
0

#2 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 703
  • Регистрация: 20-Март 09
  • Репутация: 2 263
  • IPB version:3.1.x
 

Отправлено 06 Июль 2015 - 12:26

Просмотреть сообщениеsergey_privacy сказал(а):

а где то в другом файле лежит "скелет" страницы

Внешний вид -> %Скин% -> Изменить HTML шаблоны -> skin_profile (просмотр профиля) -> personal_portal_main


Просмотреть сообщениеsergey_privacy сказал(а):

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

Успешность регистрации не зависит от количество полей, так как оно должно иметь дефолтное значение.
/sources/action_public/register.php
0

#3 Пользователь не на сайте   sergey_privacy ответил: »

 
 
  • Newbie
  • *
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 06-Июль 15
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 06 Июль 2015 - 13:35

Просмотреть сообщениеsiv1987 06 Июль 2015 - 12:26 сказал(а):

Внешний вид -> %Скин% -> Изменить HTML шаблоны -> skin_profile (просмотр профиля) -> personal_portal_main

У меня есть доступ к базе данных, есть доступ по ФТП, но нет административной учетной записи.
Сам шаблон находится в файлах или базе данных? Просто подскажите, где искать, чтобы меньше перерывать?


siv1987 сказал(а):

Успешность регистрации не зависит от количество полей, так как оно должно иметь дефолтное значение.
/sources/action_public/register.php

Как это не зависит? В базу данных новая строка вставляется выражением типа INSERT INTO xxx VALUES (1, 2, 3)
Если я в конце добавил поле, то выражение тоже должно стать INSERT INTO xxx VALUES (1, 2, 3, 4). Иначе никто не зарегистрируется.
0

#4 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 814
  • IPB version:I have no IPB
 

Отправлено 06 Июль 2015 - 14:11

Просмотреть сообщениеsergey_privacy сказал(а):

Как это не зависит? В базу данных новая строка вставляется выражением типа INSERT INTO xxx VALUES (1, 2, 3)
Если я в конце добавил поле, то выражение тоже должно стать INSERT INTO xxx VALUES (1, 2, 3, 4). Иначе никто не зарегистрируется.

Это Вы будете так добавлять в phpMyAdmin (и то есть еще второй вариант добавления записи), а форум использует целый класс для работы с БД.
В данном случае метод do_insert
    	$dba   = $this->compile_db_insert_string( $arr );
    	$query = "INSERT INTO ".$this->obj['sql_tbl_prefix']."$tbl ({$dba['FIELD_NAMES']}) VALUES({$dba['FIELD_VALUES']})";

Как раз таки используется второй вариант.
0

#5 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 703
  • Регистрация: 20-Март 09
  • Репутация: 2 263
  • IPB version:3.1.x
 

Отправлено 06 Июль 2015 - 18:26

Просмотреть сообщениеsergey_privacy сказал(а):

Если я в конце добавил поле, то выражение тоже должно стать INSERT INTO xxx VALUES (1, 2, 3, 4). Иначе никто не зарегистрируется.

Не обязательно если поле имеет значение по умолчанию. К тому же, как выше сказал newbie, форум использует спецификацию полей: INSERT INTO tbl_name (col1, col2, col6) VALUES (value1, value2, value6).

Просмотреть сообщениеsergey_privacy сказал(а):

У меня есть доступ к базе данных, есть доступ по ФТП, но нет административной учетной записи.
Сам шаблон находится в файлах или базе данных?

Сам шаблон находится в базе данных и редактируется только через АЦ.
Если есть доступ к бд или фтп, что мешает зарегистрироваться на форуме и поменять через бд группу на администратора? Восстановления доступа к АЦ
1

#6 Пользователь не на сайте   sergey_privacy ответил: »

 
 
  • Newbie
  • *
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 06-Июль 15
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 08 Июль 2015 - 00:07

Просмотреть сообщениеsiv1987 06 Июль 2015 - 18:26 сказал(а):

Сам шаблон находится в базе данных и редактируется только через АЦ.
Если есть доступ к бд или фтп, что мешает зарегистрироваться на форуме и поменять через бд группу на администратора? Восстановления доступа к АЦ


Спасибо, почти разобрался. Поменял себе права, зашел в АЦ, начал разбираться и понял, что неправильно сразу указал, что вообще ищу. Я ищу не поля профиля, а поля личных данных. Соответственно мне нужен раздел "skin_ucp (личные данные пользователя)". Конкретно часть "Обзор вашей учетной записи". Пока пытаюсь найти, но не получается. Не подскажете, какой именно?
0

#7 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 703
  • Регистрация: 20-Март 09
  • Репутация: 2 263
  • IPB version:3.1.x
 

Отправлено 08 Июль 2015 - 09:32

Просмотреть сообщениеsergey_privacy сказал(а):

Соответственно мне нужен раздел "skin_ucp (личные данные пользователя)". Конкретно часть "Обзор вашей учетной записи". Пока пытаюсь найти, но не получается. Не подскажете, какой именно?

skin_ucp (личные данные пользователя) -> splash
1

#8 Пользователь не на сайте   sergey_privacy ответил: »

 
 
  • Newbie
  • *
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 06-Июль 15
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 08 Июль 2015 - 14:32

Просмотреть сообщениеsiv1987 08 Июль 2015 - 09:32 сказал(а):

skin_ucp (личные данные пользователя) -> splash

Спасибо, самое то!
Остался последний вопрос.
В этом шаблоне я добавил текстовое поле и отображение переменной. Переменные, как я вижу, берутся из функции "splash()", которая находится в файле "sources\action_public\usercp.php". Забил тестовые данные в переменую, все отлично отображается.

Заполнение полей выполняет подобная конструкция:
   $info['member_email']    = $this->ipsclass->member['email'];
   $info['member_posts']    = $this->ipsclass->member['posts'];


Сам класс "ipsclass" описан в файле sources\ipsclass.php.
Выбор из базы производится примерно такими запросами:
$member = $this->DB->build_and_exec_query( array( 'select' => "members_cache", 'from' => 'members', 'where' => 'id='.$member_id ) );

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

#9 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 814
  • IPB version:I have no IPB
 

Отправлено 08 Июль 2015 - 15:34

Просмотреть сообщениеsergey_privacy сказал(а):

Сам класс "ipsclass" описан в файле sources\ipsclass.php.

Там же есть комментарии
* // Array of member variables (taken from class_session::$member)
* $ipsclass->member

0

#10 Пользователь не на сайте   sergey_privacy ответил: »

 
 
  • Newbie
  • *
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 06-Июль 15
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 08 Июль 2015 - 15:52

Просмотреть сообщениеnewbie 08 Июль 2015 - 15:34 сказал(а):

Там же есть комментарии
* // Array of member variables (taken from class_session::$member)
* $ipsclass->member


Я вчера до 2 часов ночи просидел над этим файлом, ни фига не смог вернуть нужное поле.
0

#11 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 814
  • IPB version:I have no IPB
 

Отправлено 08 Июль 2015 - 15:58

sources/classes/class_session.php
    function load_member($member_id=0)

Почти сразу же идет выборка полей. Можете добавить свое MyRating_ID.

Дальше использовать $this->ipsclass->member['MyRating_ID']
1

#12 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 703
  • Регистрация: 20-Март 09
  • Репутация: 2 263
  • IPB version:3.1.x
 

Отправлено 08 Июль 2015 - 19:40

Если ваше поле находится в таблице пользователя то достаточно просто

Просмотреть сообщениеnewbie сказал(а):

использовать $this->ipsclass->member['MyRating_ID']


Суперкласс $this->ipsclass кстати доступен также и в шаблонах, не обязательно его значения передавать из других мест.
1

#13 Пользователь не на сайте   newbie ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins.ru Team
  • Сообщений: 2 166
  • Регистрация: 26-Октябрь 11
  • Репутация: 814
  • IPB version:I have no IPB
 

Отправлено 09 Июль 2015 - 08:35

Просмотреть сообщениеsiv1987 08 Июль 2015 - 19:40 сказал(а):

Если ваше поле находится в таблице пользователя то достаточно просто

Суперкласс $this->ipsclass кстати доступен также и в шаблонах, не обязательно его значения передавать из других мест.
Странно. Из комментария следует, что данные берутся из class_session::$member
Открываем и видим
Spoiler
Явно указано, какие поля брать из таблицы.
1

#14 Пользователь на сайте   siv1987 ответил: »

 
 
  • Advanced
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: IPB Skins Team
  • Сообщений: 8 703
  • Регистрация: 20-Март 09
  • Репутация: 2 263
  • IPB version:3.1.x
 

Отправлено 09 Июль 2015 - 08:52

Тогда придется указать свое поле.
Да, так и есть, в двойке поля захардкодены в отличие от тройке где выбираются сразу все поля. Забыл об этом нюансе.
0

#15 Пользователь не на сайте   sergey_privacy ответил: »

 
 
  • Newbie
  • *
  • Insert nick to fast reply form
  • Quote selected text to fast reply form
  • Группа: Пользователи
  • Сообщений: 7
  • Регистрация: 06-Июль 15
  • Репутация: 0
  • IPB version:2.3.x
 

Отправлено 09 Июль 2015 - 12:51

1. В файле sources\action_public\usercp.php вставил строчку
$info['MyRating_ID']    = "zzz " . $this->ipsclass->member['id'] . " " $this->ipsclass->member['MyRating_ID'] . " yyy";



2. В шаблоне я указал необходимое поле и забил тестовые текстовые значения - отображается "zzz ИД пользователя yyy". Мое поле не отображается.

3. В файле sources\classes\class_session.php в функции function load_member($member_id=0) я добавил мое поле:
$this->ipsclass->DB->build_query( array( 'select' => "id, name, mgroup, member_login_key, member_login_key_expire, email, restrict_post, view_sigs, view_avs, view_pop, view_img, auto_track, mod_posts, language, skin, new_msg, show_popup, msg_total, time_offset, posts, joined, last_post, ubs_pkg_chosen, ignored_users, login_anonymous, last_visit, last_activity, dst_in_use, view_prefs, org_perm_id, mgroup_others, temp_ban, sub_end,  has_blog, has_gallery, members_markers, members_editor_choice, members_auto_dst, members_display_name, members_created_remote, members_cache, members_disable_pm, thanks_point, rep_allow, rep_notify, MyRating_ID", 
 'from'   => 'members',
 'where'  => 'id='.$member_id ) );


Результат не изменился. Видимо, где то еще что то не учел.
0

Сообщить об этой теме:


  • 2 Страниц +
  • 1
  • 2
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в этой теме

1 пользователей читают эту тему
0 зарегистрированных, 1 гостей, 0 скрытых


Контактная информация

Вопросы по работе сайта

+7 (917) 501-4765
C 10 до 20 в рабочие дни (время московское)

Техническая поддержка

Контактные данные специалистов

Дизайн форумов

IPB 3.x ¦ IPB 2.x

Бесплатные шаблоны

IPB 3.2 – 3.4 ¦ IPB 3.1 ¦ IPB 3.0 ¦ IPB 2.2 – 2.3 ¦ IPB 2.1 ¦ Клипарт
Лицензия на использование ¦ Ваша поддержка ¦ О проекте
Copyright © 2005-2016 IPBSkins.ru Team
При копировании материалов с сайта
прямая ссылка на источник обязательна