Html 从Freemarker中的相对链接获取绝对链接

Html 从Freemarker中的相对链接获取绝对链接,html,freemarker,magnolia,Html,Freemarker,Magnolia,我正在使用Magnolia-CMS创建一个网站。现在我正在实现一个博客页面。在每个博客页面上,都有几个共享按钮。现在我正忙于实现twittershare按钮。在这里,我将使用推特卡片。为此,我需要在元标记中提供图像的URL。主要问题:我像这样检索图像:${damfn.getAssetLink(content.blogImage)}。这只返回到我的资源的相对路径。有没有一种快速的方法(在freemarker中)将tis转换为绝对链接 非常感谢 通常在magnolia.properties中定义ma

我正在使用Magnolia-CMS创建一个网站。现在我正在实现一个博客页面。在每个博客页面上,都有几个共享按钮。现在我正忙于实现twittershare按钮。在这里,我将使用推特卡片。为此,我需要在元标记中提供图像的URL。主要问题:我像这样检索图像:${damfn.getAssetLink(content.blogImage)}。这只返回到我的资源的相对路径。有没有一种快速的方法(在freemarker中)将tis转换为绝对链接


非常感谢

通常在magnolia.properties中定义
magnolia.default.base.url

然后可以使用
Components.getComponent(ServerConfiguration.class).getDefaultBaseUrl()检索它

现在您必须将该服务安装到freemarker中。您可以通过在启动时将安装程序任务添加到渲染器中来实现这一点。您可以在模块版本处理程序中执行此操作。在这里,您将覆盖
getStartupTasks(…)
,如下所示:

@Override
protected List<Task> getStartupTasks(InstallContext installContext) {
    final List<Task> tasks = new ArrayList<>();
    tasks.add(new InstallRendererContextAttributeTask("rendering", "freemarker", "serverConf", ServerConfiguration.class.getName()));
    tasks.add(new InstallRendererContextAttributeTask("site", "site", "serverConf", ServerConfiguration.class.getName()));
    return tasks;
}
检查是否需要斜杠,并确保在magnolia配置中正确设置了defaultBaseUrl(“/server/…”)


编辑:在freemarker
${request}
中调用当前请求应该会更简单,这样它就可以像“${request.domain}/${ctx.contextPath}/${damfn.getAssetLink(content.blogImage)}”一样,而不将服务器配置注入到渲染器中

哪个版本的Magnolia?看看最新的DAM,它应该会返回绝对URI,所以您只需要添加域名和协议。我使用的是4.5版,如果仍然打开,那么您应该在图像的(相对)URL前面添加
${ctx.contextPath}
。添加上下文路径仍然不会使其成为绝对链接号。。这是真的。context path仅添加部署应用程序的contextpath。(在我的例子中,它主要是根,所以它什么都不做。
"${serverConf.defaultBaseUrl}/${ctx.contextPath}/${damfn.getAssetLink(content.blogImage)}"