То, что я пытаюсь сделать, довольно сложно, и задействовано расширение Extbase...
Шаг за шагом, что я пытаюсь сделать:
- Плагин Extbase решает, должны ли быть отмечены определенные элементы навигации.
- Этот плагин имеет одно действие для каждого элемента навигации.
- Возвращаемое значение (0 или 1) от каждого действия в TS сохраняется в стеке (LOAD_REGISTER).
- Список UID страниц создается путем проверки сохраненных значений (0,1).
- Сертификат подлинности навигации изменяется с использованием этого списка UID страниц.
Вот код typoscript, который я использую:
// load information, if pages lack info, into register
10 = LOAD_REGISTER
10 {
lacksAnfahrt {
cObject = USER_INT
cObject {
userFunc = tx_extbase_core_bootstrap->run
pluginName = Pa_klinik_data_edit
extensionName = Hplusinfo
controller = SpitalInfoPA
switchableControllerActions {
SpitalInfoPA {
1 = completeAnfahrt
}
}
}
}
lacksAktivitaeten < .lacksAnfahrt
lacksAktivitaeten.cObject.switchableControllerActions.SpitalInfoPA.1 = completeAktivitaeten
lacksBildergalerie < .lacksAnfahrt
lacksBildergalerie.cObject.switchableControllerActions.SpitalInfoPA.1 = completeBildergalerie
// build a list of PIDs that are going to be marked in navigation
lackPIDs.cObject = COA
lackPIDs.cObject {
10 = TEXT
10 {
value = {$config.PIDLists.anfahrt},
if {
value = 1
equals.data = register:lacksAnfahrt
}
}
20 < .10
20.value = {$config.PIDLists.bildergalerie},
20.if.equals.data = register:lacksBildergalerie
30 < .10
30.value = {$config.PIDLists.aktivitaeten},
30.if.equals.data = register:lacksAktivitaeten
// don't let the comma separated list end with a comma
99 = TEXT
99.value = 0
} // lackPIDs
} // REGISTER
// mark incomplete pages with a red exclamation mark
20 { // = HMENU
1 { // = TMENU
NO { // = 1
stdWrap.wrap = |<span class="warning lacksInfo">!</span>
stdWrap.wrap.if {
value.data = register:lackPIDs
isInList.field = uid
}
}
}
}
Если я распечатаю register:lacksBildergalerie
и все остальные, их значения верны (0 или 1). Но lackPIDs
list всегда пустой (кроме 0 в конце)... Должно быть что-то не так со средней частью:
10 {
value = {$nav.PIDLists.anfahrt},
if {
value = 1
equals.data = register:lacksAnfahrt
}
}
Эта оценка в любом случае возвращает false.
Я также пробовал использовать другую функцию if, например:
10 {
value = {$nav.PIDLists.anfahrt},
if {
isTrue.data = register:lacksAnfahrt
}
}
Но это не решает проблему.