Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
 
 
 
 

 
 
Здесь скоро опять что то будет...
 
 
 
 
 
 
Loading

Вернуться   форум vBSupport.org > vBSupport.org > Гурушник > Кодер

Объявления
  • Изменения в правах
  • Каталог Фрилансеров
  • Добро пожаловать!
  • Premoderation
  • Новичкам!
  • For English speaking users
Ответ
 
Опции темы Опции просмотра
Старый 08.02.2012, 17:12   #1
Эксперт
 
Аватар для SMak044
Описание работы с полем "Подтверждающий PHP код"

При создании своих продуктов часто необходимо создать свои параметры, для управления работы продуктом, например:
  • Включить или выключить продукт
  • Ввести список разделов
  • Включить или отключить функциональность
  • Указать путь к содержанию или файлу
Вы создаете группу настроек и там создаете настройки.
При создании новой настройки, уверен что Вы видели пункт "Подтверждающий PHP код". Лично мне поиск в инете мало что дал... Потому пришлось порыться в функциях форума. И вот что я обнаружил.

В общем то этот параметр абсолютно не страшен и довольно гибок, правда в нем есть и одно существенное ограничение. По своей природе это код функции. Результат ее работы должен вернуть или true или false.
Представьте себе, что вы создаете функцию:
PHP код:
function myfun($a)
{
  
$b 100;
  
  if(
$a <= $b)
  {
    return 
true;
  }
  else
  {
    return 
false;
  }

В поле Подтверждающий PHP код это будет выглядеть вот так:
PHP код:
  $b 100;
  
  if(
$a <= $b)
  {
    return 
true;
  }
  else
  {
    return 
false;
  } 
Теперь немного о том какие данные где берутся и как ими воспользоваться для проверки.
В функцию проверки передается только 2 переменные, при этом вторая переменная лично для меня пока загадка, так как я нигде не нашел ее применение. Для получение в коде функции введенного значения надо обратиться к переменной $data. В результате наше поле Подтверждающий PHP код примет такой вид (с усложнением)
PHP код:
global $vbulletin;
if((
$vbulletin->products['funkit'] == AND $data 0) OR (empty($vbulletin->products['funkit']) AND $data 0))
{
  return 
false;
}
else
{
  if((
$vbulletin->options['funkit_onoff'] == AND $data 0) OR ($vbulletin->options['funkit_pionoff'] == AND $data 0))
  {
    return 
false;
  }
  else
  {
    return 
true;
  }

Как видите проверяется присутствует ли продукт funkit в системе, не выключен ли он в продуктах. Если выключен то возвращает false. Если продукт присутствует, то мы проверяем состояние его параметров и если нам все подходит то пропускаем значение.

Теперь немного о выводе сообщений и подсказок. К сожалению результат работы параметра Подтверждающий PHP код может быть только логическим, но и тут можно манипулировать выводом сообщений. Если результатом работы будет false, то мы можем создать для каждого параметра свое сообщение. Для этого мы должны создать фразу с id следующего вида setting_validation_error_имя_параметра и сохранить ее в области "Сообщения об ошибках". Что мы там будем выводить не имеет значения, так как это HTML. Например я вывел так:
HTML
При срабатывании ошибки это представляется вот так:
errors.png
Как видно, из HTML кода мы может сделать переход в другие разделы настроек, прямо из сообщения о ошибке.

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

Последний раз редактировалось SMak044; 08.02.2012 в 17:18..
  Ответить с цитированием
Сказали Спасибо:
Скрыть список поблагодаривших

AntiPiton (26.04.2012), Azeroth (09.02.2012), kerk (08.02.2012), Orfo (09.02.2012), PGP (29.03.2012), Sampler (29.03.2012), StenLi (29.03.2012), TAIFUN (08.02.2012), Север (09.02.2012)
Рекламка
Реклама на форуме
Старый 08.02.2012, 18:25   #2
kerk
k0t
 
Аватар для kerk
я часто использую это поле, но в основном, это небольшой кусок кода "в одну строку", проверка на заполненность настройки и/или проверка строки/целого числа
никогда особо не парился с такими "расширенными возможностями"
чем больше будет кода в настройках, тем больше кэш, соотв. и нагрузка возрастает с каждым установленым хаком, у которого кучка настроек
оптимальней, я считаю, добавлять хэлп к каждой настройке (в 3.8.7 появилось вроде, прямо при создании своей настройки)
=
а за мануал, спасибо =)
  Ответить с цитированием
Старый 08.02.2012, 19:18   #3
SMak044
Эксперт
 
Аватар для SMak044
kerk, Я и не предлагаю повсеместно использовать проверку. Но вот лично я столкнулся с тем, что еще на уровне включения продукта необходимо проверять наличие другого, например если одна и таже библиотека используеться в разных продуктах, то нет смысла на сервере иметь 2 версии этой библиотеки, да и во многих случаях повторная инициализация библиотеки вызывает ошибку.
Вот простой пример:
Библиотеку phpmorph я использую в нескольких продуктах автоматическое создание меток и объявления зависящеи от содержания. Отчасти по этой причине я сделал Набор дополнительных функций. Во многом действия в первых двух продуктах эдентичны не говоря уже о там что держать несколько версий самой библиотеки и словарей... Потому создав набор дополнительных функций и использовав его функции в первых двух продуктов я столкнулся с проблемой включения продуктов без установки этого набора. Потому простым условием в одну строку мне не удалось обойтись...
  Ответить с цитированием
Старый 29.03.2012, 21:49   #4
PGP
Специалист
 
Аватар для PGP
SMak044, вот это спасибище! Прям в тему в тему Буквально вчера только ковырялся с этим полем. А теперь можно сэкономить на копании кода vB.
Еще раз просто искренне огромное спасибо и поклон до сырой земли! ;)
  Ответить с цитированием
Ответ

Закладки

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



 
 

Текущее время: 03:57 26.05.2012. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.0.0
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot