Umbraco 콘텐츠 항목에는 처음 게시 된 시간을 나타 내기위한 기본 제공 속성이 없습니다.
실제로 콘텐츠가 게시 된시기를 신뢰할 수있게 표시하려면 문서 형식에 사용자 지정 속성을 추가하는 것이 가장 좋습니다. 이 처음 출판되었을 때 그런 다음 현재 날짜로 속성을 업데이트 응용 프로그램에 이벤트 핸들러를 추가 할 수 있습니다
using System;
using System.Linq;
using Umbraco.Core;
using Umbraco.Core.Services;
namespace YourNamespace
{
/// <summary>
/// Updates the publishedDate property when content is first published
/// </summary>
public class UpdatePublishDateEventHandler : ApplicationEventHandler
{
protected override void ApplicationInitialized(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
{
ContentService.Published += ContentService_Published;
}
void ContentService_Published(Umbraco.Core.Publishing.IPublishingStrategy sender, Umbraco.Core.Events.PublishEventArgs<Umbraco.Core.Models.IContent> e)
{
const string publishedDateKey = "publishedDate";
var contentService = ApplicationContext.Current.Services.ContentService;
foreach (var content in e.PublishedEntities.Where(x => x.HasProperty(publishedDateKey)))
{
var existingValue = content.GetValue(publishedDateKey);
if (existingValue == null)
{
content.SetValue(publishedDateKey, DateTime.Now);
contentService.SaveAndPublishWithStatus(content, raiseEvents: false);
}
}
}
}
}
Umbraco 자동으로 검색하고 시작시 ApplicationEventHandler에서 상속 클래스를 활성화하므로 프로젝트에 위의 클래스를 추가하기 만하면됩니다.
UpdateDate를 사용하여 기사를 게시 한 후 3 일 후에 맞춤법 오류를 수정하면 "게시 된 날짜"가 3 일 후에 해제됩니다. 이 올바른지? –
네, 맞습니다. 이것이 귀하의 시나리오 인 경우 콘텐츠에 '게시 날짜'속성을 추가하는 것이 좋습니다. 그런 다음 이벤트 처리기를 통해 날짜를 설정하여 날짜를 처음 게시 할 때만 업데이트하거나 단순히 콘텐츠 편집기가 원하는 날짜를 선택할 수있는 필수 필드로 지정하도록 선택할 수 있습니다. – sitereactor
네, 'Publish Date'속성을 추가하고 이벤트 핸들러를 만들어야 할 것 같습니다. –