Редактирование профиля пользователя на отдельной странице

Редактирование профиля пользователя на отдельной странице

По умолчанию, редактирование профиля пользователя в DLE осуществляется на той же странице, что и сам профиль. Там же, при нажатии на соответствующую ссылку, появляется форма, с помощью которой и происходит редактирование профиля. Мне это показалось не совсем удобным. Поэтому я покажу, как можно вынести редактирование своего (и, соответственно, ваших пользователей) профиля на отдельную страницу.
 
Установка:
1. В корне сайта открыть .htaccess и найти:
RewriteRule ^user/([^/]*)(/?)+$ index.php?subaction=userinfo&user=$1 [L]

Добавить ниже:
RewriteRule ^user/([^/]*)/setting(/?)+$ index.php?subaction=userinfo&user=$1&a=setting [L]

Обратите внимание, в этой строке setting – это будущий адрес страницы редактирования профиля. Если вы захотите изменить адрес страницы редактирования профиля с setting на свой – замените все совпадения этого слова во всех шагах установки.

2. Открыть engine/modules/profile.php и найти:
$tpl->set( '{usertitle}', stripslashes( $row['name'] ) );

Добавить ниже:
if($_REQUEST['a'] == 'setting') {
	
	$tpl->set('[setting]', "");
	$tpl->set('[/setting]', "");
	$tpl->set_block("'\\[profile\\](.*?)\\[/profile\\]'si", "");

} else {
	
	$tpl->set('[profile]', "");
	$tpl->set('[/profile]', "");
	$tpl->set_block("'\\[setting\\](.*?)\\[/setting\\]'si", "");

}

Найти далее:
<input type=\"hidden\" name=\"dle_allow_hash\" value=\"{$dle_login_hash}\" />

И здесь очень внимательно. На разных версиях условие всего этого блока выглядит по-разному. В нашем же случае условие выглядело так:
if( $is_logged and ($member_id['user_id'] == $row['user_id'] or $member_id['user_group'] == 1) ) {

Сразу перед последней скобкой добавить:
AND ($_REQUEST['a'] == "setting")

Чтобы получилось следующее:
if($is_logged and ($member_id['user_id'] == $row['user_id'] or $member_id['user_group'] == 1) AND ($_REQUEST['a'] == "setting")) {

Найти далее:
$tpl->set( '{edituser}', "<a href=\"javascript:ShowOrHide('options')\">" . $lang['news_option'] . "</a>" );

Заменить на:
$tpl->set('{edituser}', "<a href=\"".$config['http_home_url']."user/".urlencode($row['name'])."/setting/\">Редактировать профиль</a>");


3. Открыть шаблон userinfo.tpl и все, что касается самого профиля, следует заключить в теги:
[profile] Код профиля [/profile]

Все, что относится к редактированию следует заключить в теги:
[setting] Код формы [/setting]

если у вас стандартная тема – это код, заключенный в:
<div id="options" style="display:none;">

Готово!
 
Версия DLE: 10.6
 
Автор: Артем Мáлков
Источник:
  • Oxigen
  • 0
  • 477
Информация
Оставлять комментарии могут только зарегистрированные посетители.
  • Рейтинг@Mail.ru
  • Яндекс.Метрика