Kentico Document Query API - 尝试匹配转发器结果

时间:2018-02-14 13:26:10

标签: content-management-system kentico

我有一个map = new google.maps.Map(document.getElementById('map'), { zoom: 6, center: {lat: 51, lng: 10}, styles: [ { featureType: "poi", elementType: "labels", stylers: [{ visibility: "off" }] } ] }); CMSRepeater设置为SelectOnlyPublished。为了实现延迟加载,我有一个web服务,可以为转发器加载更多项目。我尝试过的文档查询(一次一个)如下:

true

在检查由转发器和API生成的Sql查询之后,似乎API在where语句中生成了一些额外的已发布检查(删除这会产生相同的db结果,这将是我的目标)。

额外的where子句是:

var newsItems = tree.SelectNodes()
                .Types(pageTypes)
                .Path(path)
                .Where(whereStatement)
                .OrderBy(orderBy)
                .CombineWithDefaultCulture(false)
                .Page(page, count)
                .Columns(columns);

var newsItems = DocumentHelper.GetDocuments()
            .Types(pageTypes)
            .Path(path)
            .Where(whereStatement)
            .OrderBy(orderBy)
            .CombineWithDefaultCulture(false)
            .Page(page, count)
            .Published()
            .Columns(columns);

所以我的问题是,如何在转发器中包含此子句?我只想发布文档,并且认为转发器上的DocumentCanBePublished] = 1 AND ([DocumentPublishFrom] IS NULL OR [DocumentPublishFrom] <= @Now) AND ([DocumentPublishTo] IS NULL OR [DocumentPublishTo] >= @Now 就足够了。我想我可以将它硬编码到我的WhereCondition中,但这对我来说感觉不对。

1 个答案:

答案 0 :(得分:1)

“仅选择已发布”复选框将在后台生成以下语句。

在你的转发器WHERE条件中添加以下声明:

([DocumentCanBePublished] = 1 AND ([DocumentPublishFrom] IS NULL OR [DocumentPublishFrom] <= GETDATE()) AND ([DocumentPublishTo] IS NULL OR [DocumentPublishTo] >= GETDATE()))

您可能认为它很难编码,但它只是配置一个webpart。如果您希望它更具动态性,请在WHERE条件中使用宏来设置GetDate()方法。