Skip to content

Instantly share code, notes, and snippets.

@mskutta
mskutta / ViewPageEventProcessor.config
Created November 2, 2016 17:30
Sorting Sitecore Items by Popularity using xDB
<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<endAnalytics>
<processor type="Website.Logic.Analytics.Views.ViewPageEventProcessor, Website" patch:before="processor[@type='Sitecore.Analytics.Pipelines.EndAnalytics.SaveDuration, Sitecore.Analytics']"/>
</endAnalytics>
</pipelines>
</sitecore>
</configuration>
@mskutta
mskutta / ViewValue.cs
Created November 2, 2016 15:22
Sorting Sitecore Items by Popularity using xDB
using Sitecore.Analytics.Aggregation.Data.Model;
using System;
namespace Website.Logic.Analytics.Views
{
public class ViewValue : DictionaryValue
{
internal static ViewValue Reduce(ViewValue left, ViewValue right)
{
var viewValue = new ViewValue();
@mskutta
mskutta / Fact_Views.sql
Last active November 2, 2016 15:19
Sorting Sitecore Items by Popularity using xDB
ALTER TABLE [dbo].[Fact_Views] DROP CONSTRAINT [FK_Fact_Views_Items]
GO
/****** Object: Table [dbo].[Fact_Views] Script Date: 8/22/2016 8:44:14 AM ******/
DROP TABLE [dbo].[Fact_Views]
GO
/****** Object: Table [dbo].[Fact_Views] Script Date: 8/22/2016 8:44:14 AM ******/
SET ANSI_NULLS ON
GO
@mskutta
mskutta / ViewFact.cs
Last active November 2, 2016 15:19
Sorting Sitecore Items by Popularity using xDB
using Sitecore.Analytics.Aggregation.Data.Model;
namespace Website.Logic.Analytics.Views
{
public class ViewFact : Fact<ViewKey, ViewValue>
{
public ViewFact() : base(ViewValue.Reduce)
{
}
@mskutta
mskutta / ViewKey.cs
Created November 2, 2016 15:19
Sorting Sitecore Items by Popularity using xDB
using System;
using Sitecore.Analytics.Aggregation.Data.Model;
namespace Website.Logic.Analytics.Views
{
public class ViewKey : DictionaryKey
{
public Guid ItemId { get; set; }
public DateTime Date { get; set; }
}
public class EvaluateResult : PublishItemProcessor
{
public override void Process(PublishItemContext context)
{
Assert.ArgumentNotNull(context, "context");
// We want to rely on smart publishing so we don't send unnecessary data. Deletes are a weird sceneiro.
// If a Republish is performed, we need the delete actions to come through. We cant rely on the Result.Operation for this.
if ((context.Action != PublishAction.DeleteTargetItem || context.PublishOptions.CompareRevisions) &&
(context.Result.Operation == PublishOperation.Skipped ||
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<pipelines>
<publishItem>
<processor patch:after="*[@type='Sitecore.Publishing.Pipelines.PublishItem.PerformAction, Sitecore.Kernel']" type="MyAssembly.VersionToPublish, MyAssembly"/>
</publishItem>
</pipelines>
</sitecore>
</configuration>
using System;
using System.Linq;
using System.Web.UI;
using Sitecore;
using Sitecore.Configuration;
using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.Diagnostics;
using Sitecore.IO;
using Sitecore.Links;
public ActionResult Content()
{
var spanish = LanguageManager.GetLanguage("es");
var english = LanguageManager.GetLanguage("en");
using (new LanguageItemFallback(spanish, english))
{
var model = GetContextItem<IContentGlass>();
return View(model);
}
}
public static class GlassMapperScCustom
{
public static IDependencyResolver CreateResolver()
{
var config = new Glass.Mapper.Sc.Config();
var resolver = new DependencyResolver(config);
// Add ResolveItemTask at the beginning of the Configuration Resolver.
resolver.ConfigurationResolverFactory.Insert(0, () => new ResolveItemTask());