Перейти к контенту

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


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

Вывод дополнительной информации в профиле пользователя из базы данных.

Итак приступим.

 

Допустим у нас есть таблица в базе данных:

CREATE TABLE `ibf_members_stats` (
`id` MEDIUMINT( 8 ) NOT NULL ,
`points` INT( 10 ) NOT NULL ,
`mana` INT( 10 ) NOT NULL ,
PRIMARY KEY ( `id` ) 
);

, либо есть дополнительные поля в таблицах, информация из которых и так выводится в профиле(ibf_members, ibf_member_extra и другие, см. ниже).

 

Подготовка:

Добавляем языковые переменные для таблицы в профиле. Этот пункт можно пропустить, если используется один язык и прописать текст прямо в шаблоне.[/b]

Открываем ./cache/lang_cache/язык/lang_profile.php, добавляем в массив следующее:

	function profile_get_all( $a )
{
	return "SELECT m.*[color="#8B0000"][b], ms.*[/b][/color], me.*, s.location_1_id, s.location_2_id, s.location_1_type, s.location_2_type, s.running_time, s.location as sesslocation, p.*
				FROM ".SQL_PREFIX."members m
					LEFT JOIN ".SQL_PREFIX."member_extra me ON ( me.id=m.id )
					LEFT JOIN ".SQL_PREFIX."sessions s ON (s.member_id=m.id)
					LEFT JOIN ".SQL_PREFIX."profile_portal p ON (p.pp_member_id=m.id)
					[color="#8B0000"][b]LEFT JOIN ".SQL_PREFIX."members_stats ms ON (ms.id=m.id)[/b][/color]
				WHERE m.id={$a['mid']}";
}

Будьте аккуратны с запятой в начале запроса! Если же наше поле содержится в таблицах members, member_extra или profile_portal, то изменять запрос не надо, эти данные и так попадут в скрипт.

 

2. Добавляем таблицу для вывода данных в шаблон профиля.

Открываем шаблон skin_profile->show_profile, ищем:

		$this->ipsclass->DB->build_query( array( 'select'   => 'm.*',
											 'from'     => array( 'members' => 'm' ),
											 'where'    => $query,
											 'add_join' => array( 0 => array( 'select' => 'me.*',
																			  'from'   => array( 'member_extra' => 'me' ),
																			  'where'  => 'me.id=m.id',
																			  'type'   => 'left' ),
																  1 => array( 'select' => 'pp.*',
																			  'from'   => array( 'profile_portal' => 'pp' ),
																			  'where'  => 'pp.pp_member_id=m.id',
																			  'type'   => 'left' ),
													   			  2 => array( 'select' => 'g.*',
																			  'from'   => array( 'groups' => 'g' ),
																			  'where'  => 'g.g_id=m.mgroup',
																			  'type'   => 'left' ),
																  3 => array( 'select' => 's.location_1_id, s.location_2_id, s.location_1_type, s.location_2_type, s.running_time, s.location as sesslocation',
																 			  'from'   => array( 'sessions' => 's' ),
																			  'where'  => "s.member_id=m.id",
																			  'type'   => 'left' ),
																  [color="#8B0000"][b]5 => array( 'select' => 'ms.*',
																 			  'from'   => array( 'members_stats' => 'ms' ),
																			  'where'  => "ms.id=m.id",
																			  'type'   => 'left' ),[/b][/color]
																  4 => array( 'select' => 'pc.*',
																			  'from'   => array( 'pfields_content' => 'pc' ),
																			  'where'  => 'pc.member_id=m.id',
																			  'type'   => 'left' ) ) ) );
	$this->ipsclass->DB->exec_query();

Будьте аккуратны с запросом! Если же наше поле содержится в таблицах members, member_extra или profile_portal, то изменять запрос не надо, эти данные и так попадут в скрипт.

 

2. Добавляем таблицу для вывода данных в шаблон профиля.

Открываем шаблон skin_profile->personal_portal_main, ищем:

			<!-- Interests -->
		<if="$member['_interests']">
			<div class='pp-header'>{$this->ipsclass->lang['interests']}</div>
			<div class='row1' style='padding:6px; margin-bottom:1px; padding-left:10px' id='pp-personal_statement'>
				{$member['_interests']}
			</div>
		</if>
		<!-- / Interests -->

Добавляем после:

			<!-- Stats -->
		<div class='pp-header'>{$this->ipsclass->lang['stats_title']}</div>
		<div class='row1' style='padding:6px; margin-bottom:1px; padding-left:10px' id='pp-personal_statement'>{$this->ipsclass->lang['stats_points']}: {$member['points']}</div>
		<div class='row1' style='padding:6px; margin-bottom:1px; padding-left:10px' id='pp-personal_statement'>{$this->ipsclass->lang['stats_mana']}: {$member['mana']}</div>
		<!-- / Stats -->

3. Добиваемся передачи выбранной из базы информации в шаблоны профиля.

В случае профиля портала никаких дополнительных действий для повления непосредственно данных в профиле делать не надо, однако если нужно сделать скажем форматирование чисел, то сделать надо вот что:

Открываем ./sources/action_public/profile.php, ищем:

		//-----------------------------------------
	// PHOTO
	//-----------------------------------------

	$member = $this->personal_portal_set_information( $member );

Добавляем после:

		$member['points'] = $this->ipsclass->do_number_format($member['points']);
	$member['mana'] = $this->ipsclass->do_number_format($member['mana']);

В этом месте $member - массив, который будет передан в шаблон. В этот момент можно делать с данными всё что угодно.

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

Продолжение экскурса в модифицирование страниц: шаблонов и связанного с ними кода.

 

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

Но не через дополнительные поля. Например, это можно использовать с некоторой модификацией для вывода на страницу регистрации ввода пола, интересов, других стандартных полей.

 

Допустим у нас есть поле xxx_field в таблице ibf_members, которое мы хотим заполнять при регистрации.

(

ALTER TABLE `ibf_members` ADD `xxx_field` VARCHAR( 32 ) NOT NULL ;

)

 

1. Добавляем языковые переменные. Этот пункт можно пропустить, если используется один язык и прописать текст прямо в шаблоне.

Открываем ./cache/lang_cache/язык/lang_register.php, добавляем в массив следующее:

		$member = array(
					 'name'                   => $in_username,
					 'members_l_username'     => strtolower( $in_username ),
					 'members_display_name'   => $this->ipsclass->vars['auth_allow_dnames'] ? $members_display_name : $in_username,
					 'members_l_display_name' => strtolower( $this->ipsclass->vars['auth_allow_dnames'] ? $members_display_name : $in_username ),
					 'member_login_key'       => $this->ipsclass->converge->generate_auto_log_in_key(),
					 'member_login_key_expire' => $_mke_time,
					 'email'                  => $in_email,
					 'mgroup'                 => $mem_group,
					 'posts'                  => 0,
					 'joined'                 => time(),
					 'ip_address'             => $this->ipsclass->ip_address,
					 'time_offset'            => $this->ipsclass->input['time_offset'],
					 'view_sigs'              => 1,
					 'email_pm'               => 1,
					 'view_img'               => 1,
					 'view_avs'               => 1,
					 'restrict_post'          => 0,
					 'view_pop'               => 1,
					 'msg_total'              => 0,
					 'new_msg'                => 0,
					 'coppa_user'             => $coppa,
					 'language'               => $this->ipsclass->vars['default_language'],
					 'members_auto_dst'       => 1,
					 'members_editor_choice'  => $this->ipsclass->vars['ips_default_editor'],
					 'allow_admin_mails'      => intval( $this->ipsclass->input['allow_admin_mail'] ),
					 'hide_email'             => $this->ipsclass->input['allow_member_mail'] ? 0 : 1,
					 'subs_pkg_chosen'        => intval( $this->ipsclass->input['subspackage'] )
				   );

Добавляем в массив элемент по примеру:

		$member = array(
					 'name'                   => $in_username,
					 'members_l_username'     => strtolower( $in_username ),
					 'members_display_name'   => $this->ipsclass->vars['auth_allow_dnames'] ? $members_display_name : $in_username,
					 'members_l_display_name' => strtolower( $this->ipsclass->vars['auth_allow_dnames'] ? $members_display_name : $in_username ),
					 'member_login_key'       => $this->ipsclass->converge->generate_auto_log_in_key(),
					 'member_login_key_expire' => $_mke_time,
					 'email'                  => $in_email,
					 'mgroup'                 => $mem_group,
					 'posts'                  => 0,
					 'joined'                 => time(),
					 'ip_address'             => $this->ipsclass->ip_address,
					 'time_offset'            => $this->ipsclass->input['time_offset'],
					 'view_sigs'              => 1,
					 'email_pm'               => 1,
					 'view_img'               => 1,
					 'view_avs'               => 1,
					 'restrict_post'          => 0,
					 'view_pop'               => 1,
					 'msg_total'              => 0,
					 'new_msg'                => 0,
					 'coppa_user'             => $coppa,
					 'language'               => $this->ipsclass->vars['default_language'],
					 'members_auto_dst'       => 1,
					 'members_editor_choice'  => $this->ipsclass->vars['ips_default_editor'],
					 'allow_admin_mails'      => intval( $this->ipsclass->input['allow_admin_mail'] ),
					 'hide_email'             => $this->ipsclass->input['allow_member_mail'] ? 0 : 1,
					 [b][color="#8B0000"]'xxx_field'             => trim($this->ipsclass->input['xxx']),[/color][/b]
					 'subs_pkg_chosen'        => intval( $this->ipsclass->input['subspackage'] )
				   );

 

4. Теперь поддержка редактирования поля в личных данных, на странице «Изменить личные данные».

Открываем ./cache/lang_cache/язык/lang_ucp.php, добавляем в массив следующее:

		//-----------------------------------------
	// Throw to the DB
	//-----------------------------------------

	$this->ipsclass->DB->do_update( 'members', array (
													  'restrict_post'      => $restrict_post,
													  'mgroup'             => $this->ipsclass->input['mgroup'],
													  'title'              => $this->ipsclass->input['title'],
													  'language'           => $this->ipsclass->input['language'],
													  'skin'               => $this->ipsclass->input['skin'],
													  'hide_email'         => $this->ipsclass->input['hide_email'],
													  'email_pm'           => $this->ipsclass->input['email_pm'],
													  'posts'              => $this->ipsclass->input['posts'],
													  'bday_day'		   => intval($this->ipsclass->input['bday_day']),
													  'bday_month'		   => intval($this->ipsclass->input['bday_month']),
													  'bday_year'		   => intval($this->ipsclass->input['bday_year']),
													  'mod_posts'          => $mod_queue,
													  'org_perm_id'        => $permid,
													  'warn_level'         => intval( $this->ipsclass->input['warn_level'] ),
													  'members_disable_pm' => intval( $this->ipsclass->input['members_disable_pm'] ),
													  'mgroup_others'      => $_POST['mgroup_others'] ? ','.implode( ",", $_POST['mgroup_others'] ).',' : '',
											) , 'id='.$this->ipsclass->input['mid']      );

Видоизменить до вида:

		//-----------------------------------------
	// Throw to the DB
	//-----------------------------------------

	$this->ipsclass->DB->do_update( 'members', array (
													  'restrict_post'      => $restrict_post,
													  'mgroup'             => $this->ipsclass->input['mgroup'],
													  'title'              => $this->ipsclass->input['title'],
													  'language'           => $this->ipsclass->input['language'],
													  'skin'               => $this->ipsclass->input['skin'],
													  'hide_email'         => $this->ipsclass->input['hide_email'],
													  'email_pm'           => $this->ipsclass->input['email_pm'],
													  'posts'              => $this->ipsclass->input['posts'],
													  'bday_day'		   => intval($this->ipsclass->input['bday_day']),
													  'bday_month'		   => intval($this->ipsclass->input['bday_month']),
													  'bday_year'		   => intval($this->ipsclass->input['bday_year']),
													  'mod_posts'          => $mod_queue,
													  'org_perm_id'        => $permid,
													  'warn_level'         => intval( $this->ipsclass->input['warn_level'] ),
													  'members_disable_pm' => intval( $this->ipsclass->input['members_disable_pm'] ),
													  [b][color="#8B0000"]'xxx_field'          => $this->ipsclass->input['xxx_field'],[/color][/b]
													  'mgroup_others'      => $_POST['mgroup_others'] ? ','.implode( ",", $_POST['mgroup_others'] ).',' : '',
											) , 'id='.$this->ipsclass->input['mid']      );

 

P.S. И на закуску: Пусть нам при регистрации нужно создать запись для нового пользователя в таблице для описанной выше статистики.

1. В register.php в create_account() находим:

		//-----------------------------------------
	// Insert: MEMBER EXTRA
	//-----------------------------------------

	$this->ipsclass->DB->do_insert( 'member_extra', array( 'id'		=> $member_id,
														   'vdirs'	 => 'in:Входящие|sent:Отправленные',
														   'interests' => '',
														   'signature' => '' ) );

Добавляем после(можно и значения по умолчанию вписать, если в БД они не заданы или туда нужно внести что-то из введённого пользователем на странице):

		//-----------------------------------------
	// Insert: STATS
	//-----------------------------------------

	$this->ipsclass->DB->do_insert( 'members_stats', array( 'id' => $member_id ) );

2. В ./sources/action_admin/member.php в member_do_add() найти:

		//-----------------------------------------
	// Insert: MEMBER EXTRA
	//-----------------------------------------

	$this->ipsclass->DB->do_insert( 'member_extra', array( 'id'		=> $member_id,
														   'vdirs'	 => 'in:Входящие|sent:Отправленные',
														   'interests' => '',
														   'signature' => '' ) );

Добавить после:

		//-----------------------------------------
	// Insert: STATS
	//-----------------------------------------

	$this->ipsclass->DB->do_insert( 'members_stats', array( 'id' => $member_id ) );

Найти в member_delete_do($id):

		$this->ipsclass->DB->do_delete( 'member_extra'	, "id".$mids );

Добавить после:

		$this->ipsclass->DB->do_delete( 'members_stats'   , "id".$mids );

 

Открыть ./sources/tasks/removevalidating.php, найти:

$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'members'		 , 'where' => "id IN(".implode(",",$mids).")" ) );

Добавить после:

$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'members_stats'		 , 'where' => "id IN(".implode(",",$mids).")" ) );

 

P.P.S. О замеченных багах в статье просьба сообщать мне в ПМ.

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

V I R U S, отвечаю на вопрос про ник :D

 

Предположим всё что я писал выше нам нужно для интеграции форума с какой-то другой системой, которая и будет использовать таблицу ibf_members_stats. А для вывода информации этим скриптом нужно будет выводить и ник пользователя. Можно было бы конечно использовать ник, хранящийся в поле members_display_name таблицы ibf_members. Но, как можно легко проверить, это поле хранит очищенный от спецсимволов ник, где некоторые символы заменены из html-представлениями. Что же нам делать? Мы можем во все функции форума, которые ответственны за изменение ника дописать обратный конверт в символы + запись в таблицу ibf_members_stats.

 

1. Создаём столбец mname в таблице ibf_members_stats:

ALTER TABLE ibf_members_stats ADD mname VARCHAR(50);

 

2. Создаём в ipsclass функцию для чистки имени:

Открыть ./sources/ipsclass.php, добавить в класс функцию:

	/**
* Clean member name
*
* @param  string Cleaned display name
* @return string Display name
*/
function clean_members_stats_name($display_name)
{
	// Здесь вы можете очистить имя от тех символов, которые не должны попадать в имя, например:
	$display_name = str_replace( "'", "'"  , $display_name );

	return $display_name;
}

 

3. Регистрация:

Открыть ./sources/action_public/registration.php, найти добавленный нами инсерт строки в ibf_members_stats при регистрации:

		//-----------------------------------------
	// Insert: STATS
	//-----------------------------------------

	$this->ipsclass->DB->do_insert( 'members_stats', array( 'id' => $member_id ) );

Заменить на:

		//-----------------------------------------
	// Insert: STATS
	//-----------------------------------------

	$this->ipsclass->DB->force_data_type = array( 'mname' => 'string' );
	$members_stats_name = $this->ipsclass->vars['auth_allow_dnames'] ? $_POST['members_display_name'] : $_POST['UserName'];
	$this->ipsclass->DB->do_insert( 'members_stats', array( 'id' => $member_id, 'mname' => $this->ipsclass->clean_members_stats_name($members_stats_name) ) );

 

4. Изменение пользователя админом:

Открыть ./sources/action_admin/member.php, найти:

		//-----------------------------------------
	// Still here? Change it then
	//-----------------------------------------

	$this->ipsclass->DB->force_data_type = array( 'members_display_name' => 'string', 'members_l_display_name' => 'string' );	
	$this->ipsclass->DB->do_update( 'members'	   , array( 'members_display_name' => $display_name, 'members_l_display_name' => strtolower($display_name) ), "id="			.$member['id'] );

Добавить после:

		$this->ipsclass->DB->force_data_type = array( 'mname' => 'string' );	
	$this->ipsclass->DB->do_update( 'members_stats' , array( 'mname' => $this->ipsclass->clean_members_stats_name($_POST['new_name']) ), "id=".$member['id'] );

Найти:

		if ( ! $this->ipsclass->vars['auth_allow_dnames'] )
	{
		//-----------------------------------------
		// Not using sep. display names?
		//-----------------------------------------

		$this->ipsclass->DB->force_data_type = array( 'members_display_name' => 'string', 'members_l_display_name' => 'string' );

		$this->ipsclass->DB->do_update( 'members' , array( 'members_display_name' => $new_name, 'members_l_display_name' => strtolower( $new_name ) ), 'id=' . $mid );

Добавить после:

			$this->ipsclass->DB->force_data_type = array( 'mname' => 'string' );	
		$this->ipsclass->DB->do_update( 'members_stats' , array( 'mname' => $this->ipsclass->clean_members_stats_name($_POST['new_name']) ), "id=".$mid );

 

5. Изменение ника пользователем:

Открыть ./sources/action_public/usercp.php, найти:

		$this->ipsclass->DB->force_data_type = array( 'members_display_name' => 'string', 'members_l_display_name' => 'string' );	
	$this->ipsclass->DB->do_update( 'members'	   , array( 'members_display_name'   => $display_name,
	 														 'members_l_display_name' => strtolower( $display_name ) ), "id=" . $this->ipsclass->member['id'] );

Добавить после:

		$this->ipsclass->DB->force_data_type = array( 'mname' => 'string' );	
	$this->ipsclass->DB->do_update( 'members_stats' , array( 'mname' => $this->ipsclass->clean_members_stats_name($_POST['display_name']) ), "id=".$this->ipsclass->member['id'] );

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

  • 5 месяцев спустя...

Уважаемый Sannis спасибо за инструкции :D

не могли бы вы еще сделать инструкцию по реализации поиска по этим самым дополнительным переменным?

Причём в формате ссылки

http://www.google.ru/search?hl=ru&q=%EF%F0%E8%E2%E5%F2&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=

как в гугле кпримеру

И еще при поиске по форуму есть защита от загрузки БД на частое обращение но в поиске по пользователям я так понял нету насколько ли это критично особенно если около 32,000 пользователей ?

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

  • 1 месяц спустя...

Сорри, поиском не нашёл...

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

Как такое м.б.? Что делать?

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

  • 1 месяц спустя...
А есть ли возможность перепрограммить мод дополнительных полей, чтобы при регистрации пользователю задавался конкретный вопрос, и на него должен быть дан конкретный ответ? И как сделать чтобы была некая база вопросов (около 5-10) с конкретным ответом для каждого из них? А то спам-боты уже замахали.
Ссылка на комментарий
Поделиться на других сайтах

А есть ли возможность перепрограммить мод дополнительных полей, чтобы при регистрации пользователю задавался конкретный вопрос, и на него должен быть дан конкретный ответ? И как сделать чтобы была некая база вопросов (около 5-10) с конкретным ответом для каждого из них? А то спам-боты уже замахали.

В архиве есть такой мод, один в один.

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

  • 1 год спустя...

добавление ДАТЫ РОЖДЕНИЯ (найдено тут и немножечко творчески обработано)

 

открываем ./sources/action_public/register.php

 

находим

		//-----------------------------------------
	// Boxes checked?
	//-----------------------------------------

 

вставляем ПЕРЕД

		//-----------------------------------------
	// Format the birthday drop boxes..
	//-----------------------------------------

	$day  = "<option value='0'>--</option>";
	$mon  = "<option value='0'>--</option>";
	$year = "<option value='0'>--</option>";

	for( $i = 1; $i < 32; $i++ )
	{
		$day .= "<option value='$i'>$i</option>";
	}

	for( $i = 1; $i < 13; $i++ )
	{
		$mon .= "<option value='$i'>".$this->ipsclass->lang['month'.$i]."</option>";
	}

	$date = getdate();
	$i = $date['year'] - 1;
	$j = $date['year'] - 100;

	for( $i; $j < $i; $i-- )
	{
		$year .= "<option value='$i'>$i</option>";
	}

	$b_output = "<fieldset><legend><b>{$this->ipsclass->lang['b_date']}</b><br /></legend> <div>{$this->ipsclass->lang['bdate_desc']}</div><br />
	<select name='day' style='width:66px;'>{$day}</select> <select name='month'>{$mon}</select> <select name='year' style='width:66px;'>{$year}</select></fieldset>";

	$this->output = str_replace("<!--{BIRTH_DATE}-->", $b_output, $this->output);

 

дальше

если нужно чтобы дата рождения заполнялась обязательно, делаем следующее, если заполнение добровольное - пропускаем

		//-----------------------------------------
	// Are we asking the member or admin to preview?
	//-----------------------------------------

 

вставляем ПЕРЕД

		//-----------------------------------------
	// Check user's date of birth
	//-----------------------------------------

	$c_cnt = 0;
	foreach( array('day','month','year') as $v )
	{
		if( ! $this->ipsclass->input[$v] )
		{
			$c_cnt++;
		}
	}

	if( $c_cnt > 0 )
	{
		$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'calendar_not_all' ) );
	}

 

дальше находим

      'coppa_user'             => $coppa,
     'language'               => $this->ipsclass->vars['default_language'],

 

вставляем ПЕРЕД

      'bday_day'             => intval($this->ipsclass->input['day']),
     'bday_month'           => intval($this->ipsclass->input['month']),
     'bday_year'            => intval($this->ipsclass->input['year']),

 

сохраняем файлик.

 

открываем ./cache/lang_cache/ru/lang_ucp.php

находим

'b_date'					=> "Ваша дата рождения",

 

вставляем ПОСЛЕ

'bdate_desc'				=> "Укажите день, месяц, год вашего рождения",

 

сохраняем файлик.

 

дальше топаем в админку, Внешний вид -> Изменить HTML шаблоны -> skin_register -> ShowForm

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

<!--{OPTIONAL.FIELDS}-->

вставляем

<!--{BIRTH_DATE}-->

 

сохраняем форму.

Изменено пользователем fishcka
Ссылка на комментарий
Поделиться на других сайтах

  • 10 месяцев спустя...

Добрый вечер

Скажите пожалуйста, как добавить поле пол в профиль юзеров при просмотре его? (в раздел информация)

Это про основное поле

там ещё есть такие поля;

Домашняя страница

Дата рождения

Место жительства

Интересы

скриншот тут http://imglink.ru/show-image.php?id=2d4e9d71e22546b1acf187ffc61596e6

вот сюда как добавить?, в файле profile php что для этого надо прописать ?

ещё не помешает вывести название пола под аватаркой где:

Группа:

Сообщений:

Регистрация:

Пользователь №:

пол <-вот сюда

скриншот http://imglink.ru/show-image.php?id=a6fabdd57841ede84278c823c56f836b

 

PS для ipb 2.3.3

Изменено пользователем isenlek
Ссылка на комментарий
Поделиться на других сайтах

  • 12 лет спустя...
На форуме есть тема с добавлением строчного поля. Так же была тема с добавлением поля в виде иконки в минипрофиле но если первая тема немного не подходит для меня, то вторую тему вообще найти не могу. По всей видимости удалили. Собственно вопрос - какие файлы нужно редактировать для добавления своего поля с иконкой. По типу похожего на ссылку сайта. Если кто то уже делал такое то прошу поделитесь как делали.
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

  Допустимо не более 75 смайлов.

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

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

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

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.