gpt4 book ai didi

html - 从 Freemarker 中的相对链接获取绝对链接

转载 作者:行者123 更新时间:2023-12-02 03:31:12 32 4
gpt4 key购买 nike

我正在使用 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;
}

现在你可以调用 freemarker 了:

"${serverConf.defaultBaseUrl}/${ctx.contextPath}/${damfn.getAssetLink(content.blogImage)}"

检查是否需要斜杠,并确保在您的 magnolia 配置中正确设置了 defaultBaseUrl(“/server/...”)

编辑:通过在 freemarker ${Request} 中调用当前请求应该更容易,所以它可能类似于 "${Request.domain}/${ctx.contextPath}/$ {damfn.getAssetLink(content.blogImage)}”而不将 serverConfiguration 注入(inject)渲染器

关于html - 从 Freemarker 中的相对链接获取绝对链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26674235/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com