Hallo Zusammen,
ich möchte gerne für eine ausgewählte Seitenreferenz den Strukturvariablenwert ihres Parentfolders ermitteln.
Da man vererbte Werte leider nicht direkt ermittelt kann, hatte ich auch eine Lösung im Kopf, die sich an den Strukturverzeichnissen lang hangelt bis der Ursprungswert ermittelt werden kann.
Ich habe nun hier in der Community reichlich gestöbert und eine Lösung für meine Anforderung gefunden: https://community.e-spirit.com/message/2195#2195
In diesem Post wird folgende Umsetzung beschrieben:
- $CMS_SET(ref,ref(pageref:"permissiontest").target)$
- $CMS_SET(myData,"")$
- $CMS_FOR(count,[1..ref(pageref:"permissiontest").target.depth])$
- $CMS_IF((myData=="") && !(ref.parent.data.get("Hallo").editor.get(#global.language).isEmpty))$
- $CMS_SET(myData,ref.parent.data.get("Hallo").editor.get(#global.language))$
- $CMS_END_IF$
- $CMS_SET(ref,ref.parent)$
- $CMS_END_FOR$
- VarContent: $CMS_VALUE(myData)$
Auf dieser Basis habe ich meine Abfrage umgesetzt.
Bei einer Seite soll für eine Pageref, die in den Metadaten für diese Seite ausgewählt wurde, bzw. für deren Parentfolder der Wert einer Strukturvariablen ermittelt werden.
$CMS_SET(ref,#global.page.meta("md_test_pageref").getPageRef)$
$CMS_SET(set_struktur_variable,"")$
$CMS_FOR(count,[1..ref.depth])$
$CMS_IF((set_struktur_variable=="") && (!ref.getParentFolder.getFormData.get("ss_robots").isEmpty || !ref.getParentFolder.getFormData.get("ss_robots").isNull()))$
$CMS_SET(set_struktur_variable,ref.getParentFolder.getFormData.get(#global.language,"ss_robots").get())$
$CMS_END_IF$
$CMS_SET(ref,ref.getParentFolder())$
$CMS_END_FOR$
$CMS_VALUE(set_struktur_variable)$
Das klappt auch, ich bekomme tatsächlich den Wert der Strukturvariablen von dem Parentfolder, an dem diese definiert wurde.
Leider bekomme ich aber auch Errors, nämlich eine NoSuchFormFieldException (siehe unten). Für jeden Strukturfolder, der „nur“ den vererbten Wert hat, gibt es diese Exception.
Ich habe schon versucht, dass mit der Abfrage auf isNull zu umgehen. Hat leider nicht geklappt.
Es muss doch möglich sein, diese Exception irgendwie zu vermeiden.
Vielen Dank schon mal im Voraus
Petra Hewera-Harz
Caused by de.espirit.firstspirit.forms.NoSuchFormFieldException: ss_robots
at de.espirit.firstspirit.store.access.DataWrappingFormData.get(DataWrappingFormData.java:89)
at de.espirit.firstspirit.store.access.sitestore.SiteStoreVariableFormDataImpl.get(SiteStoreVariableFormDataImpl.java:89)
at de.espirit.firstspirit.parser.eval.FormDataEnhancer.getFormDataValue(FormDataEnhancer.java:72)
at de.espirit.firstspirit.parser.eval.FormDataEnhancer.invokeMethod(FormDataEnhancer.java:63)
at de.espirit.firstspirit.parser.eval.Invoker.evalMethod(Invoker.java:216)
at de.espirit.firstspirit.parser.EvaluatorImpl$1.invokeMethod(EvaluatorImpl.java:99)
at de.espirit.firstspirit.parser.EvaluatorImpl.invokeMethod(EvaluatorImpl.java:221)
at de.espirit.firstspirit.parser.impl.MethodImpl.eval(MethodImpl.java:98)
at de.espirit.firstspirit.parser.impl.DottedExpression.eval(DottedExpression.java:82)
at de.espirit.firstspirit.parser.impl.NotExpression.eval(NotExpression.java:23)
at de.espirit.firstspirit.parser.impl.CombinedExpression.eval(CombinedExpression.java:127)
at de.espirit.firstspirit.parser.impl.CombinedExpression.evalBoolean(CombinedExpression.java:235)
at de.espirit.firstspirit.parser.impl.CombinedExpression.eval(CombinedExpression.java:159)
at de.espirit.firstspirit.parser.impl.CmsIfImpl.print(CmsIfImpl.java:81)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:547)
at de.espirit.firstspirit.generate.PreviewProduction.print(PreviewProduction.java:546)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.impl.TemplateDocumentImpl.print(TemplateDocumentImpl.java:49)
at de.espirit.firstspirit.parser.impl.CmsForImpl$LoopEvaluator.eval(CmsForImpl.java:259)
at de.espirit.firstspirit.parser.impl.CmsForImpl$LoopEvaluator.access$100(CmsForImpl.java:164)
at de.espirit.firstspirit.parser.impl.CmsForImpl.print(CmsForImpl.java:144)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:547)
at de.espirit.firstspirit.generate.PreviewProduction.print(PreviewProduction.java:546)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.impl.TemplateDocumentImpl.print(TemplateDocumentImpl.java:49)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:547)
at de.espirit.firstspirit.generate.PreviewProduction.print(PreviewProduction.java:546)
at de.espirit.firstspirit.parser.impl.CmsIfImpl.print(CmsIfImpl.java:88)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:547)
at de.espirit.firstspirit.generate.PreviewProduction.print(PreviewProduction.java:546)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.impl.TemplateDocumentImpl.print(TemplateDocumentImpl.java:49)
at de.espirit.firstspirit.parser.impl.CmsTrimImpl.print(CmsTrimImpl.java:166)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:547)
at de.espirit.firstspirit.generate.PreviewProduction.print(PreviewProduction.java:546)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.impl.TemplateDocumentImpl.print(TemplateDocumentImpl.java:49)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:547)
at de.espirit.firstspirit.generate.PreviewProduction.print(PreviewProduction.java:546)
at de.espirit.firstspirit.store.access.sitestore.PageRefImpl.render(PageRefImpl.java:893)
at de.espirit.firstspirit.store.access.sitestore.PageRefImpl.createContent(PageRefImpl.java:851)
at de.espirit.firstspirit.generate.PreviewProduction._calculate(PreviewProduction.java:260)
at de.espirit.firstspirit.generate.PreviewProduction.calculate(PreviewProduction.java:116)
at de.espirit.firstspirit.generate.AbstractPreviewManager.getLog(AbstractPreviewManager.java:217)
at de.espirit.firstspirit.generate.DistributedPreviewManagerImpl.getLog(DistributedPreviewManagerImpl.java:110)
at de.espirit.firstspirit.io.servlet.PreviewServlet.showLog(PreviewServlet.java:446)
at de.espirit.firstspirit.io.servlet.PreviewServlet.deliverPreview(PreviewServlet.java:322)
at de.espirit.firstspirit.io.servlet.PreviewServlet.doPost(PreviewServlet.java:250)
at de.espirit.firstspirit.io.servlet.PreviewServlet.doGet(PreviewServlet.java:209)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doChain(WebAuthentication.java:1036)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:800)
at de.espirit.firstspirit.io.servlet.WebAuthentication.doFilter(WebAuthentication.java:230)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)