PDA

Просмотр полной версии : Как использовать условие [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-нной в него? Может, есть возможность указать другой файл, специально для пользовательских функций?

Спасибо.

void
07.09.2007, 18:12
Функция обязана быть глобально объявленной и доступной. В принципе, подойдет 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

Спасибо. То, что нужно.

mrlw
25.12.2007, 13:44
а куда эту строчку надо вставлять? в TS Setup? или TS config?

дело в том, что пробовал вставлять - ничего, пишу
page.includeLibs.user_qwert = fileadmin/myfunc.php

файл иклюдится, но условие не выполняется

[userFunc = user_qwert]

где сама функция

function user_qwert() {
echo "user_qwert";
return true;
}

echo - делаю для того, чтобы посмотреть выполяется она или нет

void
25.12.2007, 22:01
Попробуйте объявить функцию в localconf или ext_localconf.

mrlw
25.12.2007, 22:06
делал, работает не так, как нужно .... с тем же условием выполняется почему-то 2 раза ... поэтому и ищу решение с внешним файлом :)

void
25.12.2007, 22:31
Проще сделать синглтон, чем найти, почему выполняется два раза.

mrlw
25.12.2007, 22:33
ээээ .... не знаю, что это такое :)

void
26.12.2007, 00:15
http://ru.wikipedia.org/wiki/Singleton