» » » Настройки профиля на отдельной странице | | |

Настройки профиля на отдельной странице
С помощью данного хака, вы сможете вывести настройки профиля на отдельную страницу, ЧПУ прилагается. Установка проста не требует создания/загрузки файлов. Автор: Андрей. После установки хака редактирование будет здесь: /user/логин/settings.

Установка:

1. Открываем файл .htaccess и находим этот код:
RewriteRule ^user/([^/]*)(/?)+$ index.php?subaction=userinfo&user=$1 [L]


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


2. В файле engine/modules/profile.php находим код:
 $tpl->set( '{hidemail}', "<input type=\"checkbox\" name=\"allow_mail\" value=\"1\" " . $mailbox . " /> " . $lang['news_noamail'] );
    $tpl->set( '{usertitle}', stripslashes( $row['name'] ) );
    $tpl->set( '{fullname}', stripslashes( $row['fullname'] ) );


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

3. В этом же файле находим:
  if($is_logged and ($member_id['user_id'] == $row['user_id'] or $member_id['user_group'] == 1)) {
        $tpl->copy_template = "<form  method=\"post\" name=\"userinfo\" id=\"userinfo\" enctype=\"multipart/form-data\" action=\"\">" . $tpl->copy_template . "
        <input type=\"hidden\" name=\"doaction\" value=\"adduserinfo\" />
        <input type=\"hidden\" name=\"id\" value=\"{$row['user_id']}\" />
        <input type=\"hidden\" name=\"dle_allow_hash\" value=\"{$dle_login_hash}\" />
        </form>";
    }


Добавить в конец условия (if) дополнение:
AND ($_REQUEST['a'] == "settings")

Вот, что должно получиться:
   if( $is_logged and ($member_id['user_id'] == $row['user_id'] or $member_id['user_group'] == 1) and ($_REQUEST['a'] == "settings") ) {
        $tpl->copy_template = "<form  method=\"post\" name=\"userinfo\" id=\"userinfo\" enctype=\"multipart/form-data\" action=\"\">" . $tpl->copy_template . "
        <input type=\"hidden\" name=\"doaction\" value=\"adduserinfo\" />
        <input type=\"hidden\" name=\"id\" value=\"{$row['user_id']}\" />
        <input type=\"hidden\" name=\"dle_allow_hash\" value=\"{$dle_login_hash}\" />
        </form>";
    }

4. templates/{THEME}/userinfo.tpl

5. Заключаем код профиля в теги [profile] и [/profile], а настройки в [settings] и [/settings]

Я (ge0r) обратил внимание, что после установки этого хака, тег {edituser} будет работать по-старому.
Чтобы тег работал нормально, находим код:
	if( $is_logged and ($member_id['user_id'] == $row['user_id'] OR $member_id['user_group'] == 1) ) {
		$tpl->set( '{edituser}', "<a href=\"javascript:ShowOrHide('options')\">" . $lang['news_option'] . "</a>" );
		$tpl->set( '[not-logged]', "" );
		$tpl->set( '[/not-logged]', "" );

И заменяем на этот:
	if( $is_logged and ($member_id['user_id'] == $row['user_id'] OR $member_id['user_group'] == 1) ) {
		$tpl->set( '{edituser}', "<a href=\"/user/" . stripslashes( $row['name'] ) . "/settings\">" . $lang['news_option'] . "</a>" );
		$tpl->set( '[not-logged]', "" );
		$tpl->set( '[/not-logged]', "" );


Все, готово!

ge0r, хак, профиль, редактировать
Автор:  candro
| Категория: DataLife Engine » Хаки DLE05.07.13
Информация! Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.