我正在尝试尽可能让我的客户更直观。他们已经有很多新闻文章需要转移到这个新的Umbraco 7网站。我想要发生以下事情:
UpdateDate
不起作用)n
篇文章,并且某人发布了昨天设置为“发布时间”的新闻文章,则会将新闻文章放在3个新文章之前这样的事情是否可能,而不创造额外的财产?在我看来,这只会让这个人感到困惑。
答案 0 :(得分:0)
显然,唯一的方法是创建一个类型为Date的附加字段。我希望通过Umbraco内置的那些来做到这一点。
原来没有"这是本文发表的确切日期"我可以访问的属性,同时仍然可以使用它。它确实为创建者提供了一些关于排序的选项,因为它现在很容易按日期排序。
答案 1 :(得分:0)
据我了解您的情况,以下是我对您的每个问题的回复
答案 - 如果他们将发布日期设置为明天而只是保存该文章,那么它将永远不会发布到明天。如果页面已经发布,则需要先取消发布。
Ans - 他们只需点击保存并发布即可立即发布文章。
Ans - 您可以在ContentService_Saving事件中处理此问题。请参阅 - ContentService Events
Ans - 取自This Umbraco forum。在这里也为每个人添加这个。
我将创建属性SortDate,以及另一个true / false属性PublishMode。虽然SortDate是不言自明的,但是一旦完成绘图并向页面添加内容,我会将PublishMode设置为true。因此,如果我已经编写了一个页面并且只需要在发布之后修复拼写错误并重新编写,那么这将设置为true。
然后我会挂钩重新发布事件并添加一些逻辑:
if (page's type alias is a post) && (PublishMode is false) {
if (DateCompare(page.CreateDate, page.UpdateDate) >= 0
{ page.SortDate = page.CreateDate }
else {page.SortDate = page.UpdateDate}
}
因此,在您完成之后,您可以根据"模式"对日期进行排序。正在重新发布的文件。
作为旁注,即使您没有选择日期,datepicker数据类型也会自动设置为" 01/01 / 0011"。所以它永远不会返回空值。
此外,datepicker数据类型不是DateTime对象。因此,要使用DateCompare,您必须将每个日期属性解析为DateTime对象,如:
DateCompare(DateTime.Parse(Page.CreateDate.ToString("r"), DateTime.Parse(Page.UpdateDate.ToString("r"))
希望这会有所帮助!!
由于