Frequently when building Sitecore websites, the need has come up for the content author to be able to enter the hours of operation for his or her business. Unfortunately there is no built-in field type in Sitecore and nothing on the Sitecore Marketplace to accomplish this. With the help of two of my colleagues, Aaron Ladage and Patrick Delancy, we created a custom hours-of-operation field type.  Our type allows content authors to easily enter opening and closing times for each day of the week. The value is stored as XML and can be easily parsed not only to display for website visitors, but also to add the proper microdata and boost the website’s SEO.

Below I will describe how to use our custom type.  Feel free to download the source code from  or the Sitecore Package from Github or the Sitecore Package from the Sitecore Marketplace.

Saving Value from Content Editor

1. Click the ‘Edit’ button directly above the name of the field. Don’t see this button? Make sure the files under App_Config and sitecore modules have been published.

Rondeau_Hours_of_Operation_1

2. Set the appropriate values in the modal that appears.  *Checking the ’24 Hours’ checkbox will disable the rest of the modal.  Likewise, selecting ‘Closed’ on a specific day of the week will disable the drop downs for that day.*

Rondeau_Hours_of_Operation_2

3. Click ‘OK’

4. Save. *The box displaying the times will not update until the item has been saved.*

Raw XML Structure

The raw value is simply a serialization of the Hours Of Operation Model using an XmlSerializer.  Here are some examples of what that raw value can look like. Later I will show how to create the Hours Of Operation Model from the raw value and also how to serialize it to the raw value.

Open 24 hours:

Open 8:00 AM – 5:00 PM Monday – Friday, closed weekends:

Create Model from Raw Value

Instantiating the Hours Of Operation Model from the raw value stored in Sitecore is very easy. The model contains a constructor that will accept the raw value from Sitecore and take care of any sanitizing that may need to occur for you.

Serialize Model to Raw Value

Creating the raw value to save in Sitecore from the Hours Of Operation Model is done by using an XmlSerializer, which does the work for us.  See the example method below.

Displaying Values in View

You as the developer have complete control of how you display the information in the view. Below are some examples of how to do so. *In order to make this as page-editor friendly as possible, I recommend using an edit frame. This greatly improves the page editor experience by not displaying the raw value.*

We encourage you to download this and give it a try! Want to contribute? Send us a pull request!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Comments

  • Ashita Mepani

    Ashita Mepani

    2 years
    Reply
    Does this work on SitecoreXP 8.1?Thanks, Ashita
    • Jeffrey Rondeau

      2 years
      Hello Ashita,This feature is untested in Sitecore 8+. Chances are it won't work perfectly as described in this post for newer versions of Sitecore but would probably serve as a good starting point.
  • Ashita Mepani

    Ashita Mepani

    2 years
    Reply
    I guess my comment got deleted, Does this work on Sitecore 8.1Thanks, Ashita