在我们的应用程序设计中,我们想向用户介绍 VanityURL 概念。VanityURL 将是页面的自定义元。通过 URL 查询页面的代理 api 不再起作用,因为虚 url 不是 PAGE 表中的那个。我们提出的解决方案是使用 CustomMetaKeyCriteria 和 CustomMetaValueCriteria 查询页面 id,它对我们有用。
我想请专家来评估这个解决方案并提供一些意见。
谢谢。
在我们的应用程序设计中,我们想向用户介绍 VanityURL 概念。VanityURL 将是页面的自定义元。通过 URL 查询页面的代理 api 不再起作用,因为虚 url 不是 PAGE 表中的那个。我们提出的解决方案是使用 CustomMetaKeyCriteria 和 CustomMetaValueCriteria 查询页面 id,它对我们有用。
我想请专家来评估这个解决方案并提供一些意见。
谢谢。
好问题。我会谨慎地查询每个页面请求的元数据。您可能还需要小心地将这些数据存储为页面元数据,因为您需要确保这些值在出版物中的所有页面/URL 中都是唯一的。
为了解决唯一性问题,您可能希望创建一个事件系统,该系统在保存页面时根据某种索引文件检查/保存值。
该文件可能如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<VanityURLS PublicationID="tcm:0-33-1">
<Page ID="tcm:3-24-64">
<Vanity>/someURL.html</Vanity>
<Vanity>/someotherURL.html</Vanity>
</Page>
<Page ID="tcm:3-25-64">
<Vanity>/someURL.html</Vanity>
<Vanity>/someotherURL.html</Vanity>
</Page>
<VanityURLS>
然后,您可以定期发布该索引文件并使用它来查找请求的 URL,并将它们映射到页面 URI。然后,您可以通过它们的 URI 加载页面,或者如果您想使用现有代码,则可以使用链接 API 从 URI 获取 URL。然后,您可以将该值传递给 GetPageMetaByURL() 方法。