Генератор CSS-свойства «border-radius»   •   Online-инструменты
714 просм
4 комм
Поделиться:

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

По умолчанию, редактирование профиля пользователя в CMS DataLife Engine осуществляется на той же странице, что и сам профиль. Ниже, при нажатии на соответствующую ссылку, появляется форма, с помощью которой и происходит редактирование профиля.

Мне это показалось не совсем удобным. Поэтому я покажу, как можно вынести редактирование своего (и, соответственно, ваших пользователей) профиля на отдельную страницу.

1. Первым делом вам необходимо подключиться к вашему сайту по FTP.

2. Далее в корне вашего сайта откройте файл .htaccess и найдите в нем строку:

RewriteRule ^user/([^/]*)(/?)+$ index.php?subaction=userinfo&user=$1 [L]

Сразу после нее вставьте:

RewriteRule ^user/([^/]*)/setting(/?)+$ index.php?subaction=userinfo&user=$1&a=setting [L]

Обратите внимание, в этой строке «setting» – это будущий адрес страницы редактирования профиля.

Более с этим файлом мы работать не будем, поэтому сохраняем изменения и отправляем его обратно на сайт.

3. Далее открываем для редактирования файл profile.php, находящийся в папке /engine/modules/. В нем ищем строку:

$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", "");

}

4. Здесь же, чуть ниже, ищите:

<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")) {

5. Последней правкой в этом файле будет следующее. Вы ищите строку, похожую на:

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

Сохраняете все изменения в файле и оправляете его обратно на сайт.

6. Открываете файл шаблона userinfo.tpl, находящийся в папке вашей темы, отвечающий за вид персональной страницы пользователя.

Здесь все, что касается самого профиля, – вы заключаете в теги:

[profile]

	Код профиля
	
[/profile]

А все, что относится к редактированию (если у вас стандартная тема – это код, заключенный в:

<div id="options" style="display:none;">

), соответственно, вы заключаете в теги:

[setting]

	Код формы
	
[/setting]

Сохраняете изменения и в этом файле, и затем отправляете его на сайт.

7. Чистите кэш сайта. На этом внедрение нового функционала на ваш сайт закончено.

На что здесь стоит обратить внимание? Если вы захотите изменить адрес страницы редактирования профиля с «setting» на свой – замените все совпадения этого слова во всех шагах установки.

Инструкция тестировалась на DataLife Engine версии 10.6, и проблем в использовании не обнаружилось.

Что показалось непонятным – спрашивайте. До новых встреч!

4
комментария
2.12 в 23:31
На Dle 13.1 Все работает отлично! Но на странице настроек в самом низу показываются материалы ожидающие модерации или инфо о том что их нет. Это можно иправить?
  • 0
bymerpro, можете предоставить доступ к сайту?

FTP + любой профиль.
  • 0
3.12 в 03:55
К сожалению сайт на локалке. Кстати у вас на сайте что-то с авторизацией, ввожу логин и пароль страница просто перегружается и я не авторизируюсь. neutral
  • 0
cotasorum, спасибо за замечание. Была ошибка в коде - исправили. Попробуйте сейчас авторизоваться.
  • 0
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.