Umbraco订单到期日期
本文关键字:日期 Umbraco | 更新日期: 2023-09-27 18:17:20
我在下面创建了一个简单的循环,我想通过它的umbraco "Unpublish at"属性来排序这个循环。在我的脑海里应该是这样的:-
@foreach (var example in CurrentPage.Children.OrderBy("expireDate"))
{
//Do Stuff//
}
这将类似于Umbracos的createDate,但不工作。有人有什么想法吗?由于
正如@nsgocev所描述的那样,你不能在Razor中直接这样做,但是,你也不应该访问Razor中的Document对象,因为这会访问数据库。
理想情况下,你应该做的是一点工作,但值得:
- 在基本文档类型上创建一个新的日期属性,命名为"expiryDate"
- 创建一个事件,该事件将在页面发布时设置此字段,并且"Unpublish"字段具有属性集。
这是一个很好的习惯,以这种方式扩展Umbraco。如下所示:
public class ExpiryDateEvent : IApplicationEventHandler
{
public void OnApplicationStarting(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
ContentService.Published += ContentService_Published;
}
void ContentService_Published(IPublishingStrategy sender, PublishEventArgs<IContent> e)
{
var entity = e.Entity;
if (entity.HasProperty("expiryDate") && e.entity.ExpireDate.HasValue)
{
entity.SetValue("expiryDate", e.Entity.ExpireDate.Value);
sender.Save(entity);
}
}
}
这样做的好处是它有很多其他场景的应用程序。你做的一件事而不是想要做的是在你的UI中使用Document对象访问你的数据库。