При создании своих продуктов часто необходимо создать свои параметры, для управления работы продуктом, например:
- Включить или выключить продукт
- Ввести список разделов
- Включить или отключить функциональность
- Указать путь к содержанию или файлу
Вы создаете группу настроек и там создаете настройки.
При создании новой настройки, уверен что Вы видели пункт "
Подтверждающий PHP код". Лично мне поиск в инете мало что дал... Потому пришлось порыться в функциях форума. И вот что я обнаружил.
В общем то этот параметр абсолютно не страшен и довольно гибок, правда в нем есть и одно существенное ограничение. По своей природе это код функции. Результат ее работы должен вернуть или
true или
false.
Представьте себе, что вы создаете функцию:
PHP Code:
function myfun($a)
{
$b = 100;
if($a <= $b)
{
return true;
}
else
{
return false;
}
}
В поле
Подтверждающий PHP код это будет выглядеть вот так:
PHP Code:
$b = 100;
if($a <= $b)
{
return true;
}
else
{
return false;
}
Теперь немного о том какие данные где берутся и как ими воспользоваться для проверки.
В функцию проверки передается только 2 переменные, при этом вторая переменная лично для меня пока загадка, так как я нигде не нашел ее применение. Для получение в коде функции введенного значения надо обратиться к переменной
$data. В результате наше поле
Подтверждающий PHP код примет такой вид (с усложнением)
PHP Code:
global $vbulletin;
if(($vbulletin->products['funkit'] == 0 AND $data > 0) OR (empty($vbulletin->products['funkit']) AND $data > 0))
{
return false;
}
else
{
if(($vbulletin->options['funkit_onoff'] == 0 AND $data > 0) OR ($vbulletin->options['funkit_pionoff'] == 0 AND $data > 0))
{
return false;
}
else
{
return true;
}
}
Как видите проверяется присутствует ли продукт
funkit в системе, не выключен ли он в продуктах. Если выключен то возвращает
false. Если продукт присутствует, то мы проверяем состояние его параметров и если нам все подходит то пропускаем значение.
Теперь немного о выводе сообщений и подсказок. К сожалению результат работы параметра
Подтверждающий PHP код может быть только логическим, но и тут можно манипулировать выводом сообщений. Если результатом работы будет
false, то мы можем создать для каждого параметра свое сообщение. Для этого мы должны создать фразу с id следующего вида
setting_validation_error_имя_параметра и сохранить ее в области "Сообщения об ошибках". Что мы там будем выводить не имеет значения, так как это HTML. Например я вывел так:
HTML
HTML Code:
Вы не можете использовать продукт "Объявления, зависящие от содержания" по одной из следующих причин:<br />
<ol>
<li>У вас не установлен вспомогательный продукт "<a href="http://vbsupport.ru/forum/showthread.php?t=43032" target="_blank">Набор дополнительных функций</a>"</li>
<li>У вас выключен вспомогательный продукт "<a href="options.php?do=options&dogroup=funkit_settings">Набор дополнительных функций</a>"</li>
<li>У вас выключен параметр "<strong>Включить составление списка слов по содержанию страницы темы</strong>" вспомогательного продукт "<a href="options.php?do=options&dogroup=funkit_settings">Набор дополнительных функций</a>"</li>
</ol>
При срабатывании ошибки это представляется вот так:

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