сразу оговорюсь, что сам здесь ничего не делал. игрушка заинтересовала и решил попробовать. как я уже здесь где-то писал, я никогда не выкладываю доработки, которые сам, лично, не проверял. эту доработку я установил сюда.
в личном разделе любого пользователя (разумеется, если вы зарегестрированы) теперь в "личных настройках" появилась функция "Размер страницы сайта во весь экран"
то есть, как видите, по умолчанию страничка имеет ширину 1000 px, данный переключатель убирает фиксированность размера и разворачивает страницу практически на весь экран.
решил сделать именно это, так как некоторые пользователи любят смотреть на большом экране.
(надо же было как-то проверить...)
оригинал статьи находится здесь: http://hello-vitebsk.ru/viewtopic.php?f=119&t=2167.
спасибо за разъяснения DeaDRoMeO.
У меня этот переключатель и получившееся творение выглядит так:
Вложение:
Комментарий к файлу: переключатель в личном разделе
Вложение:
Комментарий к файлу: сайт, развёрнутый переключателем
выключатель универсальный, так что можете приделать его для чего угодно.
Итак, начали:
Всем доброго времени суток, хотите еще немного магии???
Сегодня я расскажу как добавить выключатель любого элемента в настройки профиля пользователя. Непонятно? Обьясню на примере
Допустим у вас на форуме установлен мод Avatar of poster on Index and Viewforum, который добавляет авы топикстартера и последнего ответившего. Но ведь есть пользователи, которые дорожат трафиком и им совсем ненужно видеть эти аватары. Так вот, после того как вы переварите статью и сделаете все, пользователи смогут в своем профиле отрубить вывод этих аватар только для себя.
Вообще возможности полученного условия (делаем выключатель и получаем универсальное условие) безграничны, с ним пользователи смогут отключить любой элемент, скрипт, код, картинку, разумеется которые вы им позволите выключить. Теперь я надеюсь все понятно, зачем нужна такая вещь. Поехали .... - от автора оригинальной темы.
Начальные условия:
1. Все выключатели будут располагаться по пути - Личный раздел - Личные настройки - Общие настройки (в зависимости от локализации это может быть и не Личный раздел, а Центр пользователя)
2. По ходу статьи вам будут встречаться такие кусочкиXXX, xxx, yyy, где
ххх - уникальное название вашего счетчика, в названии нельзя использовать русские символы, знаки и пробелы, только буквенный латинский алфавит.
XXX - это уникальное название вашего счетчика ххх, только в верхнем регистре.
yyy - альтернативное название вашего счетчика, отличное от ххх, в названии нельзя использовать русские символы, знаки и пробелы, только буквенный латинский алфавит.
Следите внимательно за регистрами и переменными XXX, xxx по ходу статьи, заменяя это на свои названия !!!
1. Создаем запись в Базе Данных, где будет храниться значение выключателя
Чтобы данные переменной где то хранились, надо создать поле в БД форума. Для этого надо выполнить SQL запрос следующего вида:
если не хотите (или нет возможности) проводить SQL-запрос вручную, можно скачать файл для создания:
Скачать себе, распаковать и загрузить в корень сайта (где файл config.php). После этого запустить установщик через браузер по адресу
после отработки запроса удалить с сервера.
Чтобы данные переменной где то хранились, надо создать поле в БД форума. Для этого надо выполнить SQL запрос следующего вида:
Код: Выделить всё
ALTER TABLE `phpbb_users` ADD `user_allow_xxx` TINYINT( 1 ) NOT NULL DEFAULT '0'
если не хотите (или нет возможности) проводить SQL-запрос вручную, можно скачать файл для создания:
Вложение:
Скачать себе, распаковать и загрузить в корень сайта (где файл config.php). После этого запустить установщик через браузер по адресу
Код: Выделить всё
http://ваш сайт/db_update.php
после отработки запроса удалить с сервера.
2. Создаем языковые переменные
Открыть файл language/ru/ucp.php и найти (поиск строки не критичен, можете вставить код после любой строки)
вставить после найденного
Название выключателя - это название, которое будет отображаться в личном разделе.
Открыть файл 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
для стилей на основе prosilver
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.
Если что ещё придумаю в качестве улучшения - допишу.