我在做一个语言选择器,允许在英语和法语之间切换,应用程序在Jahia上。
我想从我的组件languagePicker
的jsp
上的页面获得[j:fullpath],但我找不到获得它的方法。我需要当前页面的j:fullpath
,当前页面实际上是..../home/html,但$(currentNode.path)
回答我:
/modules/template/02.02.01.10-SNAPSHOT/templates/base/navbar2/navbarlinks-lang
但是我想要像:"/sites/services/home"这样的东西,这是我的主页的实际j:全路径。在这个节点下,有一个"VanityUrlMapping",在2个节点下,每种语言一个。
在每个页面下都有一个vanityUrlmapping,那么如何在JSP中获得这些页面的j:fullpath呢?
谢谢
如果您的组件存储在"正常区域"(不是绝对区域)下,您可以向上查看JCR,直到找到类型为"jnt:page"的节点。这可以使用以下标签库轻松完成:http://downloads.jahia.com/downloads/jahia/digitalfactory7.0.0/digital-factory-taglib-7.0.0.0-tlddoc/jcr/getParentOfType.fn.html
如果您尝试为Jahia实现自定义语言切换器,您可能应该基于默认的Jahia语言切换组件构建自定义视图:
https://github.com/Jahia/default/blob/master/src/main/resources/jnt_languageSwitcher/html/languageSwitcher.jsp我认为${renderContext.mainResouce.node.path}
是你正在寻找的。
我不认为j:fullpath
会考虑到虚荣url。我不怎么用这些
@peetsnack是对的,你必须使用${renderContext.mainResource。获取与当前节点(此处为"navbarlink"节点)相关联的"mainResource"(在大多数情况下=包含"page")
获得一个正确的(外部)url,与虚荣url,正确的服务器名/方案…,最简单的是直接使用this:{renderContext.mainResource.node.url}
下面是一个完整的例子:
<%--Retrieve the parent page--%>
<c:set var="parentPageUrl" value="${renderContext.mainResource.node.url}"/>
<%-- for correct url encoding --%>
<c:url var="parentPageUrl" value="${parentPageUrl}"/>
<%-- if you need absolute url: --%>
<c:set var="parentPageUrl" value="${url.server}${parentPageUrl}"/>
雷:下面两段代码将生成相同的URL:
<c:url value="${contentNode.url}" />
<c:url value="${url.base}${node.path}.html" />
来源:https://academy.jahia.com/files/live/sites/academy/files/documentation/training/TR7_Basic-Developer_EN_V1.5.pdf