Просмотр полной версии : Как использовать условие [userFunc]?
Maria Rykalina
07.09.2007, 16:28
Нужно выводить контент в зависимости от результата, возвращаемого пользовательской функцией.
Подскажите, пожалуйста:
1. Где должна находиться эта функция (Создать свой файл? Использовать имеющийся?)
2. Какой cObject (если он нужен) использовать, чтобы TypoScript увидел функцию
3. Как должно выглядеть условие, вызывающее функцию с параметрами
Очень нужна любая подсказка. Спасибо.
Valery Romanchev
07.09.2007, 17:48
TSref рулит
userFunc:
Syntax:
[userFunc = user_match(checkLocalIP)]
Comparison:
This call the function ”user_match” with the first parameter ”checkLocalIP”. You write that function. You decide what it checks. Function result is evaluated as true/false.
Example:
Put this function in your localconf.php file:
function user_match($cmd){switch($cmd){case "checkLocalIP":if (strstr(getenv("REMOTE_ADDR"),"192.168")){return true;}break;case "checkSomethingElse":// ....break;}} This condition will return true if the remote address contains ”192.168” - which is what your function finds out.
[userFunc = user_match(checkLocalIP)]
Maria Rykalina
07.09.2007, 17:58
Действительно, рулит!
Спасибо, что вернули в нужное русло поиска. Такой вариант ранее не работал, оказывается, из-за неправильно использованных конструкций вывода.
Еще вопрос: функция обязана содержаться в localconf.php или быть include-нной в него? Может, есть возможность указать другой файл, специально для пользовательских функций?
Спасибо.
Функция обязана быть глобально объявленной и доступной. В принципе, подойдет ext_localconf.php любого установленного расширения. Кроме того (если я не ошибаюсь), можно прописать в TS
config.includeLibs.user_myveryspecialfunc = fileadmin/php/myfunc.php
и объявить эту функцию внутри этого файла.
Maria Rykalina
11.09.2007, 18:25
config.includeLibs.user_myveryspecialfunc = fileadmin/php/myfunc.php
Спасибо. То, что нужно.
а куда эту строчку надо вставлять? в TS Setup? или TS config?
дело в том, что пробовал вставлять - ничего, пишу
page.includeLibs.user_qwert = fileadmin/myfunc.php
файл иклюдится, но условие не выполняется
[userFunc = user_qwert]
где сама функция
function user_qwert() {
echo "user_qwert";
return true;
}
echo - делаю для того, чтобы посмотреть выполяется она или нет
Попробуйте объявить функцию в localconf или ext_localconf.
делал, работает не так, как нужно .... с тем же условием выполняется почему-то 2 раза ... поэтому и ищу решение с внешним файлом :)
Проще сделать синглтон, чем найти, почему выполняется два раза.
ээээ .... не знаю, что это такое :)
http://ru.wikipedia.org/wiki/Singleton
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot