You need to create some custom code to have such a functionality, out of the box Sitecore doesn't have such a functionality.
You can create a template with two fields : Publishing Date and Publishing By.
Create your own class:
public class UpdatePublishingStatistics : PublishItemProcessor
{
private const string PublishedFieldName = "__Published";
private const string PublishedByFieldName = "__Published By";
public override void Process(PublishItemContext context)
{
SetPublishingStatisticsFields(context);
}
private void SetPublishingStatisticsFields(PublishItemContext context)
{
Assert.ArgumentNotNull(context, "context");
Assert.ArgumentNotNull(context.PublishOptions, "context.PublishOptions");
Assert.ArgumentNotNull(context.PublishOptions.SourceDatabase, "context.PublishOptions.SourceDatabase");
Assert.ArgumentNotNull(context.PublishOptions.TargetDatabase, "context.PublishOptions.TargetDatabase");
Assert.ArgumentCondition(!ID.IsNullOrEmpty(context.ItemId), "context.ItemId", "context.ItemId must be set!");
Assert.ArgumentNotNull(context.User, "context.User");
SetPublishingStatisticsFields(context.PublishOptions.SourceDatabase, context.ItemId, context.User.Name);
SetPublishingStatisticsFields(context.PublishOptions.TargetDatabase, context.ItemId, context.User.Name);
}
private void SetPublishingStatisticsFields(Database database, ID itemId, string userName)
{
Assert.ArgumentNotNull(database, "database");
Item item = TryGetItem(database, itemId);
if (HasPublishingStatisticsFields(item))
{
SetPublishingStatisticsFields(item, DateUtil.IsoNow, userName);
}
}
private void SetPublishingStatisticsFields(Item item, string isoDateTime, string userName)
{
Assert.ArgumentNotNull(item, "item");
Assert.ArgumentNotNullOrEmpty(isoDateTime, "isoDateTime");
Assert.ArgumentNotNullOrEmpty(userName, "userName");
using (new SecurityDisabler())
{
item.Editing.BeginEdit();
item.Fields[PublishedFieldName].Value = DateUtil.IsoNow;
item.Fields[PublishedByFieldName].Value = userName;
item.Editing.EndEdit();
}
}
private Item TryGetItem(Database database, ID itemId)
{
try
{
return database.Items[itemId];
}
catch (Exception ex)
{
Log.Error(this.ToString(), ex, this);
}
return null;
}
private static bool HasPublishingStatisticsFields(Item item)
{
Assert.ArgumentNotNull(item, "item");
return item.Fields[PublishedFieldName] != null
&& item.Fields[PublishedByFieldName] != null;
}
}
Add your pipeline :
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<publishItem>
<processor type="Sitecore.Sandbox.Pipelines.Publishing.UpdatePublishingStatistics, Sitecore.Sandbox" patch:after="processor[@type='Sitecore.Publishing.Pipelines.PublishItem.UpdateStatistics, Sitecore.Kernel']" />
</publishItem>
</pipelines>
</sitecore>
</configuration>
All the informations you can find here :
https://sitecorejunkie.com/2013/01/26/who-just-published-that-log-publishing-statistics-in-the-sitecore-client/