info navigation

phpbb-belk.ru

темы, связанные с форумом phpbb 3.0.x



Новая тема  [ 1 сообщение ]  Просмотры: 3001

Автор Сообщение
Не в сети
(Андрей)  
Администратор
Аватара пользователя

Стаж: 9 лет 1 месяц 14 дней
Сообщения: 1233
Откуда: здешние мы


Стиль: subsilver2


Репутация: 11


Russia

Тиц и PR

перейти на сайт пользователя
Найти темы пользователя


Создание нового выключателя в личном разделе

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

оригинал статьи находится здесь: http://hello-vitebsk.ru/viewtopic.php?f=119&t=2167.
спасибо за разъяснения DeaDRoMeO.

У меня этот переключатель и получившееся творение выглядит так:

Вложение:
Комментарий к файлу: переключатель в личном разделе
100VIDPM.png
100VIDPM.png [ 103.04 КБ | Просмотров: 3000 ] 100VIDPM.png



Вложение:
Комментарий к файлу: сайт, развёрнутый переключателем
100VID.png
100VID.png [ 135.92 КБ | Просмотров: 3000 ] 100VID.png



выключатель универсальный, так что можете приделать его для чего угодно.

Итак, начали:

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

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

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

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

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

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

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

ALTER TABLE  `phpbb_users` ADD  `user_allow_xxx` TINYINT( 1 ) NOT NULL DEFAULT  '0'


если не хотите (или нет возможности) проводить SQL-запрос вручную, можно скачать файл для создания:

Вложение:
Комментарий к файлу: установщик
db_update.rar [1.25 КБ]
Скачиваний: 33


Скачать себе, распаковать и загрузить в корень сайта (где файл config.php). После этого запустить установщик через браузер по адресу

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

http://ваш сайт/db_update.php


после отработки запроса удалить с сервера.


2. Создаем языковые переменные

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

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

'BIRTHDAY'               => 'День рождения',


вставить после найденного

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

'SHOW_XXX'       => 'Название выключателя',


Название выключателя - это название, которое будет отображаться в личном разделе.


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

Открыть 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'] ,


4. Оформление выключателя в шаблоне

для стилей на основе subsilver2
Открыть ваш стиль/template/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>

для стилей на основе prosilver
Открыть ваш стиль/template/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>


5. Завершение создания

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

Условие, в которое необходимо "обернуть" код, который вы будете отключать, выглядит так:

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

<!-- IF S_ALLOW_XXX -->любой код<!-- ENDIF -->


В первый раз я создал новый выключатель строго по теме, то есть с xxx, yyy и XXX для проверки. всё отлично работает.
Потом, также для проверки и "на будущее" создал ещё один рядом с переменными ddd, zzz, DDD. тоже всё получилось на "ура".

если кому интересно, условие для "обёртывания" у меня выглядит так:

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

<!-- IF S_ALLOW_XXX -->{$BEL_BLOCK_MAIN_START_100}<!-- ELSE -->{$BEL_BLOCK_MAIN_START}<!-- ENDIF -->


то есть

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

<!-- IF S_ALLOW_XXX -->размер во весь экран<!-- ELSE -->фиксированный размер<!-- ENDIF -->


Это тоже полностью конструктор. Экспериментируйте. Ещё раз спасибо автору темы DeaDRoMeO.

Если что ещё придумаю в качестве улучшения - допишу.


трёхголовый белк семейства рептилоидов:
"три головы - хорошо, на как же трудно придти к согласию..."
личный раздел,phpbb 3.0,форум,выключатель
Показать сообщения за:  Поле сортировки  
Ответить на тему  [ 1 сообщение ] 

Кто сейчас на сайте:

Всего посетителей: 0, из них зарегистрированных: 0, скрытых: 0 и гостей: 0 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (122) здесь было 19 дек 2023, 12:10

Сейчас этот раздел просматривают: нет зарегистрированных пользователей и гости: 0



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения
Вы не можете защищать свои темы паролем

Найти:
Перейти:  




cron

Текущее время: 06 ноя 2024, 03:57

Создано на основе phpBB® Forum Software © phpBB Group
Яндекс.Метрика

Полная версия Мобильный вид