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
Chapter 20: Page Editor Recommended Practices for developers
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