Magnolia CMS 中自定义内容类型的链接

Posted

技术标签:

【中文标题】Magnolia CMS 中自定义内容类型的链接【英文标题】:Links to custom content type in Magnolia CMS 【发布时间】:2021-02-23 09:50:14 【问题描述】:

我为事件创建了一个自定义内容类型,我可以在页面中列出活动事件及其摘要。 我想为每个事件创建一个详细信息页面,当前为每个事件生成的链接指向事件名称,就好像它是一个单独的页面一样。如何拥有一个名为 view-event 的页面,该页面将捕获事件名称并显示其内容

<ul>
    [#assign events = cmsfn.contentByPath("/", "events") ]
    [#list cmsfn.children(events, "ev:event") as event ]
        [#assign active = event.isActive!false]
            [#if active]
                <li>$event.name - <a href="$cmsfn.link(event)">details</a></li>
            [/#if]
    [/#list]
</ul>

【问题讨论】:

【参考方案1】:

我不认为它是这样工作的。如果你想链接到显示事件的页面,你必须创建这样的页面。然后,您可以通过选择器或虚拟子页面或请求参数传递该页面应显示的事件。例如,请参阅如何在旅行演示中显示旅行或目的地。是同一个概念。

在 Travel 演示中,内容以自定义类型(分别为旅游或目的地)存在。但是,如果您打开 pages 应用程序,您会在 /travel 网站下看到一页用于旅游 (/travel/tour) 和一页用于目的地 (/travel/destination)。在演示中,选择器用于传递有关您要显示的旅游或目的地的信息。您可以通过观察***导航看到它指向/travel/tour~active~.html,其中~ 之间的部分是tour 页面的页面模板然后用于解析要显示的具体内容的选择器。

您可以使用虚拟子页面和虚拟 uri 映射来构建相同的内容,但最终需要有一个页面模板和关联页面,以了解您传入的信息以及如何呈现自定义内容类型。仅传递指向自定义内容类型项的链接不会呈现页面。

或者,如果您开发 SPA,您还可以通过交付端点请求自定义内容类型并以 JSON 的形式获取它,但是您的 SPA 负责将该 JSON 呈现为 html 以供浏览器呈现给用户.

在您粘贴在问题中的元素中,您可以直接列出所有事件及其详细信息。但是,如果您想通过超链接指向事件的详细信息,并让该页面显示您创建页面和模板所需的内容。例如,在您的网站树中创建名为 /view-event 的页面。创建名为 view-event 的模板并将其分配给页面。然后在您的事件概述页面中更改上面的 sn-p 以链接到视图事件,使其看起来像 &lt;a href="/view-event~$event.name~"&gt;details&lt;/a&gt;。这样您就可以将事件名称(或 id 或您需要的内容)传递给 view-event 页面,并能够通过 state.selector 在那里检索它,并通过 view-event 页面呈现所需的内容。更多信息请参见Magnolia Documentation

【讨论】:

$event.name 变量包含空格。在旅游演示中,旅游名称有空格,但链接包含破折号。我怎么能有破折号? 您的解决方案不起作用,因为 state.selector 基于 event.name 包含空格,而通过路径检索内容需要破折号。我只能让它与不优雅的:a href="view-event~$(cmsfn.link(event)?split("/")[2])?split(".")[0] ~.html"> 我用“/”分割删除站点名称,然后用“.”分割到 .html 扩展名。正确的做法是什么? 尝试改用event.@nameevent.@path。这应该为您提供项目本身的实际名称,而不是用户设置的字段“名称”的值。文档中的更多信息(就在 ContentMap 参考页面的中间下方)docs.magnolia-cms.com/product-docs/Developing/API.html

以上是关于Magnolia CMS 中自定义内容类型的链接的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Magnolia CMS 中为 CKEditor 添加外部插件?

Magnolia CMS,内容应用程序,从属性中命名节点

从 Magnolia CMS 中的内容生成 PDF

自定义操作实施 Magnolia CMS

如何在 Magnolia CMS Marketing Tag 中登录用户 ID

无法访问 magnolia cms 中的链接和子页面