4章 条件

Chapter 4. Conditions

4.1. 条件参照

4.1. Condition reference:

一般注意事項:

値は通常比較の前に空白部分を削られる。
2つのオペレータを使って複数の条件を結合することができる: && (and), || (or)
もう1つの方法として”&&”や” ||”の代わりに“AND”や”OR”を使うこともできる。ANDオペレータはORよりも常に高い優先権を持っている。もしオペレータが何も指定されていなければ、デフォルトでORとなる。

この条件は、ビジターがウィンドウズで(Macではなく)インターネットエクスプローラーでウェブサイトを開いたときに一致する。

[browser = msie] && [system = win]

これはインターネットエクスプローラーかネットスケープと一致する。ネットスケープの場合、バージョンは4以上でなければならない。

[browser = msie] || [browser = netscape] && [version => 4]

General notes:

Values are normally trimmed for whitespaces before comparison.

You may combine several conditions with two operators: && (and), || (or)

Alternatively you may use "AND" and "OR" instead of "&&" and "||". The AND operator has always higher precedence over OR. If no operator has been specified, it will default to OR.

Examples:

This condition will match if the visitor opens the website with Internet Explorer on Windows (but not on Mac)

[browser = msie] && [system = win]

This will match with either Opera or Netscape browsers

[browser = opera] || [browser = netscape]

This will match with either Internet Explorer or Netscape. In case of Netscape, the version must be above 4.

[browser = msie] || [browser = netscape] && [version => 4]

Browser(ブラウザ)

シンタックス:

[browser = browser1,browser2,...]

値と比較:

ブラウザ:

識別表示:

Microsoft Internet Explorer

msie

Netscape Communicator

netscape

Lynx

lynx

Opera

opera

PHP fopen

php

AvantGo (www.avantgo.com)

avantgo

Adobe Acrobat WebCapture

acrobat

IBrowse (amiga-browser)

ibrowse

Teleport Pro

teleport

?? (if "mozilla" is not in useragent)

unknown

各値はstrstr()内の($browsername.$browserversion, 例 "netscape4.72")と比較される。
だから、値が”netscape”もしくはただの”net”であれば、すべてのネットスケープのブラウザは一致する。
リストの中のどれかの値が現在のブラウザと一致していたら、条件はtrueを戻す。

例:

これは、ネットスケープとopera-browser(オペラブラウザ)に一致する。

[browser = netscape, opera]

browser

Syntax:

[browser = browser1,browser2,...]

Values and comparison:

Browser:

Identification:

Microsoft Internet Explorer

msie

Netscape Communicator

netscape

Lynx

lynx

Opera

opera

PHP fopen

php

AvantGo (www.avantgo.com)

avantgo

Adobe Acrobat WebCapture

acrobat

IBrowse (amiga-browser)

ibrowse

Teleport Pro

teleport

?? (if "mozilla" is not in useragent)

unknown

Each value is compared with the ($browsername.$browserversion, eg. "netscape4.72") in a strstr().

So if the value is "netscape" or just "scape" or "net" all netscape browsers will match.

If the value is "netscape4" all netscape 4.xx browsers will match.

If any value in the list matches the current browser, the condition returns true.

Examples:

This will match with netscape and opera-browsers

[browser = netscape, opera]

version(バージョン)

シンタックス:

[version = value1, >value2, =value3, <value4, ...]

比較:

値は、小数点の記号としての”.”を用いた浮動小数点数である。
その値は3つのオペレータが前につけられる:

オペレーター:

機能:

[nothing]

値は文字列としてバージョンの始めの部分でなければならない。これは、もしバージョンが“4.72”で値が“4”もしくは“4.7”であれば一致しているとういうことである。しかし“4.73”は一致しない。

シンタックスからの例: "value1"

=

値は正確に一致しなければならない。バージョン"4.72" は"4.72"とうい値にしか一致しない。

バージョンは値よりも大きくなければならない。

バージョンは値よりも小さくなければならない。

例:

これは厳密に”4.03”のブラウザに一致する。

[version=  =4.03]

これはすべての4つのブラウザとネットスケープの3つのブラウザに一致する。

[version=  >4][browser= netscape3]

version

Syntax:

[version = value1, >value2, =value3, <value4, ...]

Comparison:

values are floating-point numbers with "." as the decimal separator.

The values may be preceeded by three operators:

Operator:

Function:

 [nothing]

The value must be part of the beginning of the version as a string. This means that if the version is "4.72" and the value is "4" or "4.7" it matches. But "4.73" does not match.

Example from syntax: "value1"

=

The value must match exactly. Version "4.72" matches only with a value of "4.72"

>

The version must be greather than the value

<

The version must be less than the value

Examples:

This matches with exactly "4.03" browsers

[version=  =4.03]

This matches with all 4+ browsers and netscape 3 browsers

[version=  >4][browser= netscape3]

system(システム)

シンタックス:

[system= system1,system2]

値と比較:

システム:

識別表示:

Linux

linux

SGI / IRIX

unix_sgi

SunOS

unix_sun

HP-UX

unix_hp

Macintosh

mac

Windows 3.11

win311

Windows NT

winNT

Windows 95

win95

Windows 98

win98

Amiga

amiga

値は文字列であり、これらの文字列のうちの1つがシステム識別表示の最初の部分であれば、一致する。

例:

これはウィンドウズとマックシステムのみに一致する。

[system= win,mac]

system

Syntax:

[system= system1,system2]

Values and comparison:

System:

Identification:

Linux

linux

SGI / IRIX

unix_sgi

SunOS

unix_sun

HP-UX

unix_hp

Macintosh

mac

Windows 3.11

win311

Windows NT

winNT

Windows 95

win95

Windows 98

win98

Amiga

amiga

Values are strings an a match happens if one of these strings is the first part of the system-identification.

Fx. if the value is "win9" this will match with "win95" and "win98" systems.

Examples:

This will match with windows and mac -systems only

[system= win,mac]

device(デバイス)

シンタックス:

[device= device1, device2]

値と比較:

デバイス:

識別表示:

HandHeld

pda

WAP phones

wap

Grabbers:

grabber

Indexing robots:

robot

値は文字列であり、これらの文字列のうちの1つがデバイスのタイプと等しければ一致する。

device

Syntax:

[device= device1, device2]

Values and comparison:

Device:

Identification:

HandHeld

pda

WAP phones

wap

Grabbers:

grabber

Indexing robots:

robot

Values are strings an a match happens if one of these strings equals the type of device

Examples:

This will match WAP-phones and PDA's

[device= wap, pda]

Useragent(ユーザエージェント)

シンタックス:

[useragent= agent]

値と比較:

これはGetenv(“HTTP_USER_AGENT”)からのユーザエージェント文字列上での直接的な一致である。

値agentの初め と/または 終わりに”*”を付けることでこのワイルドカードと一致させるという選択肢がある。

例:

もしHTTP_USER_AGENTが”Mozilla/4.0(compatible;Lotus-Notes/5.0;Windows-NT)”であれば、これは一致する:

[useragent = Mozilla/4.0 (compatible; Lotus-Notes/5.0; Windows-NT)]

これはまた以下のものとも一致する:

[useragent = *Lotus-Notes*]

…しかしこれは次のようなユーザエージェントとも一致する:

”Lotus-Notes/4.5(Windows-NT)”

ユーザエージェントの簡単なリストと適正な一致は以下の表の通り:

HTTP_USER_AGENT:

エージェント内容:

一致条件:

Nokia7110/1.0+(04.77)

Nokia 7110 WAP phone

[useragent= Nokia7110*]

Lotus-Notes/4.5 ( Windows-NT )

Lotus-Notes browser

[useragent= Lotus-Notes*]

Mozilla/3.0 (compatible; AvantGo 3.2)

AvantGo browser

[useragent= *AvantGo*]

Mozilla/3.0 (compatible; WebCapture 1.0; Auto; Windows)

Adobe Acrobat 4.0

[useragent= *WebCapture

WAP-エージェント:

以下のものは知られているWAPエージェントの一部である:

HTTP_USER_AGENT

HTTP_USER_AGENT (続き)

 

ALAV UP/4.0.7

Alcatel-BE3/1.0 UP/4.0.6c

AUR PALM WAPPER

Device V1.12

EricssonR320/R1A

fetchpage.cgi/0.53

Java1.1.8

Java1.2.2

m-crawler/1.0 WAP

Materna-WAPPreview/1.1.3

MC218 2.0 WAP1.1

Mitsu/1.1.A

MOT-CB/0.0.19 UP/4.0.5j

MOT-CB/0.0.21 UP/4.0.5m

Nokia-WAP-Toolkit/1.2

Nokia-WAP-Toolkit/1.3beta

Nokia7110/1.0 ()

Nokia7110/1.0 (04.67)

Nokia7110/1.0 (04.67)

Nokia7110/1.0 (04.69)

Nokia7110/1.0 (04.70)

Nokia7110/1.0 (04.71)

Nokia7110/1.0 (04.73)

Nokia7110/1.0 (04.74)

Nokia7110/1.0 (04.76)

Nokia7110/1.0 (04.77)

Nokia7110/1.0 (04.80)

Nokia7110/1.0 (30.05)

Nokia7110/1.0

 

PLM's WapBrowser

QWAPPER/1.0

R380 2.0 WAP1.1

SIE-IC35/1.0

SIE-P35/1.0 UP/4.1.2a

SIE-P35/1.0 UP/4.1.2a

UP.Browser/3.01-IG01

UP.Browser/3.01-QC31

UP.Browser/3.02-MC01

UP.Browser/3.02-SY01

UP.Browser/3.1-UPG1

UP.Browser/4.1.2a-XXXX

UPG1 UP/4.0.7

Wapalizer/1.0

Wapalizer/1.1

WapIDE-SDK/2.0; (R320s (Arial))

WAPJAG Virtual WAP

WAPJAG Virtual WAP

WAPman Version 1.1 beta:Build W2000020401

WAPman Version 1.1

Waptor 1.0

WapView 0.00

WapView 0.20371

WapView 0.28

WapView 0.37

WapView 0.46

WapView 0.47

WinWAP 2.2 WML 1.1

wmlb

YourWap/0.91

YourWap/1.16

Zetor

Useragent

Syntax:

[useragent= agent]

Values and comparison:

This is a direct match on the useragent string from getenv(“HTTP_USER_AGENT”)

You have the options of putting a "*" at the beginning and/or end of the value agent thereby matching with this wildcard!

Examples:

If the HTTP_USER_AGENT is "Mozilla/4.0 (compatible; Lotus-Notes/5.0; Windows-NT)" this will match with it:

[useragent = Mozilla/4.0 (compatible; Lotus-Notes/5.0; Windows-NT)]

This will also match with it:

[useragent = *Lotus-Notes*]

... but this will also match with a useragent like this: "Lotus-Notes/4.5 ( Windows-NT )"

A short list of user-agent strings and a proper match:

HTTP_USER_AGENT:

Agent description:

Matching condition:

Nokia7110/1.0+(04.77)

Nokia 7110 WAP phone

[useragent= Nokia7110*]

Lotus-Notes/4.5 ( Windows-NT )

Lotus-Notes browser

[useragent= Lotus-Notes*]

Mozilla/3.0 (compatible; AvantGo 3.2)

AvantGo browser

[useragent= *AvantGo*]

Mozilla/3.0 (compatible; WebCapture 1.0; Auto; Windows)

Adobe Acrobat 4.0

[useragent= *WebCapture*]

WAP-agents:

This is some of the known WAP agents:

HTTP_USER_AGENT

HTTP_USER_AGENT (continued)

ALAV UP/4.0.7

Alcatel-BE3/1.0 UP/4.0.6c

AUR PALM WAPPER

Device V1.12

EricssonR320/R1A

fetchpage.cgi/0.53

Java1.1.8

Java1.2.2

m-crawler/1.0 WAP

Materna-WAPPreview/1.1.3

MC218 2.0 WAP1.1

Mitsu/1.1.A

MOT-CB/0.0.19 UP/4.0.5j

MOT-CB/0.0.21 UP/4.0.5m

Nokia-WAP-Toolkit/1.2

Nokia-WAP-Toolkit/1.3beta

Nokia7110/1.0 ()

Nokia7110/1.0 (04.67)

Nokia7110/1.0 (04.67)

Nokia7110/1.0 (04.69)

Nokia7110/1.0 (04.70)

Nokia7110/1.0 (04.71)

Nokia7110/1.0 (04.73)

Nokia7110/1.0 (04.74)

Nokia7110/1.0 (04.76)

Nokia7110/1.0 (04.77)

Nokia7110/1.0 (04.80)

Nokia7110/1.0 (30.05)

Nokia7110/1.0

PLM's WapBrowser

QWAPPER/1.0

R380 2.0 WAP1.1

SIE-IC35/1.0

SIE-P35/1.0 UP/4.1.2a

SIE-P35/1.0 UP/4.1.2a

UP.Browser/3.01-IG01

UP.Browser/3.01-QC31

UP.Browser/3.02-MC01

UP.Browser/3.02-SY01

UP.Browser/3.1-UPG1

UP.Browser/4.1.2a-XXXX

UPG1 UP/4.0.7

Wapalizer/1.0

Wapalizer/1.1

WapIDE-SDK/2.0; (R320s (Arial))

WAPJAG Virtual WAP

WAPJAG Virtual WAP

WAPman Version 1.1 beta:Build W2000020401

WAPman Version 1.1

Waptor 1.0

WapView 0.00

WapView 0.20371

WapView 0.28

WapView 0.37

WapView 0.46

WapView 0.47

WinWAP 2.2 WML 1.1

wmlb

YourWap/0.91

YourWap/1.16

Zetor

language(言語)

シンタックス:

[language = lang1, lang2, ...]

比較:

値はPHPからのgetenv(“HTTP_ACCEPT_LANGUAGE”)の値と正確に一致しなければならない。あるいは、もし値が”*”(例えば、”*en-us*”)でラップされていたら、HTTP_ACCEPT_LANGUAGE文字列の中に見つかるすべての言語を分割し、その値を文字列のそれらの部分のどれかに一致させようとする。

language

Syntax:

[language = lang1, lang2, ...]

Comparison:

The values must be a straight match with the value of getenv(“HTTP_ACCEPT_LANGUAGE”) from PHP. Alternatively, if the value is wrapped in “*” (eg. “*en-us*”) then it will split all languages found in the HTTP_ACCEPT_LANGUAGE string and try to match the value with any of those parts of the string. Such a string normally looks like “de,en-us;q=0.7,en;q=0.3” and “*en-us*” would match with this string.

IP

シンタックス:

[IP = ipaddress1, ipaddress2, ...]

比較:

値はPHPからのgetenv(“REMOTE_ADDR”)と比較される。

値の中の部分の1つの代わりに”*”を入れることができます。また、最初の1つ、又は2つ、又は3つの部分の記入をして、テストすることもできる。

例:

以下の例は”123”で始まるIP-アドレスのどれかと一致する。

[IP = 123.*.*.*]

又は

[IP = 123.*.*.*]

以下の例は”123”又は”192.168.1.34”で終わるIP-アドレスのどれかと一致する。

[IP = *.*.*.123][IP = 192.168.1.34]

IP

Syntax:

[IP = ipaddress1, ipaddress2, ...]

Comparison:

The values are compared with the getenv(“REMOTE_ADDR”) from PHP.

You may include "*" instead of one of the parts in values. You may also list the first one, two or three parts and only they will be tested.

Examples:

These examples will match any IP-address starting with "123":

[IP = 123.*.*.*]

or

[IP = 123]

This examples will match any IP-address ending with "123" or being "192.168.1.34":

[IP = *.*.*.123][IP = 192.168.1.34]

hostname(ホストネーム)

シンタックス:

[hostname = hostname1, hostname2, ...]

比較:

値はPHPによって検索されたgetenv(“REMOTE_ADDR”)の完全な限定ホストネームと比較される。

値は認められている*-wildcardと一致するようなドメイン名のコンマ-リストだが、文字列の一部とはなれないので、完全なホストネームでなければならない(例えば、myhost.*.com => 正, myhost.*domain.com => 誤)

hostname

Syntax:

[hostname = hostname1, hostname2, ...]

Comparison:

The values are compared with the fully qualiteid hostname of getenv(“REMOTE_ADDR”) retrieved by PHP.

Value is comma-list of domain names to match with. *-wildcard allowed but cannot be part of a string, so it must match the full host name (eg. myhost.*.com => correct, myhost.*domain.com => wrong)

hour(時間)

シンタックス:

[hour = hour1, >hour2, <hour3, ...]

比較:

浮動小数点で表される値はサーバーの現在の時間(24時表記)と比較される。

オペレーター:

機能:

[nothing]

正確な一致を要求する

時間は値よりも大きくなければならない

時間は値よりも小さくなければならない

hour

Syntax:

[hour = hour1, >hour2, <hour3, ...]

Comparison:

The values in floating point are compared with the current hour (24-hours-format) of the server.

Operator:

Function:

[nothing]

Requires exact match

>

The hour must be greather than the value

<

The hour must be less than the value

minute(分)

上記“時間”を参照。同じシンタックスである。

シンタックス:

[minute = ...]

比較:

一時間のうちの分、0-59

minute

See "Hour" above. Same syntax!

Syntax:

[minute = ...]

Comparison:

Minute of hour, 0-59

dayofweek(曜日)

上記“時間”を参照。同じシンタックスである。

シンタックス:

[dayofweek = ...]

比較:

曜日、日曜で始まるものは0で、土曜日は6になる

dayofweek

See "Hour" above. Same syntax!

Syntax:

[dayofweek = ...]

Comparison:

Day of week, starting with sunday being 0 and saturday being 6

dayofmonth(日)

上記“時間”を参照。同じシンタックスである。

シンタックス:

[dayofmonth = ...]

比較:

日付、1-31

dayofmonth

See "Hour" above. Same syntax!

Syntax:

[dayofmonth = ...]

Comparison:

Day of month, 1-31

month(月)

上記“時間”を参照。同じシンタックスである。

シンタックス:

[month = ...]

比較:

月、1月は1で、12月は12

month

See "Hour" above. Same syntax!

Syntax:

[month = ...]

Comparison:

Month, january being 1 and december being 12

usergroup(ユーザーグループ)

シンタックス:

[usergroup = group1-uid, group2-uid, ...]

比較:

grouplistが空でなければ(グローバル変数”gr_list”)、比較はtrueを戻すだけである。

値はgrouplistの中に存在するか、”*”でなければならないことになる。

例:

次はすべてのログインに一致する。

[usergroup = *]

次はuid’s 1と/もしくは2を持ったグループのユーザーメンバーからのログインと一致する:

[usergroup = 1,2]

usergroup

Syntax:

[usergroup = group1-uid, group2-uid, ...]

Comparison:

The comparison can only return true if the grouplist is not empty (global var "gr_list").

The values must either exists in the grouplist OR the value must be a "*".

Example:

This matches all logins

[usergroup = *]

This matches logins from users members of groups with uid's 1 and/or 2:

[usergroup = 1,2]

loginUser(ログインユーザー)

シンタックス:

 

[loginUser = fe_users-uid, fe_users-uid, ...]

比較:

fe_userでのログインuidに一致する。何かのユーザを選択するための*wildcardを含む上記’usergroup’のように作動する。

例:

次は何かのログインと一致する([usergroup=*]の代わりにこれを使ってユーザがログインした時に一致させること!):

[loginUser = *]

loginUser

Syntax:

[loginUser = fe_users-uid, fe_users-uid, ...]

Comparison:

Matches on the uid of a logged in fe_user. Works like 'usergroup' above including the * wildcard to select ANY user.

Example:

This matches any login (use this instead of “[usergroup = *]” to match when a user is logged in!):

[loginUser = *]

treeLevel(ツリーレベル)

シンタックス:

[treeLevel = levelnumber, levelnumber, ...]

比較:

これは、rootLineの最後の要素が”treeLevel”のデータの1つに応じたレベルにあるかどうかをチェックする。Level = 0はウェブサイトの”ルート“である。Level = 1は最初のmenuenである。

例:

次は、もし参照ページがレベル0(基本)もしくはレベル2にある時、テンプレートで何かを変更する

[treeLevel = 0,2]

treeLevel

Syntax:

[treeLevel = levelnumber, levelnumber, ...]

Comparison:

This checks if the last element of the rootLine is at a level corresponding to one of the figures in "treeLevel". Level = 0 is the "root" of a website. Level=1 is the first menuen

Example:

This changes something with the template, if the page viewed is on level either level 0 (basic) or on level 2

[treeLevel = 0,2]

PIDinRootline

シンタックス:

[PIDinRootline = pages-uid, pages-uid, ...]

比較:

これは”treeLevel”のデータの1つがrootlineのPID(pages-uid)であるかどうかをチェックする。

例:

次は、もし参照ページが34ページ又は36ページのサブページである場合、テンプレートで何かを変更する。

[PIDinRootline = 34,36]

PIDinRootline

Syntax:

[PIDinRootline = pages-uid, pages-uid, ...]

Comparison:

This checks if one of the figures in "treeLevel" is a PID (pages-uid) in the rootline

Example:

This changes something with the template, if the page viewed is or is a subpage to page 34 or page 36

[PIDinRootline = 34,36]

PIDupinRootline

シンタックス:

[PIDupinRootline = pages-uid, pages-uid, ...]

比較:

現在のpage-uidがチェックから除外されるということを除いて、PIDinRootlineと同じことを行う。

PIDupinRootline

Syntax:

[PIDupinRootline = pages-uid, pages-uid, ...]

Comparison:

Do the same as PIDinRootline, except the current page-uid is excluded from check.

compatVersion

シンタックス:

[compatVersion = x.y.z]

比較:

最小の互換性バージョンを要求する。このバージョンは必ずしもTYPO3バージョンと同じである必要性はない。それはInstall ToolのUpgrade Wizardで変更できる設定可能な値である。

“compatVersion”は、ユーザが新しいデフォルト設定をしたいがTYPO3の旧バージョンへの後方への互換性も維持したいときに、特に有用である。

compatVersion

Syntax:

[compatVersion = x.y.z]

Comparison:

Require a minimum compatibility version. This version is not necessary equal with the TYPO3 version, it is a configurable value that can be changed in the Upgrade Wizard of the Install Tool.

“compatVersion” is especially useful if you want to provide new default settings but keep the backwards compatibility for old versions of TYPO3.

globalVars:

シンタックス:

[globalVar=   var1=value,  var2<value2, var3>value3, ...]

比較:

浮動小数点で表された値は上記変数”var1”と比較されます。

オペレーター:

機能:

[nothing]

正確な一致を要求する

変数は値よりも大きくなければならない

変数は値よりも小さくなければならない

globalVars:

Syntax:

[globalVar=   var1=value,  var2<value2, var3>value3, ...]

Comparison:

The values in floating point are compared with the global var "var1" from above.

Operator:

Function:

[nothing]

Requires exact match

>

The var must be greather than the value

<

The var must be less than the value

globalString:

シンタックス:

[globalString =   var1=value,  var2= *value2, var3= *value3*, ...]

比較:

これはグローバル文字列での直接的な一致である。

値にワイルドカードとして”*”を付けるか、PCREスタイルの正規表現(”/”でラップしなければならない)を使うといった選択肢がある。

例:

もしHTTP_HOSTがwww.typo3.comであれば、これは以下と一致する:

[globalString = HTTP_HOST=www.typo3.com]

これはまた以下とも一致する:

[globalString = HTTP_HOST= *typo3.com]

…しかしこれはまた”demo.typo3.com”のようなHTTP_HOSTとも一致する。

globalVar及びglobalStringに関する重要な注意:

グローバル配列やオブジェクトからの値を、変数名を”|”(垂直線)で区切ることで使用することができる。

例:グローバル変数$HTTP_POST_VARS["key"]["levels"]は

"HTTP_POST_VARS|key|levels"によって検索される。

またユーザのスクリプトをphp.ini-optimizedの設定に従ってプログラミングすることが推奨されることに留意すること。詳細はそのファイル(ユーザが所有する)を参照。

このことに注意するということは、getenv()によってHTTP_HOSTのような値を得る、すなわちt3lib_div::GPvar()でGET/POSTを検索するということを意味する。最終的にTSFEオブジェクトからの多くの値は有効である。”globalVar”や”globalString”条件との比較用にこれらの値を入手するために、そのvarnaに個々に”IENV”/”ENV:”、”GP:”、”TSFE:”、”LIT:”のいずれかを前につけること。さらに、区切り文字”|”は配列と/もしくはオブジェクト内のキーを分割するのに使うことができる。”LIT”は”literal”を意味し、”:”の後の文字列は削除され(”|”や他のもので分割されることなく)値として戻される。

注:”IENV:”接頭語を使用することは、システム上独立したサーバー/環境変数を得るために高く推奨される。基本的に、これはt3lib_div::getlndpEnv()関数をコールし値を戻す。”ENV:”で、すべてのシステムで必ずしも同じであるとは限らないgetenv()から未加工の出力を得ることができる!

例:

これは”…&print=1”のようなurlと一致する:

[globalVar = GP:print > 0]

これは”192.168.”ではじまるremote-addrと一致する:

[globalString = IENV:REMOTE_ADDR = 192.168.*]

これは10より高い数字で始まるpage-idと一致する:

[globalVar = TSFE:id > 10]

これは”Layout 1”に設定されたレイアウトフィールドを持つページと一致する:

[globalVar = TSFE:page|layout = 1]

これはusernameが”test”になっているユーザと一致する:

[globalString = TSFE:fe_user|user|username = test]

もし定数{$constant_to_turnSomethingOn}が”1”であれば、これは一致する:

[globalVar = LIT:1 = {$constant_to_turnSomethingOn}]

globalString:

Syntax:

[globalString =   var1=value,  var2= *value2, var3= *value3*, ...]

Comparison:

This is a direct match on global strings.

You have the options of putting a "*" as a wildcard or using a PCRE style regular expression (must be wrapped in "/") to the value.

Examples:

If the HTTP_HOST is "www.typo3.com" this will match with:

[globalString = HTTP_HOST=www.typo3.com]

This will also match with it:

[globalString = HTTP_HOST= *typo3.com]

... but this will also match with a HTTP_HOST like this: "demo.typo3.com"

IMPORTANT NOTE ON globalVar and globalString:

You can use values from global arrays and objects by deviding the var-name with a "|" (vertical line).

Examples:  The global var $HTTP_POST_VARS["key"]["levels"] would be retrieved by "HTTP_POST_VARS|key|levels"

Also note that it's recommended to program your scripts in compliance with the php.ini-optimized settings. Please see that file (from your distribution) for details.

Caring about this means that you would get values like HTTP_HOST by getenv(), you would retrieve GET/POST values with t3lib_div::GPvar(). Finally a lot of values from the TSFE object are useful. In order to get those values for comparison with “globalVar” and “globalString” conditions, you prefix that varname with either "IENV"/“ENV:” , “GP:”,  “TSFE:” or “LIT:” respectively. Still the “|” divider may be used to separate keys in arrays and/or objects. “LIT” means “literal” and the string after “:” is trimmed and returned as the value (without being divided by “|” or anything)

Notice: Using the "IENV:" prefix is highly recommended to get server/environment variables which are system independant. Basically this will call and return the value from t3lib_div::getIndpEnv() function. With "ENV:" you get the raw output from getenv() which is NOT always the same on all systems!

Examples:

This will match with a url like “...&print=1”

[globalVar = GP:print > 0]

This will match with a remote-addr begining with “192.168.”

[globalString = IENV:REMOTE_ADDR = 192.168.*]

This will match with the page-id being higher than 10:

[globalVar = TSFE:id > 10]

This will match with the pages having the layout field set to “Layout 1”:

[globalVar = TSFE:page|layout = 1]

This will match with the user whose username is “test”:

[globalString = TSFE:fe_user|user|username = test]

If the constant {$constant_to_turnSomethingOn} is “1” then this matches:

[globalVar = LIT:1 = {$constant_to_turnSomethingOn}]

userFunc:

シンタックス:

[userFunc = user_match(checkLocalIP)]

比較:

これは最初のパラメータ”checkLocalIP”で関数”user_match”をコールする。この関数を書く。チェックするものを決める。関数結果はtrueもしくはfalseで評価される。

例:

この関数をユーザのlocalconf.phpファイルに入れる:

function user_match($cmd) {
         switch($cmd)     {
                 case "checkLocalIP":
                          if (strstr(getenv("REMOTE_ADDR"),"192.168"))        {
                                   return true;                     
                          }
                 break;
                 case "checkSomethingElse":
                          // ....
                 break;
         }
}

この条件はリモートアドレスが”192.168”を含んでいたら、trueを戻す。これはユーザの関数が見つけ出したものである。

[userFunc = user_match(checkLocalIP)]

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)]