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

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


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

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

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

 

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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