Создаем пользовательский выключатель любого элемента phpbb3

В данном подфоруме будут располагаться все статьи, помогающие освоиться в администрировании форума.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Правила форума
----
Ответить
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет 1 месяц
Откуда: Витебск
Контактная информация:

Создаем пользовательский выключатель любого элемента phpbb3

Сообщение DeaDRoMeO »

Всем доброго времени суток, хотите еще немного магии??? :-0=)

Вообщем в мы рассматривали способ добавления выключателя в админпанель форума. Сегодня я расскажу как добавить выключатель любого элемента в настройки профиля пользователя. Непонятно? Обьясню на примере

Допустим у вас на форуме установлен мод , который добавляет авы топикстартера и последнего ответившего. Но ведь есть пользователи, которые дорожат трафиком и им совсем ненужно видеть эти аватары. Так вот, после того как вы переварите статью и сделаете все, пользователи смогут в своем профиле отрубить вывод этих аватар только для себя.

Вообще возможности полученного условия (делаем выключатель и получаем универсальное условие) безграничны, с ним пользователи смогут отключить любой элемент, скрипт, код, картинку, разумеется которые вы им позволите выключить. Теперь я надеюсь все понятно, зачем нужна такая вещь. Поехали ....

Начальные условия:
1. Все выключатели будут располагаться по пути - Личный раздел - Личные настройки - Общие настройки (в зависимости от локализации это может быть и не Личный раздел, а Центр пользователя)
2. По ходу статьи вам будут встречаться такие кусочки XXX, xxx, yyy, где
  • ххх - уникальное название вашего счетчика, в названии нельзя использовать русские символы, знаки и пробелы, только буквенный латинский алфавит.
  • XXX - это уникальное название вашего счетчика ххх, только в верхнем регистре.
  • yyy - альтернативное название вашего счетчика, отличное от ххх, в названии нельзя использовать русские символы, знаки и пробелы, только буквенный латинский алфавит.
Следите внимательно за регистрами и переменными XXX, xxx по ходу статьи, заменяя это на свои названия !!!

Создаем запись в Базе Данных, где будет храниться значение выключателя

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

Код: Выделить всё

ALTER TABLE  `phpbb_users` ADD  `user_allow_xxx` TINYINT( 1 ) NOT NULL DEFAULT  '0'
Помним о переменных !!!
Создаем языковые переменные

Далее мы заранее создадим языковую переменную для нашего выключателя. Открываем файл language/ru/ucp.php и находим (поиск строки не критичен, можете вставить код после любой строки)

Код: Выделить всё

'BIRTHDAY'					=> 'День рождения',
Вставляем после найденного

Код: Выделить всё

'SHOW_XXX'	    => 'Название выключателя',
Где Название выключателя - это подпись к выключателю для Личного раздела, например - Включить скрипт падающих снежинок. Следите за синтаксисом, не теряйте одинарных ковычек ' !!!

Создаем сам выключатель

Теперь нам надо создать костяк и шкурку выключателя для Личного раздела
Для этого открываем includes/ucp/ucp_prefs.php и находим

Код: Выделить всё

'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'],
Открываем файл includes/functions.php и находим

Код: Выделить всё

'S_USER_PM_POPUP'		=> $user->optionget('popuppm'),
Вставляем после найденного

Код: Выделить всё

'S_ALLOW_XXX'		=> $user->data['user_allow_xxx'] ,
Все, костяк выключателя создан, теперь дадим ему шкурку.
Для стилей на основе сабсильвера открыть шаблон ucp_prefs_personal.html и найти

Код: Выделить всё

<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>&nbsp;&nbsp;<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>&nbsp;&nbsp;<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>
Для стилей на основе просильвер открыть шаблон ucp_prefs_personal.html и найти

Код: Выделить всё

<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 -->
Успехов в ковыряниях :ya_hoo_oo:
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#1
Аватара пользователя
Олег В
Активно общаюсь
Активно общаюсь
Сообщения: 340
Стаж: 11 лет
Контактная информация:

Создаем пользовательский выключатель любого элемента phpbb3

Сообщение Олег В »

Хорошо бы вывести кнопку на главную станицу, ну типа (Украсить форум) а в ней сделать всплывающий список вкл-выкл красивостей! Так было бы как по мне удобнее. В личные настройки редко кто заходит а тут всё на виду. :-00):
#2
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет 1 месяц
Откуда: Витебск
Контактная информация:

Создаем пользовательский выключатель любого элемента phpbb3

Сообщение DeaDRoMeO »

Ну там вроде как аналогичные правки надо сделать для той странице, на которой будут выключатели
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#3
Аватара пользователя
Олег В
Активно общаюсь
Активно общаюсь
Сообщения: 340
Стаж: 11 лет
Контактная информация:

Создаем пользовательский выключатель любого элемента phpbb3

Сообщение Олег В »

DeaDRoMeO писал(а):Ну там вроде как аналогичные правки надо сделать для той странице,
Это я знаю. Просто не все знают что где править и прописывать,вопросами задавят. Поэтому и выдвинул идею исполнения такого варианта. Себе сделаю кнопку на главную. За идею и описание включателя Спасибо!! :uch_tiv:
#4
Ответить