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

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

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

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

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

Сообщение DeaDRoMeO »

Пришло время делиться некоторыми "магическими" фокусами, которые существенно поменяют ваше восприятие phpbb3. Движок phpbb3 и так очень легко подвергается любым изменениям "под себя", легко превращается в неповторимого, легко поддается облегчению администрирования и использования....

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

Наступает Новый Год, вы хотите подключить скрипт снегопада. Подключили. Прошла зима, надо вырезать или комментировать код. А ведь можно сделать проще - выключить скрипт через админку.

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

Начальные условия:
1. Выключатель будет располагаться по пути - Админка - Настройки форума (конференции), после пункта Описание форума (конференции)
2. Далее будет использоваться переменная XXX, вместо нее вы придумываете свою, только на английской раскладке. Внимательно следите за регистром XXX по ходу статьи, допустим, вместо XXX вы придумали TEST, если в статье прописана XXX, то соотвественно заменяем ее на TEST, если xxx - соотвественно test.

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

Для этого надо выполнить SQL запрос следующего вида

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

INSERT INTO phpbb_config (config_name, config_value) VALUES ('enable_xxx', '0');
Надеюсь еще не забыли о своей переменной и ее регистре ??? На всякий выделю ее

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

enable_xxx
А так же, в запросе циферка 0 означает что по умолчанию ваш код выключен, можно вписать и 1 для включения, но это особой роли не сыграет

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

Открываем файл includes/functions.php и находим

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

// The following assigns all _common_ variables that may be used at any point in a template.
	$template->assign_vars(array(
Добавляем после найденного

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

'S_ENABLE_XXX'      => ($config['enable_xxx']) ? true : false ,
Все, выключатель создан, но не до конца....

Добавляем выключатель в Админку

Открываем файл includes/acp/acp_board.php и находим

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

 			legend2'            => 'WARNINGS',
                  'warnings_expire_days'   => array('lang' => 'WARNINGS_EXPIRE',      'validate' => 'int',   'type' => 'text:3:4', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
Добавляем после найденного

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

'legend4'               => 'ENABLE_ELEMENTS',
                  'enable_ххх'         => array('lang' => 'ENABLE_ХХХ',         'validate' => 'bool',   'type' => 'radio:yes_no', 'explain' => true),
Потом, если вы будете еще добавлять несколько выключателей, то добавлять код

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

 'enable_ххх'         => array('lang' => 'ENABLE_ХХХ',         'validate' => 'bool',   'type' => 'radio:yes_no', 'explain' => true),
После

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

'legend4'               => 'ENABLE_ELEMENTS',
Ибо эта строка создает блок, в котором будут ваши выключатели
Костяк создан, надо его немножко оформить ....

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

Открываем файл language/ru/acp/board.php и находим

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

'SITE_DESC'
Вставляем перед найденным

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

'ENABLE_XXX'               => 'Включить (а тут пишите имя своего куска или скрипта, вообщем чтоб сами не путались)',
'ENABLE_XXX_EXPLAIN'               => 'Выберите Да для отображения данного элемента либо Нет для его скрытия',
Найти

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

'EDIT_TIME'
Вставить перед найденным

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

'ENABLE_ELEMENTS'             => 'Включить или выключить элементы',
Запомните !!! Первая вставка делается при каждом новом выключателе, вторая вставка делается только один раз !!!
Так-с, с языком разобрались, финишный рывок ...

Условие для выключателя

Результатом, сделанных выше правок, стало создание собственного уникального условия, действующего по всему форуму. Вот и само условие

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

<!-- IF S_ENABLE_XXX -->Ваш код, скрипт либо другой элемент<!-- ENDIF -->
Надеюсь моя писанина пригодится кому нибудь :-0=) Успехов в творчестве :jn_pu_sk:
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#1
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

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

Сообщение Lorem Ipsum »

Ух ты! :cool_cool:

Только я не поняла, каким образом в админке будут появляться нужные для отмечания пункты? Допустим я обернула условием какой-то код, как оно появится в админке?
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#2
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

DeaDRoMeO писал(а):Добавляем выключатель в Админку
Это добавляет в админку выключатель же)))
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#3
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

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

Сообщение Lorem Ipsum »

Это понятно, что добавляет выключатель.
Я другое имею в виду. Короче, покажи мне скриншот, как это выглядит в админке, я тогда лучше смогу объяснить.
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#4
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

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

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

Сообщение Lorem Ipsum »

Допустим, я установила этот мод. Потом оборачиваю условием вывод опросов на главной. Оно автоматически появляется в админке что ли, чтобы я могла его включать или выключать?
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#6
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

Ну епрст, как же тебе обьяснить, все шаги до заключительного этапа и добавляют переключатель. ДУмай в обратном порядке - После правок появится переключатель и ты можешь использовать условие
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#7
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

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

Сообщение Lorem Ipsum »

Тю, я эту строчку пропустила при чтении. То-то никак понять не могла.
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#8
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

Фуфф, я то думал что с тобой случилось)))
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#9
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

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

Сообщение Lorem Ipsum »

Отлично. Сделала включалку, вернее, выключалку для опросов на главной. Иногда они не нужны, но для этого нужно было лезть в в файлы и прописывать другие значения, а это ужасно. А щас то, что доктор прописал.
Спасибо большое!
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#10
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

На здоровьице, классная это штука))
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#11
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

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

Сообщение Lorem Ipsum »

Мне показалось, что Включалка находится в опасной близости к "Отключить конференцию", сама несколько раз чуть не отключала форум. Да и если выключателей будет много, то они растянут страницу по высоте. Поэтому у себя перенесла в самый низ, под "Предупреждения".
Для того, чтобы Включалка стояла отдельным блоком, нужно создать legend. В этом случае будет legend4, поскольку три уже существуют.
Итак, в includes/acp/acp_board.php найти:

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

legend2'				=> 'WARNINGS',
						'warnings_expire_days'	=> array('lang' => 'WARNINGS_EXPIRE',		'validate' => 'int',	'type' => 'text:3:4', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
После вставить:

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

'legend4'					=> 'ENABLE_ELEMENTS',
						'enable_ххх'         => array('lang' => 'ENABLE_ХХХ',         'validate' => 'bool',   'type' => 'radio:yes_no', 'explain' => true),
Затем создаём языковую переменную для legend. В файле language/ru/acp/board.php найти:

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

'EDIT_TIME'						=> 'Ограничение времени на редактирование',
После добавить:

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

'ENABLE_ELEMENTS'             => 'Включить или выключить элементы',
В результате будет выглядеть так:
elements.jpg
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#12
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

Браво, перенесу в первый пост
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#13
Аватара пользователя
Lorem Ipsum
Прописался тут надолго
Прописался тут надолго
Сообщения: 1974
Стаж: 11 лет 7 месяцев
Контактная информация:

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

Сообщение Lorem Ipsum »

DeaDRoMeO писал(а):Потом, если вы будете еще добавлять несколько выключателей, то добавлять код

Перед

'legend4'
После!
Я уже прошел тот период когда можно было забывать про очистку кеша ©salexcorp
#14
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

Пасиб, попутал)
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#15
Аватара пользователя
Discovery
Зашел немного посидеть
Зашел немного посидеть
Сообщения: 77
Стаж: 9 лет 6 месяцев
Контактная информация:

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

Сообщение Discovery »

Блин жутко хочется себе такую попробовать прикрутить, а для чего применить никак не придумывается... ))
#16
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

Завтра уже 3.1 выйдет, наберетесь опыта и это при создании расширений пригодится
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#17
Аватара пользователя
petroff
Заглянул на огонек
Заглянул на огонек
Сообщения: 28
Стаж: 10 лет 2 месяца
Контактная информация:

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

Сообщение petroff »

Вопрос не совсем по теме, но всё таки.
Если добавлять выключатель в существующий раздел, то всё понятно.

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

'legend4'               => 'ENABLE_ELEMENTS',
                  'enable_ххх'         => array('lang' => 'ENABLE_ХХХ',         'validate' => 'bool',   'type' => 'radio:yes_no', 'explain' => true),
А если усложнить задачу, и попытаться сделать собственный раздел в админке и заменить выключатель на текстовое поле. Админ должен ввести целое число. (ну вот такой загон)
Делать по аналогии с:

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

          legend2'            => 'WARNINGS',  'warnings_expire_days'   => array('lang' => 'WARNINGS_EXPIRE',      'validate' => 'int',   'type' => 'text:3:4', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
Я правильно понимаю, 'validate' => 'int' - проверка на целое число?
'type' => 'text:3:4' -А что здесь?
как правильно прописать для целого числа?
#18
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

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

Сообщение DeaDRoMeO »

Я еще долго не появлюсь за компом, погуглите type в языке php
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#19
Аватара пользователя
белк
Хорошо тут живется
Хорошо тут живется
Сообщения: 1322
Стаж: 10 лет 6 месяцев
Откуда: Россия
Контактная информация:

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

Сообщение белк »

спасибо, интересная и нужная штука. :-00):
три головы - это хорошо. но как же трудно придти к согласию...
* белк может помочь, но ставить за кого-то моды не будет... ни платно, ни бесплатно. *
#20
Ответить