Kopanie poprzez kod, wygląda na to logika szablon jest realizowany przez Varien_Filter_Template
(pod lib \ Varien nie app \ code) w funkcji filter
która wydaje zwrotnego do funkcji ifDirective
Jeżeli wzorzec pasuje do wyrażenia regularnego. Z kolei ifDirective
używa funkcji do oceny Twojego stanu if
. tokenizuje warunek z Varien_Filter_Template_Tokenizer_Variable
na właściwość lub metodę.
if($this->isWhiteSpace()) {
// Ignore white spaces
continue;
} else if($this->char()!='.' && $this->char()!='(') {
// Property or method name
$parameterName .= $this->char();
} else if($this->char()=='(') {
// Method declaration
$methodArgs = $this->getMethodArgs();
$actions[] = array('type'=>'method',
'name'=>$parameterName,
'args'=>$methodArgs);
$parameterName = '';
} else if($parameterName!='') {
// Property or variable declaration
if($variableSet) {
$actions[] = array('type'=>'property',
'name'=>$parameterName);
} else {
$variableSet = true;
$actions[] = array('type'=>'variable',
'name'=>$parameterName);
}
$parameterName = '';
}
Gdy jeśli warunek jest wykrywany za metodę, będzie wykonywał tę metodę, w przeciwnym razie po prostu zwraca ciąg znaków zmiennej.
Wszystko to oznacza (myślę!), Że jeśli chcesz ocenić wyrażenie wewnątrz instrukcji if, musisz dodać nowy atrybut klienta (dostępne są rozszerzenia), który szablon może ocenić. Jeśli więc zdefiniujesz boolowski atrybut "isMemberOfGroupNameX", szablon powinien działać.
Wyobrażam sobie, że nie jest to odpowiedź, której szukasz, ale jestem prawie pewien, że tak jest.
HTH, JD
Popraw mnie, jeśli się mylę, ale z tego, co mówisz, on mógłby również stworzyć jakąś metodę (może metodę pomocnika?), Która mogłaby to sprawdzić, prawda? –
Można również zbudować logikę poza szablonem, aby zapełnić określoną zmienną klienta w środowisku wykonawczym. – Chris
@Joseph - tak, możesz utworzyć metodę, ale myślę, że musiałaby ona znajdować się w obiekcie klienta, abyś mógł użyć {{if customer.isGroupMember()}}, co wymaga rozszerzenia modelu klienta. Nie jest to coś, co koniecznie zaleciłbym dla tego wymogu, ale nadal jest to ważna opcja –