Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   Как использовать условие [userFunc]? (http://forum.typo3.ru/showthread.php?t=4441)

Maria Rykalina 07.09.2007 16:28

Как использовать условие [userFunc]?
 
Нужно выводить контент в зависимости от результата, возвращаемого пользовательской функцией.

Подскажите, пожалуйста:
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

ээээ .... не знаю, что это такое :)


Часовой пояс GMT +4, время: 12:58.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot