1

我正在做一个语言选择器,允许在英语和法语之间切换,应用程序在 Jahia 上。

我想从jsp我的组件的页面中获取 [j:fullpath] languagePicker,但我找不到获取它的方法。我需要j:fullpath当前页面的,当前页面实际上是..../home/html,但$(currentNode.path)回答我:

/modules/template/02.02.01.10-SNAPSHOT/templates/base/navbar2/navbarlinks-lang

但我想要类似:“/sites/services/home”,这是我主页的实际 j:fullpath。在此节点下,有一个“VanityUrlMapping”,在 2 个节点下,每种语言一个。

每个页面下都有一个 vanityUrlmapping,那么如何在 JSP 中获取这些页面的 j:fullpath 呢?

谢谢

4

3 回答 3

1

如果您的组件存储在“普通区域”(不是绝对的)下,您可以向上走 JCR,直到找到“jnt:page”类型的节点。这可以使用以下 taglib 轻松完成: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

于 2016-11-24T00:52:19.767 回答
0

@peetsnack 是对的,您必须使用 ${renderContext.mainResource.node} 来获取与当前节点(此处为您的“navbarlink”节点)关联的“mainResource”(在大多数情况下=包含“页面”)。

要获得正确的(外部)url,使用虚 url,正确的服务器名称/方案...,最简单的方法是直接使用:{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}"/>

REM:以下 2 段代码将生成相同的 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

于 2019-10-02T15:16:09.067 回答
0

我认为这${renderContext.mainResouce.node.path}就是你要找的。

我认为这j:fullpath不会考虑虚 URL。不过,我对这些并没有做太多。

于 2017-06-07T20:37:58.377 回答