我正在使用Magnolia创建一个网站 - CMS。现在我正在实施一个博客页面。在每个博客页面上,有几个共享按钮。现在我正忙着实现twittershare按钮。在这里,我将使用推特卡。为此,我需要在元标记中提供图像的URL。主要问题:我像这样检索我的图像:$ {damfn.getAssetLink(content.blogImage)}。这只返回我的资源的相对路径。有没有快速的方法(在freemarker中),将tis转换为绝对链接?
非常感谢提前!
答案 0 :(得分:1)
通常您在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;
}
现在您可以调用freemarker:
"${serverConf.defaultBaseUrl}/${ctx.contextPath}/${damfn.getAssetLink(content.blogImage)}"
检查斜线是否是必需的,并确保在您的木兰配置(“ / server / ...”)中正确设置了defaultBaseUrl
edit:在freemarker ${Request}
中调用当前请求应该会更容易一些,因此它可能类似于“ $ {Request.domain} / $ {ctx.contextPath} / $ {damfn.getAssetLink(content .blogImage)}“,而无需将serverConfiguration注入渲染器