Contents at a Glance

Chapter 1: Introduction to Sitecore 8

Understanding Web Content Management—A Brief History

R.I.P. WCM—Long Live CXP

Introducing Sitecore

Logging In

Embedded Applications

Working with Sitecore

Sitecore Company History

Sitecore ASP.NET CMS Version History

Sitecore Components

Sitecore Databases

Hosting IIS Websites

IIS Application Pool

Document Root Subdirectory

Data Subdirectory

Sitecore Visual Studio Project

Sitecore Rocks

Preparing to Install Sitecore

Choosing an Installation Strategy

Installing Microsoft SQL Server

Confi guring an Existing SQL Server Instance

Installing Sitecore with the Setup Program

Performing a Complete Installation

Performing a Database Only Installation

Performing a Client Only Installation

Installing Sitecore from a Zip or Other Archive

Archiving a Sitecore Solution

Creating and Confi guring a New Installation

Creating a Visual Studio Project

Key Priorities for a Customer Experience Platform

Easy to Use 

Real-Time Personalization 

Single View of the Customer 

Search Engine Optimization 

E-Mail and Automation 

Multilingual Support 

Omnichannel Support 

Social Media Support 

Mobile Support 

Integration Flexibility 

Developer Friendly 

Enterprise Grade 

Key Features and Capabilities of Sitecore

Sitecore Solution Architecture 

Unified Content Management 

Analytics and Experience Optimization

Experience Automation 

Experience Profiles 

Experience Personalization  

Federated Experience Manager 

Email Experience Manager 

Print Experience Manager

Quick Tour of the Sitecore Admin GUI 

What’s New in Sitecore 8? 

Summary 

Chapter 2: Managing Content

Basic Presentation Components

Introduction

Creating a simple content page using template and layout

Creating a sidebar menu using view rendering and RenderingModel

Creating breadcrumb using the view and custom model

Creating carousel using view and controller renderings

Placing renderings dynamically using placeholders

Empowering the Experience Editor using placeholder settings

Restricting or swapping rendering controls on placeholders

Extending Presentation Components

Introduction

Altering rendering behavior using component properties

Creating strongly typed rendering parameters

Achieving asynchronous operations using a custom device

Creating multilingual content pages

Generating RSS feeds for syndicated items

Improving site performance by caching renderings

Personalizing components

Chapter 3: Customizing the User Interface Framework

Introduction

Adding a custom command to item context menu

Creating a gutter to show unpublished items

Creating a Sheer UI application using XAML control to list products

Creating a SPEAK application to list and sort products

Searching and filtering products using SPEAK

Building a custom form to bind product details using SPEAK

Creating a custom editor tab in the Content Editor

Creating a custom experience button using the Field Editor

Creating a custom rule to validate item fields

Creating a custom sorting routine to sort the content tree items

Creating a custom field to save the date time with time zones

Leveraging the Sitecore Backend

Introduction

Working with multiple sites

Customizing pipelines to achieve a custom 404 page

Creating a custom event handler to auto-publish on an item save

Achieving a site-specific URL pattern for a multisite environment

Initializing hooks to subscribe events to prepare an audit trail

Creating jobs to accomplish long-running operations

Using a scheduling agent to delete older item versions

Scheduling database tasks

Making Content Management More Efficient

Introduction

Using dictionary domains for multilingual sites on a multisite environment

Creating vanity URLs for marketing purposes using an alias item

Centralizing common content using a clone item

Using a wildcard item to integrate external content

Placing dynamic content in the Rich Text Editor by replacing tokens

Adding a custom tool to the Rich Text Editor to generate tokens

Dealing with user-generated content using an Item Web API

Storing external content using a custom cache

Working with Media

Introduction

Restricting malicious files being uploaded to the media library

Downloading the media library folder

Protecting media files under a disclaimer

Achieving responsive images

Serving media files from CDN or external storage

The Sitecore Hierarchy

Templates 

Content 

Layouts and Components 

Data Templates

Creating Data Templates 

Data Template Fields 

Data Template Inheritance 

Working with Standard Values

Configuring Default Values 

Configuring Insert Options 

Presentation and Applying Layouts 

Informantion Architecture

Getting Started 

Managing Rich Media 

Working in the Experience Editor

Sitecore Items

Item Languages, Versions, and Revisions
Item Properties
Item Structure
Defi nition Items
Insert Options
Sorting Items
Managing ItemURLs
  How Sitecore Generates URLs
  How Sitecore Resolves URLs
  Removing /sitecore/content from URLs
Clone Items
Alias Items
Wildcard Items

Sitecore Data Templates

Data Template Sections

Data Template Fields

Data Template Field Types and Categories

Data Template Field Properties

Standard Values

Data Template Inheritance

The Standard Template

Data Validation

Managing Multilingual Solutions

Language and Culture

Determining the Context Language

Falling Back to an Alternate Language

Managing Media

Sitecore Media Folders

Media URLs

Confi guring the Media Library

Media Upload Watcher

WebDAV

Media Types

Configuring MIME Types

Media Path Provider

Caching Media

Sharing Content

Importing Content

Managing Thousands of Items with Buckets

Archiving Content and the Recycle Bin 

Content Versions and Multilingual Language

Content Cloning 

Workflows and Publishing Overview 

Summary 

Chapter 3: The Layout Engine and Data Access APIs

The ASP.NET Page Lifecycle

The Sitecore Context

Layout Details and Layout Deltas

Presentation Components

Devices

Layouts

Placeholders and Placeholder Settings

Presentation Controls (Renderings)

  Sublayouts

  XSL Renderings

  Method Renderings

URL Renderings

Web Controls

Rendering Parameters and Rendering Parameters

Templates

Presentation Control Defi nition Item Properties

Choosing Presentation Technology

Presentation Component Data Sources

Conditional Rendering and Personalization

The FieldRenderer Web Control and the renderField Pipeline

The Page Mode

Chapter 4: Sitecore APIs

Fundamental Sitecore APIs

Sitecore.Confi guration.Factory

Sitecore.Data.Database

Sitecore.Data.Items.Item

Sitecore.Data.Fields.Field and Related Classes

Sitecore.Data.ID

Sitecore.Data.Items.EditContext, BeginEdit(), and EndEdit()

Sitecore.Data.Items.CustomItem

Sitecore ID Constants

Sitecore Data Access Techniques

Direct Item API Access

Sitecore Query Access

Sitecore Fast Query Access

Lucene Search Index Access

Internal Links Database Access

Recursion

Sitecore Web Services

Syndicate Content with Sitecore

Public RSS Feeds

Client RSS Feeds

Chapter 5: Experience Personalization

What Is Personalization?

Rules-Based vs. Predictive Personalization 

It All Starts with Personas 

Predictive Personalization Terminology 

Personalization Testing in the Experience Explorer

Configuring Personalization

Configuring Ad-Hoc Personalization 

Configuring Persona-Based Personalization 

Summary

CHAPTER 6: Error Management

Exception Levels

Designing an Error Helper Class

Implementing Your Own Exception Classes

Trapping Exceptions with try...catch...finally Blocks

Handing Errors in Presentation Controls

Handing Syntax and Runtime Errors in XSL Renderings

Handling Exceptions in Sublayouts

Handling Exceptions in Web Controls

Hiding Presentation Control Errors

Handling Exceptions at the Page Level

Handling Exceptions at the Application Level

Error Management Pages

ASP.NET Error Management Pages

IIS Error Management Pages

HTTP 404 Not Found

System Outages

Chapter 7: Extending and Integrating Sitecore

Determining Types with the Confi guration Factory

Extending Sitecore Classes with Extension Methods

Leveraging the Sitecore User Interface Framework

Introducing Sitecore Commands

Extending Ribbons

Adding Entries to Item Context Menus

Using Content Editor Warnings

Overriding Sitecore User Interface Applications

Engaging the Rules Engine

Validating Data

Validating Fields

Validating Items

Scheduling Sitecore Processes

Defining Agents in the Web.confi g File

Registering Tasks in a Sitecore Database

Integrating from the Back End

Initializing with Hooks

Handling Events

Processing Pipelines

Handing the httpRequestBegin Pipeline

Processing the renderField Pipeline

Intercepting the renderLayout Pipeline

DMS Pipelines

Hook, Pipeline Processor, Event Handler, or Rule?

Extending the Sitecore Page Editor

Chapter 8: Automated Testing

Understanding Automated Testing

Complexities of Testing Against Sitecore

Testing Techniques for Sitecore

The Test Project

  Creating the Test Project

  Running the Tests

Testing with the HTTP Protocol

  Implementing Tests over HTTP

  Limitations of Testing over HTTP

Testing Using a Web Browser Driver

  Implementing Testing with a Web Browser Driver

  Limitations of the Web Browser Driver Technique

Testing with an Embedded Test Runner

  Implementing an Embedded Test Runner
  Deploying the Embedded Test Runner

Instantiating Controls to Test

  Implementing Tests that Instantiate Controls

  Limitations of Testing by Instantiating Controls

Invoking the Sitecore API Directly

Using Sitecore APIs without an HTTP Context

  Considering Calling Sitecore APIs Without

  an HTTP Context

  Limitations of using Sitecore API outside an HttpContext

Working with Test Data

  Location of Test Data

  Creating Test Data through HTTP

  Creating Test Data through the API

  Creating Test Data from XML

Summary

CHAPTER 9: MANAGING IMPLEMENTATIONS

Chapter 9: Managing Implementation

Approaching Sitecore Projects

Prototyping with Sitecore and RAD

Prototyping with Traditional RAD

Prototyping with Sitecore RAD

Facilitating Object-Oriented Coding Techniques

Integrating Front-End Markup

Integrating Custom Business Logic/Objects

Publishing with Sitecore

Publishing Modes

  Republishing

  Incremental Publishing

  Smart Publishing

Publishing Restrictions

Publishing Targets

Publishing to Preproduction Sitecore Environments

Publishing Media

  Scheduling Publication

  The publishItem Pipeline

Workflow

The Sitecore Workbox

Locking and Workflow

Workflow States

Initial Workflow State

Final Workflow States

Workflow Commands

Workflow Actions

Workflow and Publishing

Introduction

Creating a custom action using workflow

Achieving time-based automated publishing

Unpublishing of items

Using publishing events to send a publish completion e-mail

Publishing file-based items using web deploy

Clearing an HTML cache based on published items for a multisite environment

Customizing the publishItem pipeline to avoid duplicate

names on a live site

Managing Sitecore Deployments

Sitecore Item Serialization

Creating a Deployment

Deploying to the QA Environment

Deploying Additional Changes

Deploying to the Production Environments

Upgrading Sitecore

Team Development for Sitecore

Managing Multiple Sites with Sitecore

Chapter 10: Experience Optimization Securing, Scaling, and Troubleshooting

Introduction

Profiling and tracing content pages to find out the slowest operations

Transferring items from one database to another

Making security-hardened environments

Adding multiple publishing targets for scalability or preproduction

Creating clustered instances for scalability and performance

Getting high availability of Sitecore instances

Improving the performance of Sitecore instances

Optimizing Sitecore Performance

Leveraging Sitecore Caching

Utility Caches

Database Caches

Site Media Caches

Site Output Caches

Tuning Cache Sizes

Disabling Cache Size Limits

Bringing the Most Bits Together

Scaling Your Solution

Scaling Infrastructure

Load Balancing

Balancing Content Management

Balancing Content Delivery

Scaling Publishin
g
Scaling the Database Layer

Virtualizing Sitecore

Edge Caching and Content Delivery Networks

Architecting High Availability

Planning Hardware Capacity

Troubleshooting Your Solution

The Sitecore Log Files

Rendering Statistics

Tracking Performance Thresholds

Debugging in a Browser

Debugging with Microsoft Visual Studio

Spelunking Sitecore

The Web.Confi g File

Web.Confi g Include Files

The /confi guration/sitecore Section

Reflecting on Sitecore

Reviewing Stack Traces

Browsing Sitecore Databases

Experience Optimization Considerations

What Is A/B and Multivariate Testing? 

Good Expectations (1% Rule) 

Landing Pages vs. Corporate Web Site 

Calculating Statistical Signifi cance 

Optimization Gamification 

Running Your First A/B Test

Creating a New Page Test 

Creating a Multivariate Page-Level Test 

Summary 

Chapter 11: Experience Personalization and Analytics Using xDB

Introduction

Personalizing experience based on goals and Engagement Values

Personalizing content by predicting a visitor's profile

Storing visitor information in xDB contacts

Extending xDB by creating a custom contact facet

Creating a custom rule and condition for personalization

Automating the engagement plan

Finding nearby places using the Geolocation service

Aggregating xDB data to generate custom reports

Extending analytics reports using custom dimensions

Creating section-specific analytics reports using custom dimensions

Chapter 12: Marketing Campaigns

Sitecore Marketing Automation

A Looking Glass and a Rudder 

Tactical (t) versus Transformational (T) 

Sitecore Marketing Building Blocks

Events, Failure Events, and Goals 

Outcomes 

Campaigns 

Engagement Plans 

Taxonomies 

Creating Your First Engagement Plan

Email Experience Manager

Best Practice #1: Plan for Engagement source-Whitepaper_Email_Marketing.pdf

Why Engagement?

One System for Email and the Website — Plan for New Possibilities

Email Campaign Tools

Planning Considerations

An Ecosystem of Possibilities

Best Practice #2: Establish a Goal-Driven Program

Why Goals?

Goals for Email Campaigns

Optimizing Email Campaigns Using Goals

Best Practice #3: Leverage Your Website

Create Goal Conversion Scenarios

Create Content That is Targeted to Goals

Segment Email Recipients Using Website Behavior

Best Practice #4: Automate Email Flows

Create Flows to Increase Email Conversions

Create Flows to Support Key Objectives

Combine Email Flows with Website Visits

Best Practice #5: Contribute to Sales

Identify Prospects and Customers on the Website

Integrate to CRM

Contribute to CRM Lead Scoring Using Value Engagement Points

Best Practice #6: Optimize Using Analytics

Optimizing Email Response Rates

Understanding Where to Optimize Using Executive Insight Dashboard

Gaining Insight Using Engagement Analytics

Summary

Chapter 13: Web Forms for Marketers

Overview of Web Forms for Marketers

Building Your First WFFM Form

Adding a Form to a Page 

Adding Fields to the Form 

Configuring Form and Field Validation 

Configuring Save Actions 

Localizing/Translating the Form 

Summary

Chapter 14: Experience Analytics

The Digital Marketing System

Engagement Analytics

Engagement Automation

Testing and Optimization

Visitor Profi ling

Real-Time Personalization

Universal Profi le Management

Campaign Management

Dynamic Segmentation

Web Forms for Marketers

Email Campaign Manager

Creating Your Measurement Strategy

Building the foundation for growth source-Sitecore_DMS_QuickWins.pdf

Sitecore DMS QuickWins step by step

Set up DMS goals and enable Engagement Analytics

Optimize experience to improve conversions

Insights and recommendations

Where to go from here – from Quick Wins to ongoing wins

Learn more about DMS best practices

Out-of-the-Box Analytics

Analytics Dashboard 

Language and Location Analytics 

Location Analytics 

Pattern Matches 

Acquisition

Analytics

Campaign Analytics

Keyword Analytics

Behavior Analytics

Conversion Analytics

Experience Profile

Path Analyzer

Self-Service Sitecore Business

Intelligence

Excel PowerView Reporting

PowerBI for Teams

Summary

Chapter 15: Security

User Management

Creating a New User 

Creating New and Custom User Profi les

Administering Users 

Access Rights

Out-of-the-Box Access Rights 

Access Viewer 

Inheriting Access Rights

Evaluating Access Rights

Setting Access Rights

Interpreting Access Rights with the Access Viewer

Securing Data Template Fields

Applying Access Rights with APIs

Security Accounts and Domains

Users

User Profiles

Anonymous Users

Context User

Roles

  Everyone Roles

  Nested Roles

  Sitecore Client Roles

Security Domains

Out-of-the-Box Roles and Role Inheritance

Assigning Roles to Items 

Security Presets 

Adding Users to Roles

Working with a custom user profile

Creating custom access rights for an item

Achieving a single sign-on by creating a virtual user with

custom roles and rights

Preventing Sitecore from applying security

Implementing extranet login

Preventing Sitecore from Applying Security

Impersonating a Sitecore User

Disabling Sitecore Security

Requiring Authentication for a Managed Website

Integrating and Extending Sitecore Security

Configuring ASP.NET Membership, Profi le, and Role Providers

Building Virtual Users

Employing Federated Authentication

Switching Providers

Summary

Chapter 16: Sitecore - Beyond the CMS

Standalone Sitecore Products

Sitecore Intranet Portal

Sitecore Foundry

Sitecore App Center

Optional Modules

Active Directory

Adaptive Print Studio

Calendar

dtSearch

E-Commerce Modules

SharePoint Integration Framework

Sitecore Search Engine Optimization Toolkit

Sitecore Azure

Chapter 17: Sitecore Search or Searching in Sitecore and Item buckets

Introduction

Indexing, searching, sorting, and paging content using a search query

Creating a computed index field for categorization

Refining search results by tagging based facets

Achieving the autocomplete feature with a wildcard

Influencing search results with boosting

Hunting MoreLikeThis results

Correcting a search with did you mean

Managing millions of items using an item bucket

Every thing about Buckets

Introduction

Backwards Compatibility

Fundamental Concepts

Item Bucket 

Why Use an Item Bucket? 

Viewing Hidden Items

Configuring Item Buckets

Creating an Item Bucket

Item bucket Icon in the Quick Actions Bar 

Making Content Items Bucketable

Making a Template Bucketable 

Changing a Bucketable Template to a Non-Bucketable Template

Synchronizing an Item Bucket 

Locking Parent/Child Relationships 

Managing Item Buckets

Building the Search Indexes 

Clearing the HTML Cache 

Item Bucket Settings 

Searching

Configuring Search

Specifying which Fields are Displayed in the Search Results

Specifying a Search Result Image and Search Result Text

Displaying Media Library Images in Search Results 

Viewing the Search Results 

Different Ways to Display Search Results 

Exclude Current Item from Search 

Using Facets to Refine your Search

Language Search 

Complex Searches 

Searching within a Range 

Combining, and, or, and not 

Opening Items in the Search Results

Using Search Filters

Auto-Organizing 

Paging Results 

Predefined Search Options

Default Search Query

Persistent Search Query

Security and Item Buckets

Locking 

Identification and Authentication Modifications

Using a Custom Class to Create a Query

Using Item Buckets with the Data Source of a Control

Searching for Images

Sitecore DMS and Item Buckets

Personalization and MV Tests 

  Setting the Data Source 

Inserting and Managing Links 

  Inserting a Link in the Rich Text Editor 

  Inserting a General Link with Search 

Tagging Associations across Many Items 

Creating a Tag 

Developing with Item Buckets

New Field Types

Multilist with Search Field 

General Link with Search Field 

Treelist with Search Field 

Creating a Tag Repository

LINQ To Sitecore

Complex Searches

Adding a New Linq Provider

Adding a New Search Provider

New Logging Classes

Query Warm-up

Pipelines 

Miscellaneous 

Linq To Provider

Accessing the Linq to Sitecore API 

Custom Search Type / Object Mapping 

Supported IQueryable methods 

IQueryable Extensions 

  Filtering 

  Facets 

Searching in the Default Language

Searching and Facets 

Using a Field as a Tag Repository 

Including and Excluding Search Filters 

In-Memory Index 

Applying Quick Actions to Search Results 

Add New Quick Actions 

Showing Dynamic Fields in Search Results 

Adding New Filters and Setting up Alias Filters 

Creating a New Search Facet 

Default Bucket Queries 

A Persistent Bucket Filter 

Default Queries and Filters 

Rule-based Boosting

Creating a New Boosting Rule Condition 

Implementing Rule-Based Boosting for Fields 

Multiple Index Support

Adding a New View

Configuration and Tuning

Configuration Files 

Scaling Test Tool 

Index Analyzer

Scaling with Placeholders 

Chapter 18: Governance

What Is Governance?

Policies

Procedures

Ongoing Tasks and Audits

Roles and Responsibilities

Governance Committees

Summary

CHAPTER 11: SITECORE BEST PRACTICES, TIPS, AND TRICKS

Chapter 19: Sitecore Best Practices, Tips, and Tricks

Sitecore Best Practices

Managing Sitecore Implementations
Estimating Hardware Requirements
Administering Sitecore Solutions
Architecting Data Infrastructure
    Designing Data Templates
    Applying Standard Values
    Confi guring Insert Options
    Managing Multiple Sites
    Working with Multiple Languages
    Storing Relational Data
Coding Presentation Infrastructure
Automating Publishing Workfl ow
Securing Sitecore Solutions
Using the Media Library
Maximizing Solution Performance

Sitecore Tips and Tricks

Optimizing Sitecore Usability
Logging In to a Sitecore User Interface
Limiting User Interfaces
Optimizing the Sitecore Desktop Experience
Ctrl+Right-Click
Optimizing the Content Editor
    Maximizing Content Editor Performance
    Content Editor Keyboard Shortcuts
    Investigating and Copying Raw Field Values
    Copying and Moving Items with the Clipboard
Sitecore Keyboard Shortcuts
Optimizing the Rich Text Editor
    Rich Text Editor Profi les
    Rich Text Editor Keyboard Shortcuts
Ad Hoc Reports
Overlay Icons
Showing the Developer Tab
Working with the Sitecore Debugger

source- page_editor_recommended_practices_for_developers_70-a4

Introduction

Support Editing

Always Go Through the FieldRenderer Pipeline

How to Disable Editing

Support Design

Reasons to Support Design in the Page Editor

Break Up Your Pages

Horizontal Containers

Columns

Functional Blocks 

Naming Conventions

    Naming Components

    Naming Data Templates and Fields 

Create Placeholder Settings Items 

Use Data Sources 

    Coding for Datasources 

    Retrieving the Datasource in a Sublayout 

    Retrieving the Datasource in XSLT 

    Retrieving the Datasource in a View Rendering 

    Retrieving the Datasource in a Controller Rendering 

Page Editor Security 

    Essential Roles 

    Disabling Page Editor Access 

Responsive Design 

Configuring the Page Editor

    Allowed Controls 

    Locking Placeholders 

    Placeholder Settings Overrides 

    Editable Components 

    Datasource Location and Template 

    Compatible Renderings 

    Rich Text Editor Field Buttons 

    Component Previews 

Extending the Page Editor

    Custom Experience Buttons 

    Field Editor Buttons 

    Webedit Buttons 

Edit Frames 

Customizing the Ribbon 

Detecting the Page Editor

  Detecting Page Mode 

    Detecting Page Mode Using C# 

    Detecting Page Mode in Sitecore MVC 

    Detecting Page Mode Using Javascript 

  Modifying Component Behavior Depending on Page Mode 

    Sample Data 

    Dynamic Components 

    Hidden Content 

    External Content

Tips and Tricks

  Inline Editing Dynamic or Indexed Content 

  The Page Editor and Sitecore Modules 

Email Campaign Manager (ECM) 

Web Forms for Marketers (WFFM) 

JQuery Mobile Component Library for Sitecore 

Chapter 21: Appendix

Creating a Custom Workflow

Sitecore Architecture

Infrastructure and Services Architecture Options

Authentication Options 

Sitecore Commerce Solutions 

CRM Integration 

Federated Experience Manager

Accessing Sitecore Resources

Sitecore Training

Sitecore Partners

Becoming a Sitecore Partner

Benefi ting from Your Sitecore Partnership

Sitecore Portal

Registering for a Sitecore Account

Signing Up for E-Mail Alerts

Resetting Your Sitecore Password

Sitecore Developer Network

Sitecore Documentation

Using the Sitecore Developer Network Forums

Accessing the Sitecore Shared Source Library

Sitecore Blogs

Sitecore Demo Sites

Virtual and Local Sitecore User Groups

The Sitecore Support Portal

Sitecore Symposium

Sitecore Success Services

Summary

Index