Thursday, October 17, 2019

Open Source Headless Commerce Accelerator


There has been a lot of people talking about Headless and Commerce but did you know there is an open source Accelerator for it?  If not then this article is for you.

To start check out these articles

 Next get your hands dirty and download it and play with it:

Are you struggling? Then comment on the GitHub and someone will respond.  I have downloaded it now and will be playing with it myself and will be posting issues and resolutions as well.  Looking forward to seeing you at Symposium. Stop by booth 700 to chat and see a demo.

If you are going to Symposium. This is my QR Code Connect with me there. Would love to discuss with you IRL.

Friday, August 2, 2019

Sitecore Content Hub Guild

There has been a lot of talk about Sitecore Content Hub especially with the release of Sitecore 9.2. This is a big product with lots of components and functionality so it can be confusing.  That is why I have started a new Guild specifically for Sitecore Content Hub.

If you are learning Sitecore Content Hub then join the guild. We are available on lots of channels. 

Twitter: @schguild
 LinkedIn: Sitecore Content Hub Mentoring Guild
 Blog: schguild.blogspot.com

If you have any questions feel free to email me at chris.williams@readwatchcreate.com

Thursday, July 11, 2019

A Place To Start The DAM Process

For those who have a DAM Solution, this article will be a repeat of things you already did but if you are still storing your assets across your network, across the internet and across the galaxy or universe then this is a place to start your Crawl, Walk, Run.

"Organizations need to audit and organize assets, implement a strong taxonomy and spearhead initial adoption to build a strong foundation for DAM"  says an article on MediaValet.

Your response is probably the same as mine. Ahhh. Audit and organize my assets but I have thousands of them or millions of them. Okay don't panic. Start smaller.
  1. Organizations need to implement a strong taxonomy with feedback from various departments and project managers.
  2. Organizations need to empower departments to audit and organize their assets one project at at time and map them into the string taxonomy created in step 1.  If the taxonomy needs adjusting then adjust it for everyone but have a good reason to do it.
  3. After step 1 and 2 then you can start discussing your DAM solution.
Do you need help with any of these steps? Let us know and we can find someone to help. 
Feel free to email me at chris.williams@readwatchcreate.com if you have questions.

Wednesday, July 10, 2019

How DAM Healthy are you?

As your future-self looking back you may say, "DAM, I should have done that years ago." However at the beginning of the process you look and wonder about the ROI. you look at the vast amount of planning necessary up front and very often you throw your hands up in the air and say okay fine business as usual.

Rather than getting overwhelmed let's take a step back and breathe.  Then we can take a DAM physical and see if there are things we can change that will help us on our way to the best DAM ever.

Answer the following 4 questions honestly based on your current state:

  1. How do marketing and creative share files?
  2. How do you handle metadata related to creative files?
  3. Is there a process to handle the creative permission life-cycle? When can you start using them and when do they expire?
  4. Do you have a process for archiving and deleting creative?
Now that you have your answers think about the same questions and what your ideal answer is. If you need help answering these for your ideal state or have questions about DAM Solutions in general  email me at chris.williams@readwatchcreate.com and we can schedule a chat to help.




Monday, April 29, 2019

Sitecore Host QuickStart

I was having a conversation with Corey Smith regarding Sitecore Host. As this year is going to be the Year of APIFirst, and Sitecore Host is very important to this, we decided to start a GitHub repository to help people get started quicker.  This repository will have some basic templates as well as some html documentation on various topics pointing you to some good articles and resources.

If you are working with Sitecore Host and would like to contribute let Corey or I know and we will add you. https://github.com/sitecoreguild/SitecoreHostQuickStart/blob/develop/README.md

If you are just getting started then here is a good starting point:

  • Read the official Sitecore Host documentation.
  • Check out George Chang's SUGCon Presentation 
  • Download the plug-ins from his 2 repositories listed in the presentation. Note that there are 2 repositories. The first is for the Sitecore Host and the second is for the plug-in.
  • Check out our follow up blog that goes over how to create your own Sitecore Host using George Chang's GitHub.
We look forward to collaborating together. Sitecore Host is going to be big this year. Let's be successful together.

Sunday, March 31, 2019

Creating Your Own Sitecore Services Client API Controllers

So now that I have my Sitecore Speak 3 Application there are multiple ways you can communicate with it. One way is to use the Sitecore Services Client API.

Sitecore provides a very useful Item Service that is useful to read information about items. The basic usage is something like this:


  • To get an item given its id you would do something like this:

    http://{your sitecore url}/sitecore/api/ssc/item/110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9
  • To get an item by path you can do something like this:

    http://{your sitecore url}/api/ssc/item/?path=/sitecore/content/Home
  • To perform an item search you can do this:

    http://{your sitecore url}/api/ssc/item/search?term=Home
You can extend the Item Service to do more things.  David Peterson has written a good article to help you with this.

In my case, I needed something a bit different. I am getting some data from Sitecore items but additionally calling other APIs and pulling data from SQL Server and other sources.  For that it makes sense to create your own Controllers. 

Step 1: Create your Class Library


When doing this be aware of your version of Sitecore as you will need to make sure you are using the same version of the .NET Framework for your project.  I am using Sitecore 9.1 so I used 4.6.1 for my library.  I tried to use .NET Core or .NET Standard and it would not work for me.  When naming your take into account the routing.  By default it uses this as the route:

        http://localhost/api/ssc/{namespace}/{controller_name}/{id}/{controller_menhod}

        eg. http://localhost/api/ssc/SitecoreGuild-Ssc/Mentoring/123/GetTopics

WARNING: The namespace is important as Sitecore will use it for the default routing. You can override the routing with some more work but for me I tried to keep it simple and simplified my namespace name. This article provides more info on creating custom routes.

Next add the proper references to your .NET Framework 4.6.1 class library project in my case it is these:
  •  Microsoft.AspNet.WebApi.Core v5.2.6 - If you are using 9.1 then you need to use this. There is a newer version but you will get issues as Sitecore uses this version.
  • Sitecore.Services.Core - This would be the version in your bin folder after your Sitecore install.
  • Sitecore.Services.Infrastructure - This would be the version in your bin folder after your Sitecore install.
Before you start your development, you can do a sanity check in your environment to see if that works. I used the Mike Robbins Controller in my .Net Framework project and copied the result to the bin folder. Once I saw that one was coming up I knew my project was configured correctly.  After that I deleted his controller and started on my own.  

Create a new controller and derive it from ServicesApiController. At the top make sure you include

using System.Web.Http;

If you do not then it will prompt you to include the MVC one and if you do that you will get lots of funky errors. This one step will save you lots of confusion later.

Once you are ready to go beyond localhost you will need to do some additional configurations which are mentioned in this article.

On your new controller you will probably want to include a name. If you don't then Sitecore will do it for you and it will likely not look pretty.

    [ServicesController("MyServices/MyController")]
    public class MyControllerServiceApiController : ServicesApiController

As you add actions to your controller you will need to decorate them with an action name.

        [ActionName("GetSample")]
        public string GetSample(string id)
        {
             return "MySample:
        }

If you forget to put action it may work for your first method or it may fail but if you have 2 methods the second one will definitely fail with: 

No action was found on the controller 'MyControllerServiceApiController' that matches the request."}


Friday, March 22, 2019

Getting Speak 3 With A Little Help From My Friends

A Better Way Of Starting A New Speak 3 Project

I began the task to start my Speak 3 application and struggled. More and more people reached out to assist me and my previous blog article was all about that help.  However then this came up and I was surprised it was so buried in Search.  Now that I have found it I am going to let all of you know.

If you are starting with Speak 3 and Angular you will want to check out this article on the Sitecore Speak Starter Template by Mihály Árvai, and the Corresponding GitHub. It will save you a ton of time. The only thing to be aware of is the build command is npm run-script build. If you forget the run-script the command will prompt you so no worries.

Special thanks to:

Creating New Pages

TO DO: I am still doing this for my project but as I do it I will document it here.

Adding Components

When you are ready to add components then your next step should be to set up this Sitecore Speak UI Library project.  This article explains how to get the Sitecore Speak 3 UI Collection set up. Then you can see some components in use and copy them over to your solution as a starting point. 

You will get an error in the header.components.html file. Simply open the header.components.ts and make sure it has the isNavigationShown : boolean; as noted below. This will fix the error and then the project will run. You can then click on component pages and see how components work then use them in your project.

import { Component, OnInit } from '@angular/core';
import { SciLogoutService } from '@speak/ng-sc/logout';

@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {
// WAS MISSING IN EXAMPLE
isNavigationShown : boolean;

constructor(
public logoutService: SciLogoutService) { }

ngOnInit() {
}

}