Вообщем в мы рассматривали способ добавления выключателя в админпанель форума. Сегодня я расскажу как добавить выключатель любого элемента в настройки профиля пользователя. Непонятно? Обьясню на примере
Допустим у вас на форуме установлен мод , который добавляет авы топикстартера и последнего ответившего. Но ведь есть пользователи, которые дорожат трафиком и им совсем ненужно видеть эти аватары. Так вот, после того как вы переварите статью и сделаете все, пользователи смогут в своем профиле отрубить вывод этих аватар только для себя.
Вообще возможности полученного условия (делаем выключатель и получаем универсальное условие) безграничны, с ним пользователи смогут отключить любой элемент, скрипт, код, картинку, разумеется которые вы им позволите выключить. Теперь я надеюсь все понятно, зачем нужна такая вещь. Поехали ....
Начальные условия:
1. Все выключатели будут располагаться по пути - Личный раздел - Личные настройки - Общие настройки (в зависимости от локализации это может быть и не Личный раздел, а Центр пользователя)
2. По ходу статьи вам будут встречаться такие кусочки
ххх - уникальное название вашего счетчика, в названии нельзя использовать русские символы, знаки и пробелы, только буквенный латинский алфавит.XXX - это уникальное название вашего счетчикаххх , только в верхнем регистре.yyy - альтернативное название вашего счетчика, отличное отххх , в названии нельзя использовать русские символы, знаки и пробелы, только буквенный латинский алфавит.
Чтобы данные переменной где то хранились, надо создать поле в БД форума. Для этого надо выполнить SQL запрос следующего вида
Код: Выделить всё
ALTER TABLE `phpbb_users` ADD `user_allow_xxx` TINYINT( 1 ) NOT NULL DEFAULT '0'
Далее мы заранее создадим языковую переменную для нашего выключателя. Открываем файл
Код: Выделить всё
'BIRTHDAY' => 'День рождения',
Код: Выделить всё
'SHOW_XXX' => 'Название выключателя',
Теперь нам надо создать костяк и шкурку выключателя для Личного раздела
Для этого открываем
Код: Выделить всё
'allowpm' => request_var('allowpm', (bool) $user->data['user_allow_pm']),
Код: Выделить всё
'allow_yyy' => request_var('allow_yyy', (bool) $user->data['user_allow_xxx']),
Код: Выделить всё
'user_allow_pm' => $data['allowpm'],
Код: Выделить всё
'user_allow_xxx' => $data['allow_yyy'],
Код: Выделить всё
'S_ALLOW_PM' => $data['allowpm'],
Код: Выделить всё
'S_ALLOW_XXX' => $data['allow_yyy'],
Код: Выделить всё
'S_USER_PM_POPUP' => $user->optionget('popuppm'),
Код: Выделить всё
'S_ALLOW_XXX' => $user->data['user_allow_xxx'] ,
Для стилей на основе сабсильвера открыть шаблон
Код: Выделить всё
<tr>
<td class="row1" width="50%"><b class="genmed">{L_POPUP_ON_PM}</b></td>
<td class="row2"><input type="radio" class="radio" name="popuppm" value="1"<!-- IF S_POPUP_PM --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_YES}</span> <input type="radio" class="radio" name="popuppm" value="0"<!-- IF not S_POPUP_PM --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NO}</span></td>
</tr>
Код: Выделить всё
<tr>
<td class="row1" width="50%"><b class="genmed">{L_SHOW_XXX}:</b></td>
<td class="row2"><input type="radio" class="radio" name="allow_yyy" id="allow_yyy1" value="1"<!-- IF S_ALLOW_XXX --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_YES}</span> <input type="radio" class="radio" name="allow_yyy" id="allow_yyy0" value="0"<!-- IF not S_ALLOW_XXX --> checked="checked"<!-- ENDIF --> /><span class="genmed">{L_NO}</span></td>
</tr>
Код: Выделить всё
<dl>
<dt><label for="popuppm0">{L_POPUP_ON_PM}:</label></dt>
<dd>
<label for="popuppm1"><input type="radio" name="popuppm" id="popuppm1" value="1"<!-- IF S_POPUP_PM --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label for="popuppm0"><input type="radio" name="popuppm" id="popuppm0" value="0"<!-- IF not S_POPUP_PM --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
</dd>
</dl>
Код: Выделить всё
<dl>
<dt><label for="popuppm0">{L_SHOW_XXX}:</label></dt>
<dd>
<label for="popuppm1"><input type="radio" name="allow_yyy" id="allow_yyy1" value="1"<!-- IF S_ALLOW_XXX --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label for="popuppm0"><input type="radio" name="allow_yyy" id="allow_yyy0" value="0"<!-- IF not S_ALLOW_XXX --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
</dd>
</dl>
Код: Выделить всё
<!-- IF S_ALLOW_XXX -->любой код<!-- ENDIF -->