Редактирование профиля пользователя на отдельной странице в 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]
Стили «style="display:none;"» здесь необходимо удалить. Сохраняете изменения и в этом файле, и затем отправляете его на сайт.
7. Чистите кэш сайта. На этом внедрение нового функционала на ваш сайт закончено.
На что здесь стоит обратить внимание? Если вы захотите изменить адрес страницы редактирования профиля с «setting» на свой – замените все совпадения этого слова во всех шагах установки.
Инструкция тестировалась на DataLife Engine версии 10.6, и проблем в использовании не обнаружилось.
Что показалось непонятным – спрашивайте. До новых встреч!