286
Kentico 9

Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Kentico 9

Page 2: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. Configuring Kentico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1 Managing sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.1.1 Installing new sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.1.1.1 Creating new sites using the wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.1.1.2 Creating new sites from templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.1.1.3 Creating web templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.1.2 Setting domain names for sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.1.3 Managing site licenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.1.4 Setting up multiple websites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.1.4.1 Running multiple sites on a single domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.1.4.2 Configuring nested websites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

1.1.5 Switching sites to off-line mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.1.6 Configuring settings for sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.1.6.1 Settings - Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241.1.6.1.1 Settings - Content management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251.1.6.1.2 Settings - Media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271.1.6.1.3 Settings - Blogs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281.1.6.1.4 Settings - Translation services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

1.1.6.2 Settings - URLs and SEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301.1.6.3 Settings - Security & Membership . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

1.1.6.3.1 Settings - Passwords . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361.1.6.3.2 Settings - Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371.1.6.3.3 Settings - Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

1.1.6.4 Settings - System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411.1.6.4.1 Settings - Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431.1.6.4.2 Settings - Emails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471.1.6.4.3 Settings - Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481.1.6.4.4 Settings - Health monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501.1.6.4.5 Settings - Output filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501.1.6.4.6 Settings - Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511.1.6.4.7 Settings - Debug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

1.1.6.5 Settings - On-line marketing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571.1.6.5.1 Settings - Contact management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581.1.6.5.2 Settings - Email marketing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611.1.6.5.3 Settings - Web analytics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

1.1.6.6 Settings - E-commerce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651.1.6.6.1 Settings - Authorize.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711.1.6.6.2 Settings - PayPal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

1.1.6.7 Settings - Community . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711.1.6.7.1 Settings - Avatars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721.1.6.7.2 Settings - Chat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741.1.6.7.3 Settings - Forums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761.1.6.7.4 Settings - Friends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771.1.6.7.5 Settings - Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781.1.6.7.6 Settings - Message boards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781.1.6.7.7 Settings - Messaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

1.1.6.8 Settings - Social media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791.1.6.8.1 Settings - Google+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

1.1.6.9 Settings - Social marketing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791.1.6.9.1 Settings - URL shorteners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

1.1.6.10 Settings - Intranet & Collaboration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801.1.6.10.1 Settings - Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

1.1.6.11 Settings - Versioning & Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801.1.6.11.1 Settings - Staging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801.1.6.11.2 Settings - Object versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811.1.6.11.3 Settings - Web farm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

1.1.6.12 Settings - Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831.1.6.12.1 Settings - Integration bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831.1.6.12.2 Settings - Microsoft SharePoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831.1.6.12.3 Settings - REST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841.1.6.12.4 Settings - WebDAV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841.1.6.12.5 Settings - Data.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851.1.6.12.6 Settings - Salesforce.com . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851.1.6.12.7 Settings - 51Degrees.mobi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861.1.6.12.8 Settings - Strands Recommender . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

1.2 Managing files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871.2.1 Storing files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881.2.2 Uploading files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901.2.3 Resizing images on upload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911.2.4 Adding watermarks to images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921.2.5 Administering files globally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931.2.6 Editing file metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

1.3 Configuring page URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 951.3.1 URL format and configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981.3.2 Setting page aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001.3.3 Wildcard URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1021.3.4 Extensionless and custom URLs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

Page 3: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.3.5 Linking pages and files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041.3.6 Custom handling of URL path values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

1.4 Search engine optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081.4.1 Configuring websites for SEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081.4.2 Google Sitemaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121.4.3 Managing robots.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

1.5 Optimizing website performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181.5.1 Loading data efficiently . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1221.5.2 Configuring caching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124

1.5.2.1 Caching page output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1261.5.2.1.1 Using output cache substitutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

1.5.2.2 Caching files and resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1331.5.2.3 Caching the data of page components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1341.5.2.4 Setting cache dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1361.5.2.5 Debugging cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1371.5.2.6 Caching best practices for typical projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1401.5.2.7 Reference - Cache settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

1.5.3 Using code minification and compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1451.5.4 Setting up web farms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

1.5.4.1 Configuring web farm servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1481.5.4.2 Troubleshooting web farms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1501.5.4.3 Debugging web farms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

1.5.5 Selecting content archival approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1531.6 Setting up search on your website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

1.6.1 Enabling search indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1551.6.2 Creating search indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

1.6.2.1 Defining page indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1591.6.2.2 Defining forum indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1641.6.2.3 Defining custom table indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1651.6.2.4 Defining on-line form indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1661.6.2.5 Defining user indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1681.6.2.6 Defining general indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

1.6.3 Monitoring search indexing tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1701.6.4 Adding search functionality to pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

1.6.4.1 Setting up predictive search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1741.6.5 Configuring search assistance features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1791.6.6 Searching attachment files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

1.6.6.1 Configuring SQL search for attachment files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1841.6.7 Using search filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1891.6.8 Smart search syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1921.6.9 Displaying search results using transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1941.6.10 Searching according to page permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1961.6.11 SQL search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

1.7 Scheduling tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1971.7.1 Configuring scheduled task execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1971.7.2 Installing the Scheduler Windows service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1991.7.3 Reference - scheduled task properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

1.8 Configuring SMTP servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2031.8.1 Reference - SMTP server properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

1.9 Managing email templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2071.10 Working with widget dashboards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

1.10.1 Managing widget dashboard content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2091.10.2 Adding widget dashboards to the interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

1.11 Using output filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181.12 Configuring time zones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

1.12.1 Managing time zones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2231.13 Working with object versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

1.13.1 Using object versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2261.13.2 Objects recycle bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

1.14 Creating alternative forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291.14.1 Code names of automatically used alternative forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301.14.2 Displaying filters using alternative forms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

1.15 Health monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2321.15.1 Registering performance counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2341.15.2 Installing the Health monitoring Windows service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2361.15.3 Enabling health monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2381.15.4 Monitoring using the Performance monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2381.15.5 Reference - default performance counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

1.16 Adding cookie law consent to web pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421.16.1 Cookie levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431.16.2 Reference - Kentico cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

1.17 Banning IP addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2471.18 Configuring countries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2501.19 Working with system reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

1.19.1 Creating reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2511.19.2 Creating report categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2661.19.3 Defining report parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267

Page 4: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.19.4 Storing data from reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2681.19.5 Displaying reports on websites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2681.19.6 Subscribing to reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2691.19.7 Example - creating a simple report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2751.19.8 Reporting security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

1.20 Configuring Windows Communication Foundation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2821.21 Configuring the administration interface URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2841.22 Configuring the code editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284

Page 5: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Configuring KenticoConfigure thesystem

Optimize yourwebsite

Sites

Whether you run one ormultiple sites, it isuseful to know how tomanage sites in thesystem. Learn how to in

, stall new sites add site, licenses set domain

, and more.names

Files

Explore the ways ofstoring files in Kentico.Choose whether to store files in the database

, or the file system upload multiple files to your

, set up websites image.resizing on upload

Page URLs

Learn how to set theURLs for web pages inKentico. Adjust yourURLs so that they do

.not have extensions

Website search

The system providesbuilt-in, index-basedsearch functionality. En

, able search indexing cr aneate search indexes

d add Smart search to your site.web parts

SMTP servers

Connect the system toSMTP servers to allowKentico to send outemails.

Email templates

Create and managetemplates for emails,which are automaticallysent by the system.

Performanceoptimization

Learn which aspectsaffect the performanceof your websites andwhat can you do toimprove theperformance. Setting up

can alsoweb farmsprovide load balancingfor your website.

Search engineoptimization (SEO)

Help your website bevisible in searchengines like Google.

Output filters

The output filtersenable the system toautomatically adjust theHTML code of pagesbefore sending thecode to browsers.

Health monitoring

Set up performancemonitoring for yourapplication. This canhelp you findbottlenecks in thesystem.

Page 6: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Configure theenvironment forcontent editing

           

                             

Workflows

Workflows define thelife cycles of pages.Learn how to createthem and apply them topages.

Page versioning

Configure versioning ofpages with or without aworkflow. Set up lockin

forg of pagescollaborative editing.

Media libraries

Configure customstorage for medialibraries, custom filetypes or maximum fileupload size.

WYSIWYG editor

Configure andpersonalize theWYSIWYG editor forcontent editors.

On-site editing

Allow content editors toadjust page content onwebsites directly whileviewing the website in alive mode.

Content notifications

Enable content editorsto receive notificationmessages when pagesare created, updated ordeleted.

WebDAV

Enable the contenteditors tocollaboratively edit filesstored on remoteservers using the clientapplications (e.g., usingMicrosoft Word)installed on their localcomputers.

Scheduled tasks

Learn how to configurethe system toperiodically performtasks.

Object versioning

Configure the system tokeep track of changesmade to objects andlearn how to work withthe object recycle bin.

Alternative forms

Create alternativeversions of varioustypes of editing andinput forms in thesystem.

Page 7: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3.

1. 2. 3. 4.

1.

Managing sitesYou can run any number of sites within a single instance of Kentico. Each site runs on its own domain name and stores content in a separate

. The websites share the same web project (code base) and database.content tree

Creating sites

See .Installing new sites

Starting and stopping sties

You can stop or run individual sites in the application. Use the following actions: Sites

 Start site

 Stop site

When you stop a site:

Visitors cannot access the live siteUsers cannot edit the site in the site-specific sections of the administration interface

To stop a live website with administration enabled, keep the site running and switch it to .off-line mode

 

Assigning objects to sites

Many objects in Kentico need to be assigned to specific sites in order to be available on the given sites. Site bindings allow you to limit whereobjects can be used when running multiple websites in the system. You can manage all types of site bindings for individual websites in asingle location:

Open the application.Sites

Edit ( ) the site.Open the tab.Assigned objects

You can assign the following objects to the site:

Custom tablesSmart search indexesSMTP serversModulesUsersCSS stylesheetsPage templatesPage typesWeb part containersPage relationship typesPolls

For example, after creating a new site, you can assign users from other sites in the system:

Select the sub-tab.UsersClick .Add usersSelect the users that you want to add to the site.Click .Select

Deleting sites

You can delete sites from the system in the application.Sites

Click ( ) next to the site that you want to delete.DeleteThe dialog opens.Site deletion confirmation

Switching between sites on a single domain

You cannot start sites that use the (or ) as another site that is already running. If you need to testsame domain name domain aliasmultiple websites on a single domain, such as , set this domain for all sites and switch between them using the http://localhost Start siteand actions.Stop site

You can run multiple sites at the same time using alternative host names that point to the same domain (for example and http://localhost).http://127.0.0.1

See also: Setting up multiple websites

Page 8: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

3.

4.

Enable or disable the following options:

Delete page attachment physical files - if checked, the deletion process removes files attached to the site's pages fromthe file system (stored in the folder).<web project>\<site name>\filesDelete meta files physical files - if checked, the deletion process removes the site's meta files (stored in the <web

folder).project>\<site name>\metafilesDelete media files physical files - if checked, the deletion process removes physical files stored in the site's media

( folder).libraries <web project>\<site name>\media

Click .YesThe system displays a log showing the progress of the deletion.

When the process finishes, click .OK

The list in the application no longer includes the deleted site.Sites 

Installing new sitesUse the to add new websites to the system. You can access the wizard in the application.New site wizard Sites

Step 1 - Choose default website

In the first step of the wizard, choose if you want to create the new site using a wizard or import a web template.

 Create a new site using a wizard - creates a new blank site. Use web template - creates a new site based on a web template.

Click . Follow the links above to learn about the rest of the site creation process.Next 

Creating new sites using the wizardThis page describes how to add a new website to the system using the wizard. Start the in the application, and select New site wizard Sites

in the  . Create a new site using a wizard first step

Step 2 - Enter new site settings

Enter the following basic site properties:

Site display name - name of the new site displayed in the administration interface. - Site code name name of the new site used in website code.

Domain name - under which the new site will run. The domain must be unique for each website running in thedomain namesystem.Site culture - the default culture of the site.

Click  to continue.Next 

  

Step 3 - Object selection

In this step, select which along with your new site. Choose the categories displayed in the tree on the left side ofobjects will be importedthe wizard.

The following options are available in the root of the tree:

Global object selection

Load default selection - Select all objects selects all of the default objects.

 Select only new objects - selects only those objects that do not already exist in the system (clears selection for existing objects).  Deselect all objects - clears the selection for all default objects.

Page 9: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Import settings

 Assign all objects to the imported site (recommended) - if enabled, all imported site related objects will be assigned to theimported site.Run the site after import - if enabled, the system attempts to start the new site immediately after the import is finished.Delete incomplete site when import fails - if enabled, the system deletes the site if any part of the import process fails.Do not import objects where parent object is missing - if enabled, the import process skips any child objects whose parentobjects is not present in the target system.Import tasks (recommended) - serves no purpose when creating new sites.Log staging synchronization tasks - if enabled, the system logs staging tasks reflecting all changes made by the creation of thenew site. Check this option to synchronize the imported data to other servers connected through .content stagingLog integration tasks - if enabled, the system logs outgoing integration tasks for all changes made by the creation of the new site.Check this option if you want to transfer the imported data to a system connected via the .integration busImport files (recommended)

Import code files - indicates if the new site includes code files that require compilation, i.e. files with the followingextensions: , , , . You cannot import code files if your application is .cs vb aspx ascx precompiledImport custom assembly files - if enabled, the new site includes custom assembly files bound to notification gateways,translation services, payment options, integration connectors, scheduled tasks, advanced workflow actions, marketingautomation actions and smart search analyzers. Custom assemblies are those whose names do not begin with the prCMS.efix. You cannot import assembly files if your application is .precompiledImport global folders - if enabled, the import process includes global files originally exported from the following folders:

~/App_Code/Global/~/CMSGlobalFiles/~/CMSScripts/Custom/~/App_Code/Controllers/~/Controllers/Global/~/Views/Global/

Import site folders - if enabled, the import process includes site-related files originally exported from the following folders:~/App_Code/<site code name>/~/App_Data/<site code name>/~/<site code name>/~/Controllers/<site code name>/~/Views/<site code name>/

You can leave the default settings and click  to continue.Next 

Step 4 - Import progress

A log appears, showing the progress of the site creation.

When the process finishes, click .Next

Step 5 - Select master page

Here you can select the master page template. The master page defines the basic visual structure of the website. You can switch to adifferent master page later at any time.

Page 10: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Select one of the layouts and click  .Next

Step 6 - The website has been created successfully

You have successfully created the new website. Click to return to the application.Finish Sites

You can now begin or .developing the website managing the website content 

Creating new sites from templatesThis page describes how to create a new website based on a predefined web template. Start the in the application andNew site wizard Sitesselect in the  .Use web template first step

Page 11: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Step 2 - Choose web template

You can choose from a number of web templates. For example:

Dancing Goat showcases some of the Kentico's Integrated Marketing Solution from the point of a coffee selling business.E-commerce Site is an e-shop showing the possibilities of the Kentico E-commerce Solution.Corporate Site is a typical web presentation of a company. Used in most documentation examples.Community Site is a sample community website demonstrating social networking capabilities of Kentico.Blank Site is a blank template used for creating websites from scratch.MVC Blank Site is a blank template used for sites that use an for their presentation. The site is only intended to beMVC applicationa repository for content displayed by an external MVC application. The content itself is managed by content editors.

Some of the templates are available in two versions, one using the   and the other using  .portal engine ASPX page templates

Choose one of the listed web templates and click .Next

  

Step 3 - Enter new site settings

Enter the following basic site properties:

Site display name - name of the new site displayed in the administration interface. - Site code name unique identifier of the new site.

Domain name - under which the new site will run. The domain must be unique for each website running in thedomain namesystem.

Click  to continue.Next 

Step 4 - Objects selection

In this step, select which objects from the web template you want to import. Choose the categories displayed in the tree on the left side of thewizard.

The following options are available in the root of the tree:

Global object selection

Load default selection - Select all objects selects all objects included in the web template.

 Select only new objects - selects only those objects that do not already exist in the system (clears selection for existing objects). 

Custom templatesYou can from existing sites.create your own web templates

Page 12: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 Deselect all objects - clears the selection for all objects in the web template.

Import settings

 Assign all objects to the imported site (recommended) - if enabled, all imported site related objects will be assigned to theimported site.Run the site after import - if enabled, the system attempts to start the new site immediately after the import is finished.Delete incomplete site when import fails - if enabled, the system deletes the site if any part of the import process fails.Do not import objects where parent object is missing - if enabled, the import process skips any child objects whose parentobjects is not present in the target system.Import tasks (recommended) - if enabled, any object deletion tasks included in the web template will be imported. Log staging synchronization tasks - if enabled, the system logs staging tasks reflecting all changes made by the creation of thenew site. Check this option to synchronize the imported data to other servers connected through .Content stagingLog integration tasks - if enabled, the system logs outgoing integration tasks for all changes made by the creation of the new site.Check this option if you want to transfer the imported data to a system connected via the .integration busImport files (recommended)

Import code files - indicates if the new site includes code files that require compilation, i.e. files with the followingextensions: , , , . You cannot import code files if your application is .cs vb aspx ascx precompiledImport custom assembly files - if enabled, the new site includes custom assembly files bound to notification gateways,translation services, payment options, integration connectors, scheduled tasks, advanced workflow actions, marketingautomation actions and smart search analyzers from the web template. Custom assemblies are those whose names do notbegin with the prefix. You cannot import assembly files if your application is .CMS. precompiledImport global folders - if enabled, the import process includes global files originally exported from the following folders:

~/App_Code/Global/~/CMSGlobalFiles/~/CMSScripts/Custom/~/App_Code/Controllers/~/Controllers/Global/~/Views/Global/

Import site folders - if enabled, the import process includes site-related files originally exported from the following folders:~/App_Code/<site code name>/~/App_Data/<site code name>/~/<site code name>/~/Controllers/<site code name>/~/Views/<site code name>/

You can leave the default settings and click  to continue.Next 

Step 5 - Import progress

A log appears, showing the progress of the site creation.

When the process finishes, click .Next

Page 13: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

3. 4. 5. 6. 7. 8.

9.

1.

2. 3. 4.

Step 6 - The website has been created successfully

You have successfully created the new website. Click to return to the application.Finish Sites

You can now begin or .developing the website managing the website content 

Creating web templatesThe system allows you to save sites created in Kentico as web templates. You can then use the web templates as starting points fordeveloping new sites. To save a site as a web template:

Export your site.

Open the folder inside your web project directory. ~\App_Data\TemplatesThis folder stores all default templates, such as the Corporate or Community site.

Create a new folder for your web template.Add a sub-folder named . DataExtract the content of your site's export package into the folder.DataLog into the Kentico administration interface and open the application.Web templatesClick .New web templateEnter the following details:

Display name - the name of the web template displayed in the new site wizard.Code name - serves as a unique identifier of the web template.Web template folder - specifies the path to the folder containing the template's export package: ~\App_Data\Templates\<your folder>Description - text describing the content and purpose of the web template.Thumbnail - allows you to upload a preview image. The system displays this image next to the template in the Choose web

dialog of the new site wizard.templateLicense editions / packages - select the editions of Kentico where the web template is supported. The system only offersthe template if the license requirements are fulfilled on the given instance of Kentico.

Click .Save

Your new web template is now included in the list. You can .create new sites based on the template 

Setting domain names for sitesThe is one of the basic properties that you assign when . The system generates the URLs of the website'sDomain name creating new sitespages and other components using the specified domain name. Every website running in the system must have a unique domain name.

To set the main domain name for an existing website:

Open the application.Sites

Edit ( ) the site.Type the domain into the property on the tab.Site domain name GeneralClick .Save

 

Adding domain aliases

Domain aliases are alternative domain names that lead to the same website. You can add any number of domain aliases for each site. Forexample, if your website uses as its main domain and you also wish to assign the domain to the samemycompany.com my-company.co.uk

Important: You need to carefully consider which you include in the site export package (such as modules, global objects , , etc.). When you create new sites based on the template, the system overwrites existingweb parts search indexes

objects using the ones from the web template. We recommend that you only keep objects that are directly related to thesite's design and content.

Domain name format

Enter the domain name without the protocol and prefix. Include the port number if it is different than .http:// www 80

Correct:

mycompany.compartners.mycompany.commycompany.com:8080

Incorrect:

http://mycompany.comwww.mycompany.com

Page 14: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4. 5.

6.

7.

1.

2. 3. 4. 5.

6.

1. 2. 3. 4.

1.

2.

website, you need to create a domain alias. Aliases can be particularly useful when building .multilingual websites

To create a domain alias for your website:

Open the application.Sites

Edit ( ) your site.Select the tab.Domain aliasesClick .New domain aliasType the alternative domain name into the property.Domain alias

Use the same format as for the site's main domain name, without the protocol or prefix.www

(Optional) Set the .Default alias pathSpecifies the default page that the system displays when users access the site's root URL through the domain alias.Overrides the setting.Settings -> Content -> Default alias path

Click .Save

The site is now available under the alias's domain name.

Redirecting aliases to the main domain

You can configure domain aliases to automatically redirect users to another URL. When a visitor accesses the website through the domainalias, the system sends them to the specified URL instead.

If the only purpose of your domain aliases is to make the site available under multiple domain names, it is recommended to redirect thealiases to the website's main domain. This is a common practice that prevents duplicate web content (i.e. havingSearch engine optimizationmultiple URLs leading to the same content).

To set up redirection for your domain aliases:

Configure the redirect URL(Optional) Configure output caching for the domain variable

Configure the redirect URL

Open the application.Sites

Edit ( ) your site.Select the tab.Domain aliasesEdit your aliases.Type the target URL into the property.Redirect URL

Click .Save

(Optional) Configure output caching for the domain variable

If you are using a for any of the domain aliases, you need to make the output cache store different data based on theDefault alias path different domains.

Open the application.Settings Go to .System -> PerformanceUnder , enable .Output caching Output cache variables - domainSave.

The system now automatically redirects all users to the site's main domain. For example, if your site's main domain is and youdomain.comhave as a domain alias, users who access are redirected to domain.co.uk https://domain.co.uk/example.aspx https://domain.com/example.a

.spx

Running sites on different domains

If you want to run your live site on a different domain than where you run Kentico administration (for example, when running a separate MVC, you need to specify a URL leading to the site's domain.)application

Open the application.Sites

Note: You need to have a valid for every domain alias. Domain alias licenses are free of charge if you already own alicenselicense for the main domain.

Use to dynamically redirect users to the correct page, for example: macro expressions {%protocol%}://domain.com{%relativepath%}

{% relativepath %} - resolves into the current relative URL path when the redirection takes place{% protocol %} - resolves into the current URL scheme name (protocol) when the redirection takes place

Page 15: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

2. 3.

4.

1. 2. 3.

Edit ( ) your site.On the General tab, type the URL leading to the site's domain into the property. For example: Presentation URL

http://www.mysite.com Save.

Links on the live site will now be resolved with the domain you entered. that Kentico can't guarantee that links used (clicked on) directlyNote on the or tab of the application will resolve correctly when using this property.Page Design Pages  

Managing site licensesKentico requires a license key for every that your use. You cannot view or edit sites running on domains that do not have adomain sitesmatching license in the system.

To manage your system's licenses, open the application.Licenses

When you obtain a license key (full or trial) for a domain:

Click  .New licenseCopy the full license key into the field.Click .Save

The Licenses page displays a list of all licenses added to your system, including the domain names, expiration dates and license editions.

Obtaining licenses

You can generate your license keys on the .Kentico Client Portal

On the Client Portal, you need to register your license (Serial Number) which we have sent you after you bought Kentico. You can thengenerate new license keys based on the registered license. If you cannot log in to the Client Portal, please contact the person in yourcompany who has the credentials and the license.

How licensing works

License keys support all protocol and www prefix combinations for the specified domain. Every valid license key also allows you to use thelocal server's hostname ( and ).localhost 127.0.0.1

For example, if you add a license key for the domain, you can use all of the following domains:example.com

http://example.comhttps://example.comhttp://www.example.comhttps://www.example.comhttp://localhosthttp://127.0.0.x (where x is between 1 and 255)

If your site uses (different domain names that point to the same website) or a with a different domain, youdomain aliases Presentation URLneed to add extra license keys for these domains.You can generate the domain alias license keys on the . Domain aliasKentico Client Portallicenses are free of charge if you already own a license for the main domain. 

Setting up multiple websitesKentico allows you to run any number of websites from a single installation. The websites share the same web project (code base) anddatabase. All sites run under a single web site in . IIS

Note: You need to have a valid for the domain in the .license Presentation URL

Note: If you do not have a valid license for the current domain, only global applications are available in the administration interface.

Page 16: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Using separate installations for each site

It is recommended to run separate instances of Kentico for every website in the following scenarios:

Your websites contain a and high performance is a critical requirement.very large number of pagesYour customers have very and you need to customize shared parts of the system, such as thedifferent requirementsadministration interface or the structure of shared database tables.Your customers are very sensitive to and you do not want to risk that other clients will get access to othersecurity

Page 17: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3. 4.

5.

1.

2.

3.

The following sections demonstrate how to set up multiple websites on an example of two sites:

mysite.commysite2.com

 

Creating multiple sites in Kentico

Open the sites application.Create two websites.

You can either existing websites or create new websites using the .import New site wizard

Edit ( ) each website and set the values (without the prefix and protocol).Site domain name www http://Make sure both sites are running.

You can check the site status on the main site list.

Make sure you have valid for both domains in the application.license keys Licenses

Configuring multiple sites on a local IIS server

Open your console (Internet Information Services (IIS) Manager Start -> Control Panel -> Administrative tools -> Internet).Information Services (IIS) Manager

In the tree, right-click and select .Sites Add Web Site

Enter the following details:

Site name: mysite.comPhysical path: disk path to the location of your site's web project (where the application's file is stored).web.configHost name: www.mysite.com

websites because of an administrator’s mistake.

Page 18: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

4.

5.

Click .OKThe site appears under the node.Sites

Right-click the site and select .Edit bindings

Page 19: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

5.

6. 7. 8.

Click .AddEnter the domain name of your second website as the and click .Host name OKAdd two more bindings for both sites without the prefix.www

Your new IIS web site is now configured to handle all incoming requests for domains and . You may need to askmysite.com mysite2.comyour network administrator to redirect the domain in the DNS records to your website. When you open and http://www.mysite.com http://www

(or your own domain names) in a browser, you should see two different websites..mysite2.com

 

Testing domains

If you do not own the domains, you can test the configuration by modifying the server's C:\WINDOWS\system32\drivers\etc\host file.s

For this example, add the following lines to the end of the file:

127.0.0.1 mysite.com127.0.0.1 www.mysite.com127.0.0.1 mysite2.com127.0.0.1 www.mysite2.com

Note: These are client settings, so the website will only work when accessed from a browser on the server machine.

Multiple websites on a single domain

If you cannot use multiple domain names for your website, you can differentiate websites by subfolder (virtual directory). See Runni for more details.ng multiple sites on a single domain

Page 20: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

3.

4.

5.

6.

7.

1.

2. 3. 4. 5.

Running multiple sites on a single domainThis page describes how to run multiple websites in separate sub-folders on a single domain. In this scenario, you do not need to obtain newdomains for each site.

Example - Installing two sites onto a single domain

Install a Kentico web project to the following folder: .C:\inetpub\wwwroot\kenticofolderIn the installer, choose and (does not create a virtual directory).Custom installation Built-in web server in Visual Studio

 Open your console (Internet Information Services (IIS) Manager Start -> Control Panel -> Administrative tools -> Internet

).Information Services (IIS) Manager

Create a new virtual directory named .kenticowebThe name of the virtual directory must be different than the folder where you installed the web project.Set the to a non-website folder in the root of a local disk. Ideally, create an empty folder for this purpose, forPhysical pathexample: c:\empty

Create two IIS applications under named and .kenticoweb web1 web2Set the of both applications to the web site folder of the installed project (Physical path C:\inetpub\wwwroot\kenticofolde

in this example).r\CMSSet the application pool according to the type that you specified in the installation of the Kentico web project.

Open your browser and type in either or . http://localhost/kenticoweb/web1 http://localhost/kenticoweb/web2

Log in to the Kentico administration interface and open the application.Sites

Install both sites. Set the fields:Site domain nameWebsite 1: localhost/kenticoweb/web1Website 2: localhost/kenticoweb/web2

Now when you go to , you will see website 1. If you go to , you will seehttp://localhost/kenticoweb/web1 http://localhost/kenticoweb/web2website 2.

  

Synchronizing global data for the sites

To ensure the synchronization of settings and global objects between the two sites, you need to set up a environment.Web farm

Add the following keys to the section of the file in the installation directory shared by both websites:<appSettings> web.config

<add key="CMSWebFarmEnabled" value="true"/><add key="CMSWebFarmSynchronizeFiles" value="false" /><add key="CMSAllowLocalConfigKeys" value="true" />

<add key="/kenticoweb/web1:CMSWebFarmServerName" value="server1" /><add key="/kenticoweb/web2:CMSWebFarmServerName" value="server2" />

Log in to the Kentico administration interface on one of the sites.Open the application.Web farmsCreate a web farm server for each application.To prevent potential problems with conflicts during indexing, specify a different physical folder for each application'sSmart searchsearch index files through the following web.config keys:

<add key="/kenticoweb/web1:CMSSearchIndexPath"value="App_Data\CMSModules\SmartSearch\Web1\" /><add key="/kenticoweb/web2:CMSSearchIndexPath"value="App_Data\CMSModules\SmartSearch\Web2\" />

These keys enable web farms in general and disable synchronization of files, which is not needed since the applicationsalready use the same physical folder. Notice that each application has a different web farm server name specified via aprefix in the name of the key. This prefix must match the path that you set for theCMSWebFarmServerNamecorresponding application in IIS, including the virtual directory.

Page 21: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

3.

4.

Your websites should now work without any issues. 

Configuring nested websitesA nested website is a site that users can access through a URL sub-directory under the domain name of a different website. The followingsteps demonstrate how to create two Kentico sites that utilize nesting:

Install two Kentico web projects into separate folders.Choose folder names different than the virtual directory names you plan to use in the URL. This prevents collisions whensetting up the IIS. For example:

Inetpub/wwwroot/NestedWeb/Web1Inetpub/wwwroot/NestedWeb/Web2

Open your console (Internet Information Services (IIS) Manager Start -> Control Panel -> Administrative tools -> Internet).Information Services (IIS) Manager

Create two applications under your web site:

[IIS web site]/Kentico1 - set the to the folder of Physical path CMS Web1[IIS web site]/Kentico1/Kentico2 - set the to the folder of (the child website)Physical path CMS Web2

Edit the of the nested application ( ) and remove all module and handler definitions. This avoids duplicate moduleweb.config Web2and handler definitions of the two applications.

<system.webServer> <validation validateIntegratedModeConfiguration="false" /> <modules>

  // remove or comment out all keys in this section

</modules> <handlers>

// remove or comment out all keys in this section

</handlers></system.webServer>

The websites are now accessible via nested URLs. You can configure the websites independently without any issues. 

Additional configuration for Staging

This section describes how to set up on nested websites.Content staging

Staging uses sections in the that collide on nested websites. Config files are inherited within the IIS virtual directory structureweb.config(even when the projects are not nested on the file system), but you cannot have the same section of twice in the config file.web.config

If you from the site to the site, the inner project may have issues with the configuration.configure staging Kentico1 Kentico1/Kentico2

If you get the " " error message, some of the configuration is duplicated. User name tokenThe username token has already been addedauthentication is defined in the policy file, which is referenced from the section.<microsoft.web.services3>

Staging between the nested sites should now work correctly. 

Switching sites to off-line mode

You now have two completely independent instances of Kentico, each with its own web project and database.

You now have two independent applications in IIS, one nested under the other.

If you have any additional custom keys in these configuration sections, ensure that they are not duplicated in the two web. files, i.e. that they are only added in one of the two files.config

You need to from the of the .remove the whole <microsoft.web.services3> section web.config nested web project (Web2)Do not remove the section from the Web1 (outer) project, since both websites will use this configuration.

Page 22: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4.

5. 6.

Kentico allows you to bring off-line. This can be useful if you need to make major modifications to your site and wish to hide it while thesitesupdate is in progress. When in offline mode:

Visitors cannot access the live version of the websiteThe site still remains running and editors and administrators can normally work through the administration interface.

To enable off-line mode for websites:

Open the application.Sites

Edit ( ) the site.Open the tab.Off-line modeChoose how to handle users who attempt to access the site while it is off-line:

Display following message - add the message content using the WYSIWYG editor. The system sets the HTTP responsestatus code of the page to 503, so applications and crawlers who access the site should be able to correctly recognize thesituation.Redirect visitor to following URL - enter the address of an alternate website or page to which users will automatically beredirected until the site is returned back on-line.

Click .SaveClick .Take the site off-line

The site is now off-line. Visitors who access the site either see your off-line message or are redirected to the specified alternative page.

At any time, you can allow visitors to access the site again by clicking on the tab.Bring the site on-line Off-line mode 

Configuring settings for sitesYou can configure settings for sites in the application.Settings

Page 23: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

1. 2. 3. 4.

There are two basic types of settings:

Global - apply to all sites in the system, unless individual sites override the values.Site-specific - apply to the selected . The site settings load the global values unless you fSite uncheck Inherit from global settingsor individual settings and enter different values.

Searching for settings

There is a very large number of settings in Kentico . To find a particular setting among all the categories:

In the application, select the root of the settings tree ( ).Settings SettingsType the name of the setting or related words into the field at the top of the page.Click .Search

If you check , the search also finds settings that have the given text in their description (tooltip).Search in description

The page displays all settings that contain the search text in their name. You can edit the values of the settings directly.

Resetting settings

To reset settings to their default values:

Select a category in the application.SettingsChoose in the selector above the settings tree.(global) SiteClick .Reset these settings to default

NoteSome settings are only available as global settings.

Settings that alter page markup on the live site may not come into effect immediately. You may need to wait for the site's output to expire or clear the cache manually in the application.cache System

Page 24: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4. 5.

Click in the confirmation dialog.OKClick .Save

All settings in the given category now have the default value defined in the property of the corresponding keys.Default value

Exporting the setting values

You can export the values of all settings in the selected category to a text file. Click in the header of the setting page.Export these settingsExporting settings can be useful, for example when consulting issues with Kentico support.

Loading the values of settings in code

The Kentico API allows you to check the values of settings in your code. You can load values of both the default and settings.custom

Use the following methods of the class according to the data type of the required setting:SettingsKeyInfoProvider

GetBoolValueGetValue (for settings with string values)GetIntValueGetDoubleValue

The methods accept a string parameter that identifies the setting in the following format: <site code name>.<settings key code name>

For example:

using CMS.DataEngine;using CMS.SiteProvider;

...

string value = SettingsKeyInfoProvider.GetValue(SiteContext.CurrentSiteName +".CMSDefaultAliasPath");

Getting setting values in macro expressions

Macro expressions allow you to:

Dynamically insert the values of settings into most fields in the Kentico administration interfaceWork with settings in macro conditions or other expressions with advanced logic

You can load values of both the default and custom settings.

Use the following expression to get setting values inside macros: Settings.<settings key code name>

For example:

{% Settings.CMSStoreFilesInFileSystem %}

The macro returns the setting's value for the currently running site (or the global value for global-only settings). If you need to access theglobal value of a setting, you can use the following macro expression: GlobalObjects.SettingsKeys.<settings key code name>.KeyValue

 

Settings - Content

Page not found

Page not found for non-published pages If checked, pages that are not published return a Page not founderror (404) if they are viewed on the live site.

Note: When loading global-only settings, only enter the code name of the required settings key in the parameter.

Page 25: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Page not found URL Specifies a custom page that will be displayed to users whoencounter a error (404 HTTP status code). It canPage not foundeither be a physical aspx file in the web project or a dedicated pagecreated in the site's content tree.

In both cases, you need to enter the URL of the page, for example:

~/SpecialPages/PageNotFound.aspx

This value could be used to specify the URL of a physical page fileplaced in the given location, or select a page with an alias pathequal to ./SpecialPages/PageNotFound

The advantage of using a page for this purpose is that you canleverage all features of the portal engine. For instance, you cantranslate the page not found page on a multilingual website and thesystem will automatically display the appropriate culture versionaccording to the currently selected language.

Log page not found exception If enabled, the system logs Page not found (404) http errors in the E application. You can recognize the errors by thevent log

"PAGENOTFOUND" event code.

Multilingual

Default content culture Used to select which culture should be the default language optionof the website's content.

Combine with default culture Indicates if the default culture version of pages should be offered forpages that are not available in the currently selected language.

Combine files with default culture Indicates if the default culture version of files should be used foruntranslated file pages.

Web site content

Default alias path Alias path of the website's default page.

Metadata

Page key words prefix Specifies a prefix for all page keywords on the website.

Page description prefix Specifies a prefix for all page description on the website.

Page title format Specifies the page title format.

Example: {%prefix%} - {%pagetitle_orelse_name%}

Page title prefix Page title prefix used for all pages. Replaces the {% prefix %}macro in the page title format.

Control element Specifies the element that should be used instead of the standard<span> element. Currently, the only options are span or div.

 

 

Related pagesMultilingual websitesCreating custom error handling pages

 

Settings - Content managementOn this page, you can edit the following settings related to content management and workflows:

General

New page order Specifies the default order used when inserting new pages.Possible values are:

First - new pages are added to the first position on the givenlevel of the content tree.Last - pages are added to the end of the given content treelevel.Alphabetical - pages are inserted to the appropriatealphabetical position based on their name.

Page 26: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Prompt to save changes on exit If enabled, users are notified when leaving a modified page inediting mode with unsaved changes.

Allow global categories Indicates if the use of global categories, i.e. categories sharedacross all websites in the system, should be enabled for the websiteselected in the Site drop-down list (or for all websites that inherit thesetting if is selected in the drop-down list).(global)

On-site editing

Enable On-site editing Indicates whether the website's pages should be editable through aspecial interface directly on the live site. allowsOn-site editingauthorized users to make changes to page content, manage pagesand even configure the properties of web parts.

Enable On-site editing button When enabled along with , the button ison-site editing Edit pagedisplayed in the corner of pages on the live site for users who areauthorized as editors. Clicking the button opens the onsite editinginterface.

If you do not wish to use this button, users can alternatively accesson-site editing mode through links provided by the link or Edit page

web part, or by manually going to the following URL: Admin actionshttp://<domain>/<virtual directory>/cmsedit

Mobile development

Enable device profiles Enable this setting if you want to use  on the website.device profilesDevice profiles allow you to customize the layout and content ofpages for specific devices. The system automatically assigns adevice profile to each visitor according to the parameters of thedevice they use to view the page.

You can define device profiles in the application.Device profiles

Enable layout mapping If enabled, pages with shared page layouts automatically usereplacement layouts according to the set forlayout mappingsindividual device profiles.

To configure the layout mappings of a device profile, edit it in the D application and open the tab.evice profiles Layout mapping

Resize images according to device profile If enabled, the system automatically resizes images to match device. This reduces the maximum side size of images to theprofiles

larger of the dimensions set for the used device profile (Preview or ).width Preview height

Note: The resizing only works for images loaded through one of theKentico system pages (getattachment, getmetafile, getmedia, etc.).The feature cannot resize images that use web links or direct pathsin their source.

You can disable the resizing for individual images by adding the resi query string parameter to the image source URL.zemode=1

Content management UI

Check page permissions If enabled, only pages for which the current user has the perReadmission are displayed in the content tree (in the applicationPagesin the editing and listings modes and in various dialogs where thecontent tree is displayed).

In case that a user doesn't have the permissions for any pageReadat all, a message is displayed instead of the content tree, sayingthat they are not authorized to modify any page. If a user has the R

permission for a child page but not for its parent, the child pageeadis not displayed as well.

Max tree nodes The maximum number of pages that will be displayed under anunfolded page in the tree view. If the number of pages exceeds themaximum number, a link that takes you to the page list is displayedafter the allowed number of records.

Page 27: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Display linked icon

Display not translated icon

Display redirected icon

Display published icon

Display version not published icon

Display not published icon

Display archived icon

Display checked out icon

These settings indicate if special icons should be displayed in thecontent tree next to pages under the specified conditions.

Learn more about the icons in .Configuring page status icons

Workflow

Send workflow e-mails Indicates if the workflow e-mail notification should be sent.

Send workflow e-mails from E-mail address of the workflow e-mails sender. You can also usethe format.Someone<[email protected]>

Use automatic version numbering If you use workflow without content locking, automatic versionnumbering will be used by default.

Use check-in/check-out Indicates if content locking (check-in/check-out) should be used withpage types that use versioning. Content locking allows contenteditors to lock the page for editing so that the other editors cannotmodify the page at the same time.

Version history length Specifies maximum number of versions in the page history. If thenumber of versions exceeds the specified maximum number, theolder versions are destroyed.

Allow permanent preview links Indicates if page preview links remain usable even if page workflowcycle is restarted (when pages in workflowPublished/Archivedstep are switched to the step). If disabled, new preview linksEditare generated in this situation and the original ones are no longerusable.

 

Settings - MediaIn this dialog, you can make settings related to the Media libraries module. The following settings are available:

General

Use permanent URLs If true, URLs of medial library files will be generated in permanentformat (~/getmedia/<file guid>/<file name>.<file extension>.<files

), otherwise direct path to the file will befriendly URL extension>used (e.g.: ).~/MySite/Media/MyLibrary/MyImage.jpg

Max subfolders Maximal number of folders that can be displayed under anexpanded folder node in the tree view.

Security

Media file allowed extensions Extensions of files which can be uploaded to media libraries. Dividethe extensions by semicolons.

Check files permissions Indicates if the "See media library content" permission is checkedwhen retrieving media files using permanent URLs.

Storage

Media libraries folder Folder where files are stored. You can use:media library

physical disk path - e.g. c:\myfiles\mysitevirtual path - ~/UploadedFilesUNC path - \\server\folder

If no value is entered, the default location is: ~/<site codename>/media

Page 28: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Use site-specific subfolders for custom media libraries folder This setting is applied only when a isCustom media libraries folderconfigured. If enabled, media library files will be stored in asub-folder named as the site code name under the custom filesfolder, i.e. . It is<custom media libraries folder>/<site code name>useful for better orientation in files when multiple sites are running inthe system.

Media file hidden folder Name of the folder where thumbnails of media files will be stored.This folder is hidden in the file system by default and thumbnails aregenerated within it.

Media file thumbnail suffix Suffix added to thumbnail files. The thumbnail file names are in thefollowing format:

<file name>_<file extension><thumbnail suffix>.<thumbnailextension>

HTML5 support

Render HTML5 media tags If enabled, the system renders HTML5 and tags<audio> <video>for media content.

Media extensions to be rendered with HTML5 Specifies a list of media extensions to be rendered with HTML5media tags. Enter a list of extensions separated by semicolons, e.g.

..mp4;.ogg

 

Settings - BlogsThe settings category allows adjusting the following settings:Blogs

General

Send blog emails from Email address that will be used as the Sender ('From') address ofnotification emails.

Subscriptions

Blog unsubscription URL URL of a page on which the Blog post unsubscription web part isplaced – this is a special web part used for handling unsubscriptionsfrom receiving notifications about new blog posts.

Enable double opt-in for blog post comments Indicates if double opt-in should be enabled for blog postcomments. When enabled, users are required to confirm theirsubscription by clicking a link that is sent to them in an email.

Double opt-in approval page path Path to the page that contains the Blog post subscriptionconfirmation web part. The subscription confirmation link that will besent to users will point to this page.

Double opt-in interval (hours) Amount of time in hours, during which the users have to confirmtheir subscription request.

Send double opt-in confirmation Indicates if an email confirmation should be sent to users after theyapprove a subscription. If double opt-in is disabled, theseconfirmation emails are always sent.

Related pagesConfiguring blogs

 

  

Settings - Translation services

General

Enable translation services Enabling this setting allows users to create new language versionsof pages and localize text values via . Thetranslation servicesavailable translation options are determined by the other settings inthis category.

Allow attachment translation Determines whether the system submits file attachments fortranslation along with the main content of pages.

Page 29: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3.

Translation attachments file types May be used to limit which attachment file types can be submittedfor translation. Entered as a list of allowed file extensions separatedby semicolons, for example: txt;docx;pdf

If empty, all types of attached files are included in page translations.

Translate web part properties Determines if text values entered into the properties of web partsare also submitted for translation. This allows translation of contentadded onto pages via text web parts such as Static text.

Only properties that have the flag enabled in theTranslate fieldweb part definition are included. By default, this setting is disabledfor the majority of web part properties. You can configure this forspecific web parts in the application by editing theirWeb partsproperties on the tab.Properties

When the translation is imported, the system creates a resource for each property, containing the translated values in thestring

given languages. The original text values of the properties arereplaced by localization macros, which insert the appropriateresource strings.

Automatically import translated submissions If enabled, the system automatically inserts translated content intopages when the data is imported into submissions.

Warning: This overwrites pages immediately when a servicefinishes the translations, without the approval of administrators.

With this setting disabled, users need to manually processcompleted translation submissions in the application.Translations

Encoding to use Sets the character encoding type for the XLIFF pages used totransfer translation data in and out of the system. For example: utf-8

Enable REST translation service Enables or disables the translation REST service, which may beused to retrieve the data of pages and other types of objects inXLIFF format. It is also possible to import translated XLIFF data viaREST.

The translation REST service is not affected by the general RESTsettings, which can be configured in Settings -> Integration ->

.REST

Manual translation

Translation submission export folder Specifies the path of the folder in the file system where the servicecreates the zip packages with the translation source data (XLIFFfiles and instructions) when pages are submitted for manual

.translation

If empty, the folder is used.~/App_Data/Translations/Export/

Translations import folder Sets the path of the folder from which the system imports zippackages containing completed translations.

If empty, the folder is used.~/App_Data/Translations/Import/

Delete ZIP after successful download If enabled, the system deletes the zip packages containing finishedtranslations after importing the XLIFF data (the submissions can bemanaged in the application).Translations

Translation via e-mail

Translation submission recipients Specifies the addresses to which the system sends translationassignments when submissions are created for the e-mail service.You can enter multiple e-mail addresses, separated by semicolons.

To assign different translator addresses for specific languages:

Open the application.Translation servicesCreate a of the service for eachClone Translation via e-mailadditional language.Edit the services and enter the appropriate translatoraddresses into the properTranslation submission recipientsty. This property overrides the setting.E-mail sender

Page 30: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

E-mail sender When sending translation assignment e-mails, the systemautomatically sets the sender to the address of the user whosubmitted the translation. The value of this setting is used if no useraddress is available, for example in the case of translationssubmitted automatically or via the API.

Microsoft Translator

Client secret Enter the received when registering the application forClient secretthe Microsoft Translator on the .Azure DataMarket

Client ID Enter the that you specified when registering theClient IDapplication.

Google Translator  

API Key Enter a valid , used by the Google Translator service toAPI Keyidentify the application's translation project. You can obtain the keyfrom the .Google APIs console

Translations.com

Project Director URL The URL of your project that you received when setting up theservice at Translations.com.

Client user name Sets the user name under which the application accesses theTranslations.com service.

Client user password Enter the password matching the client user name.

Project short code A code string used to identify your translation project.

 

 

Related pagesConfiguring content for translation

 

Settings - URLs and SEO

URL format

Forbidden URL characters This setting allows you to list additional characters that should bereplaced or removed in URLs (page aliases and URL paths).

The following characters are forbidden by default:

\/:*?"<>|&%.'#[]+=„“ and the space character.

If necessary, the default set of forbidden characters can beoverridden through the web.config key.CMSForbiddenURLValues

Forbidden characters replacement Specifies the character that the system uses as a replacement forforbidden characters in URLs.

Allowed URL characters Determines which characters are usable in URLs by means of aregular expression. Any characters not specified are forbidden. Ifempty, only the characters specified by the Forbidden URL

setting are prohibited.characters

When allowing special characters in the regular expression, theymust be preceded by a backslash (\) as an escape character.

Example: Entering as the value only allowsa-zA-Z0-9\^alphanumeric characters and the caret symbol (^) to be used inURLs.

Note: this setting cannot be used to allow the default forbidden URLcharacters.

Page 31: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Friendly URL extension Specifies the extensions that the system adds to page URLs.

Extensions must be preceded by the period character.You can add multiple extensions separated by semicolons (;).The first extension is used as the default option whengenerating links and page URLs. Additional extensions aresupported in URLs when accessing pages.To allow extensionless URLs, enter a semicolon without anyextension.

Sample value: .aspx;.html;.htm;;

Files friendly URL extension Specifies the extension that the system adds to file URLs.

Example: getfile/<node alias>/myimage.aspx

If empty, the file URLs end with no extension: getfile/<nodeYou also need to add the alias>/myimage. runAllManagedModulesF

 attribute to the <modules> element inorAllRequeststhe <system.webServer> section of your  web.configproject's main   file.

Excluded URLs Specifies a list of URLs that are excluded from the URL rewritingengine. By excluding the URLs of physical pages stored inside theweb project directory, you can improve their page load performanceand also prepare scenarios with custom URL rewriting logic.

Warning: Do not exclude the URLs used by the regular pages inthe website's content tree.

To disable URL rewriting for pages, enter the matching URL paths:

Use URL paths without the website's domain name or virtualdirectory.The paths must always start with a forward slash (/), withoutthe virtual path designator (~).Entering a value excludes all URLs that start with the givenpath, including sub-directories and all possible extensions.You can enter multiple URLs separated by semicolons (;).

Sample values:

/Custom.aspx - excludes the page stored~/Custom.aspx directly under the website's root./Custom - excludes all pages whose URL path starts with /Cus

for example: , , tom, ~/Custom.aspx ~/Custom2.aspx ~/Custom/Page.htm/Custom;/Static - excludes all pages whose URL path startswith or ./Custom /Static

Page URLs

Default URL path prefix Defines a default URL path prefix that will be used for all URLs ofthe content pages. This prefix is rewritten to queryurlpathprefixstring parameter.

Use name path for URL path If checked, the name path of pages will automatically be copied intotheir URL path when they are saved.

Use permanent URLs If enabled, URLs of pages and page attachments will be generatedin permanent format. If disabled, friendly URLs will be used. Learnmore in .Linking pages and files

Remember original URLs when moving pages Determines if new page aliases should be created when a newpage URL path or extension is set.

Automatically update page alias If enabled, the alias of a page is automatically updated to match anychanges in the name of the given page in the default culture. Also,the page alias property will not be editable manually.

Search engine optimization (SEO)

Google sitemap URL Sets the URL where the website's Google (XML) sitemap can beaccessed. The entered value is added to the website's domain toform the final URL. The internal path to the page responsible forgenerating the sitemap can be specified through the Google

setting.sitemap path

Page 32: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Google sitemap path Specifies the path of the page used to generate the website'ssitemap. This page must contain the Google Sitemap (XML

web part. If left empty, a full sitemap of the website isSitemap)automatically generated by the ~/CMSPages/GoogleSiteMap.aspxsystem page.

This only sets the internal path of the sitemap. The actual URLwhere web crawlers can read the sitemap is determined by thevalue of the setting.Google sitemap URL

Robots.txt path Specifies the path of the page used to provide the website's robots.t file. This page should contain a web partxt Custom response

configured to generate the required content.robots.txt

Regardless of the selected page's location in the content tree, itsoutput is returned whenever the URL is<website domain>/robots.txtrequested.

Allow permanent (301) redirection If enabled, the system uses permanent (301) redirection instead ofstandard temporary (302) redirection. This is highly recommended,because it allows web crawlers to properly react to any changesmade on your website and pass page rank to the new or main URL.

Move ViewState to the end of the page If enabled, the system places the ViewState field at the end of theoutput code generated for pages. This helps search engine crawlersprocess more page content.

Use NOFOLLOW for user links If enabled, the system instructs search engine crawlers (robots) notto follow links posted by users on forums, message boards or inblog comments. This is achieved by including the attrirel="nofollow"bute in the output code of all such link tags.

This precaution can help prevent user-generated links fromdamaging the search ranking of your website.

Default replacement page The entered page path is loaded as the default value of the Replac field if users choose to specify an alternate page whileement page

deleting a page in the application.Pages

If necessary, users can override the default value and set a differentreplacement page path.

SEO - URLs

Use URLs with trailing slash Specifies how the rewriter handles trailing slashes in URLs.Possible options:

Leave the URL as isAlways use URLs with a trailing slashAlways use URLs without a trailing slash

Redirect page aliases to main URL Enabling this setting ensures that pages always have only one validURL and other aliases are redirected to this main URL (for SEOpurposes). The main URL of a page is determined either by its aliaspath, or custom URL path if one is specified.

Note: You can override this setting for individual page aliasesthrough their property.Alias redirection

Redirect invalid case URLs to their correct versions Determines how the system handles the letter case of characters inURLs. Available options:

Do not check the URL caseUse the exact URL of each pageRedirect all requests to lower case URLsRedirect all requests to upper case URLs

Redirect pages to main extension If enabled, the system ensures that all page URLs use the currentmain extension. The main extension is the first one specified in the

setting. Any URLs with a differentFriendly URL extension extension are automatically redirected to a corresponding URL withthe main extension.

Process domain prefix Determines how the rewriter handles the domain prefix in thewwwwebsite's URLs. You can leave the domain as it was entered orhave it rewritten to either always or never include the www prefix.

Note: That this setting does not apply for IP addresses and topleveldomains.

Page 33: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Default page Allows you to redirect (permanent 301) all possible URLs thataccess the home page of your website to one single URL. Using aunified home page URL is highly recommended, because itprevents the duplicate content problem on your website's mostimportant URL.

You can choose from the following options for the home page URL:

Not specified - supports all possible home page URLs anddoes not perform any redirection.Use domain root - always uses the base URL of the website'sdomain name.Use page defined by default alias path - always uses theURL of the paeg specified by the website's Content -> Default

setting.alias pathUse default page URL - always uses the URL: default <domain>/default.aspx

SEO - Cultures

Force domain culture If checked, the system generates the domain name in page URLsbased on the current content culture. Whenever a user switches toa different language on the website, the URL is redirected to thecorresponding domain name.

You can assign cultures to domains by editing your site in the Sitesapplication:

Set the culture of the website's main domain through the Visito property on the tab.r culture General

To define domain names for other languages, create Domain with an appropriately set .aliases Visitor culture

Note: You cannot use this option in combination with languageprefixes.

Use language prefix for URLs If enabled, the system generates page URLs with languageprefixes. A language prefix is a subdirectory inserted into the URL.The name of the prefix matches the culture code (or culture alias) ofthe content culture selected on the website.

Example: <domain>/en-US/Home.aspx

Allow URLs without language prefixes If enabled, URLs without language prefixes are allowed. Otherwisethe system redirects such URLs to a corresponding URL thatincludes a language prefix.

Only applies if is enabled.Use language prefix for URLs

 

 

Related pagesSearch engine optimizationConfiguring page URLsConfiguring URLs for multilingual websitesManaging robots.txt

 

Settings - Security & Membership

General

Administrator's email Specifies the administrator's e-mail address. It is used in placeswhere the administrator's e-mail address cannot be specified in theadministration interface or in web part properties (e.g., user accountconfirmation page).

Page 34: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Send membership reminder (days) Determines when the system should send email notifications about that will soon expire. The value sets how many daysMemberships

before the expiration date reminders should be mailed out.

These e-mails are only sent for memberships that were assignedwith the flag enabled and for those that wereSend notificationpurchased as a product with a limited duration.

Memberships are checked periodically using the Membership scheduled task. The content of the notifications is basedreminder

on the email template.Membership - Expiration notification

Deny login interval Interval in minutes during which kicked users cannot log back in tothe site.

Share user accounts on all sites If enabled, user accounts created on one site will be shared amongall the sites running on the installation. If disabled, new accounts willbe assigned only to the current site and not the others.

Use site prefix for user names If enabled, user names only need to be unique for each site, notglobally. It is possible to create users with names that are alreadytaken on another site in the system.

When a user registers on the live site or is edited/created on aspecific site (i.e. in the application), the system internallyUsersadds the unique identifier (GUID) of the given site as a prefix to thatuser's name.

Do enable this setting if you wish to have accounts sharednotacross multiple sites.

Warning: Use this setting only if you have your system's user/siteorganization planned according to the functionality described above.Reverting back to the default state where user names are globallyunique would require a significant amount of effort and direct editingof your user database.

Registrations

Reserved user names Sets a list of users names that cannot be selected duringregistration. Entered user names must be divided by semicolons.

Registration requires e-mail confirmation Indicates if user registration should require (dconfirmation via emailouble opt-in).

Registration confirmation page path Path to the page that contains the Registration e-mail confirmationweb part. The registration confirmation link that will be sent to userswill point to this page.

Registration requires administrator's approval Indicates if an is needed for a user to getadministrator's approvalregistered.

Delete non-activated user after (days) When users register but do not activate their account, their accountwill be deleted after the entered number of days.

Require unique user e-mails If checked, users cannot enter an e-mail address during registrationif the address is already used by another user's account.

On-line users

Monitor on-line users Enables monitoring of who are currently browsing theon-line userswebsite.

Store on-line users in database If checked, records about on-line users will be stored in thedatabase. This is necessary when running the system on a webfarm.

Storing the data in the database also allows the system to providemore detailed information about anonymous users (guests) whenusing .Contact management

Update on-line users (minutes) Interval in minutes after which information about on-line users willbe updated. When running the system on a web farm, you need toenter the same value which is set for the Sessions remove

(you can read the value in the expired sessions scheduled task Scapplication editheduled tasks -> Sessions remove expired

X ).sessions -> Task interval -> Every: minutes

Content

Page 35: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Check page permissions Indicates if the website should check the user permission settings ofpages and apply them. You can configure the permissions of pagesin the application on the tab.Pages Properties -> Security

The following values are possible:

All pages - permissions will be checked for all pages on thewebsite.No page - permissions will not be checked for any pages.Secured areas - permissions will be checked only for pagesthat are configured to require authentication.

Website logon page URL Specifies the URL of the page where users can sign in on thewebsite in order to access its secured areas.

Note: This page is different from the one used to log into theadministration interface.

Access denied page URL URL of the page that should be displayed when a user is notallowed to read a page.

Administration

Use SSL for administration interface Indicates if the pages of the administration interface shouldautomatically use URLs that are secured by the SSL protocol (i.e.with the URL scheme).https

Automatically sign-in user when site changes If enabled, users will not need to enter their username andpassword when they switch between edited sites in theadministration interface (using the drop-down list).Site

Enable code editing for site administrators Indicates whether users with the Administrator areprivilege levelautomatically allowed to edit code on the website. If disabled,administrators can still edit code if they have the appropriatepermissions assigned: for the module or Edit Code Design Edit

for the module.SQL Queries Reporting

The restriction applies to ASCX code of page layouts andtransformations (modifying the HTML version of the code is allowedregardless of the setting), and SQL queries, e.g. for objects in theReporting module.

See .Special security permissions

UI personalization

Enable UI personalization Indicates if should be enabled. If this is the case,UI personalizationusers only see those parts of the UI that are allowed for the UIprofile assigned to their roles. If disabled, the entire UI is visible forall users.

Reporting

Default report connection string Sets the database connection string that the system assigns tonewly created . Existing reports also inherit the connectionreportsstring value from this setting by default.

Only users who have the permission for the Set connection string module can change the connection strings of individualReporting

reports.

The system loads the list of connection strings from the <connection section of the application's web.config file. The opStrings> (default)

tion represents the added by theCMSConnectionStringapplication's initial database installer.

You can use reporting connection strings for the followingscenarios:

Retrieving data from a Separated on-line marketing databaseRestricting the database-level permissions of reporting queriesvia a connection string with a limited database user

 

 

Page 36: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Related pagesSecurity model overview

 

Settings - Passwords

Passwords

Send password e-mails from Sets the e-mail address from which password recovery e-mails willbe sent.

Password format Selects the format used to store the passwords of users. They mayeither be saved in plain text or as the result of a security hashfunction. The recommended option that provides the best security is

.SHA2 with salt

If you change the password format, please keep in mind that thisonly affects how future passwords are stored and existingpasswords will remain unchanged. It is necessary to set allpasswords again so that they are stored in the new format. For thisreason, it is recommended to set the appropriate format directlyafter the installation, before you create user accounts or allow usersto start registering.

Note: An empty string in the field of the UserPassword CMS_Userdatabase table is considered to be a blank password for both plaintext and hashed password formats. If you forget the globaladministrator password, you can manually insert an empty value toreset it.

Password reset

Reset password requires email approval If checked, users who submit a password recovery request througha logon form will not receive their password directly, but will insteadbe sent an email containing a link to a page where they canmanually set a new password.

If disabled, the system will send an email to the given usercontaining their current password if passwords are stored in plaintext, or a newly generated password if hashing is used.

Reset password page URL Sets the URL of the page where users can change their passwordafter they submit a password recovery request. The Reset

web part must be placed on the specified page to ensurepasswordthat users can set a new password.

The value of this setting is used by the administration interfacelogon page and inherited by individual web parts ifLogon formtheir own property is not set.Reset password page

If empty, the ~/CMSModules/Membership/CMSPages/ResetPass default page is used.word.aspx

Reset password interval Sets the length (in hours) of the time interval during which users willbe allowed to change their password after submitting a passwordrecovery request (if the Reset password requires email approvalsetting is enabled). After the specified amount of hours, the link inthe password recovery email will expire and become invalid.

Send email with reset password If enabled, users will receive another email containing their newpassword once they successfully reset it.

Password expiration

Enable password expiration Indicates, if user's passwords should be valid only for the number ofdays specified in the following setting.

If disabled, users' passwords never expire.

Password expiration period (days) Specifies the number of days after which the users passwordsbecome invalid.

Page 37: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Password expiration behavior Specifies the behavior of the system after a user's passwordbecomes invalid. See for more information.Password expiration

 

Password expiration warning period (days) Specifies the number of days for which should be a warningmessage displayed before the user's password expires.

Send password expiration e-mail Indicates, if the system sends the users e-mails when theirpasswords expire.

Password policy

Use password policy Indicates if a should be used to validate thesecurity policypasswords entered by users for their accounts. The details of thepolicy can be specified through the settings below. Passwords thatdo not meet the required conditions will be rejected.

Enabling this setting does not change the passwords of existingusers, it only adds requirements that must be fulfilled by newpasswords.

Force password policy on logon Indicates, if the system checks whether the users' passwords meetthe configured password policy whenever the users try to log on.When the passwords do not meet the requirements, the users areforced to change the password.

If disabled, the policy is applied only to the passwords of newlyregistered users.

Minimal length Sets the minimum number of total characters required for userpasswords.

Number of non alphanumeric characters Sets the minimum number of non alphanumeric characters (i.e. anycharacter except for numbers and letters) that must be present in apassword in order for it to be accepted.

Regular expression Can be used to enter a regular expression that will be used tovalidate user passwords. This regular expression is applied incombination with the other policy settings.

For example: ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$

This sample expression would require passwords to contain at leastone lower case letter, upper case letter and number. The minimumamount of characters would be determined by the remaining policysettings.

Policy violation message Specifies a custom text message that will be displayed to users whoattempt to enter a password  which does not fulfill the requirementsof the password policy. If left empty, a default message will beshown, informing about the minimum password length and numberof non alphanumeric characters.

If you specify a regular expression for passwords, it isrecommended to describe its requirements in this message.

If your site has multiple cultures (languages) assigned to it, you canenter a different message for each language via the actionLocalize.

 

 

Related pagesSecurity model overviewSecuring user accounts and passwordsPassword strength policy and its enforcement

 

Settings - Protection

General

Page 38: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Display account lock information message Indicates if user friendly information about account lock should bedisplayed.

Enable Autocomplete If true for user name text box in login form is enabled.Autocomplete

Bad words

Check bad words Determines if check should be performed.bad word

Bad word replacement Default replacement text which will be used during bad word check.

Bad word action Default action which will be performed during bad words check.

Banned IPs

Enable banned IPs Enables or disables features.banned IPs

Redirect banned IPs to URL If the IP address is banned the user is redirected to this page.

Flood protection

Enable flood protection Enables or disables , which prevents spam onflood protectionforums and other community services.

Flood protection interval Value in seconds which represent the minimal interval betweenuser's actions.

CAPTCHA settings

Control to use Determines the default CAPTCHA control that should be used for C throughout the system – in web parts and forAPTCHA verification

the form control. The following four types of controlsSecurity codeare available:

Logic CAPTCHA - requires answering a logical question.Simple CAPTCHA - requires re-typing of a string displayed inan image.Text CAPTCHA - requires re-typing of a string into multiplefields.reCAPTCHA - requires re-typing of two words from which oneis checked for correctness.

The behavior of these form controls throughout the system can bechanged by modifying the settings of the individual controls.

reCAPTCHA private API key Private key for the domain you want to use reCAPTCHA on. Youcan obtain the necessary API keys at http://www.google.com/recapt

.cha

reCAPTCHA public API key Public key for the domain you want to use reCAPTCHA on. You canobtain the necessary API keys at .http://www.google.com/recaptcha

Invalid logon attempts

Maximum invalid logon attempts Maximum invalid logon attempts before user account is locked. Ifset to 0, functionality is disabled.invalid logon attempts

Send unlock account e-mail Indicates if account unlock e-mail is sent when a user account islocked due to reaching maximum invalid logon attempts.

Unlock user account path Path to custom page for unlocking user account (if not set, systempage~/CMSModules/Membership/CMSPages/UnlockUserAccount.aspxwill be used).

Screen lock

Enable screen lock Enables or disables feature, which locks the part of thescreen lockbrowser with the Kentico administration interface.

Lock interval (minutes) Time (in minutes) that has to pass before the screen is locked. Thisvalue has to be greater than 0 and lower than session timeout.

Warning interval (seconds) Warning period (in seconds). Warning with countdown is shown forthis number of seconds before the screen is locked.

 

Settings - Authentication

Page 39: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

On this tab, you can adjust settings related to the .Multi-factor authentication

Multi-factor authentication

Enable multi-factor authentication Indicates, if is enabled. Users canmulti-factor authenticationchoose to enable multi-factor authentication when they register toyour website.

Display initialization token Displays an initialization token when a user tries to sign in toKentico with multi-factor authentication for the first time. The usertypes the token into the Kentico Passcode generator mobileapplication.

Disable if you want to use customized multi-factor authentication(without the mobile application).

Multi-factor authentication is required globally Indicates if all users in the system including newly created users arerequired to use multi-factor authentication.

 

Settings - OpenIDOn this tab, you can adjust settings related to .OpenID authentication

General

Enable OpenID Indicates if is enabled.OpenID authentication

Assign new users to roles New users registered via OpenID will be assigned to these roles.

Required user data page URL of the page where the web part resides.OpenID required dataIf entered, then when a new OpenID user logs in to the site, theiruser account is not created automatically, but they are redirected tothis page and required to enter some additional data (or merge withan existing account) using the web part.

 

Settings - Windows LiveIDOn this page, you can set up support for .Windows Live ID authentication

General

Enable Windows Live ID authentication Indicates if users should be allowed to log in to the website usingtheir credentials.Windows Live ID

Application ID Identifier of your website. Enter the that you receivedClient IDwhen registering your website as a Live ID application.

Application secret Secret code that will be used to encrypt messages transferredbetween your website and the Live ID server. Enter the Client

that you received when registering your website.secret

Assign new users to roles New users registered via Live ID authentication will be assigned tothe roles specified here.

Required user data page URL of a page containing the web part. IfRequired LiveID user dataentered, new Live ID users who log into the site will not have theiruser account created immediately, but will first be redirected to thespecified page where they will be required to enter some additionaldata (or merge with an existing account) using the web part.

Related pagesConfiguring Windows Live ID authentication

 

Settings - Claims-based authenticationOn this tab, you can adjust settings related to .Claims-based authentication

The multi-factor authentication settings have global effect. They cannot be configured for individual sites.

Note: You may need to to use certain identity providers.set up SSL for your site

Page 40: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

General

Enable WIF authentication Enables claims-based authentication.

Users need to log in through the identity provider specified by thesettings below (for example or Active Directory Federation Services

). Disables the standard authenticationAccess Control Servicemechanisms in Kentico.

Identity provider URL Specify the URL of your identity provider's WS-Federation passive.endpoint

You can find the value in the provider's configuration interface orWS-Federation metadata.

Examples:

https://adfs.net/adfs/ls  https://accesscontrolnamespace.accesscontrol.windows.net/v2/wsfederation

Security realm Enter a URI that identifies your website or application. You can useyour website's (and virtual directory if applicable) indomain namemost cases.

The value must be exactly the same as in the configurelying partyration of your identity provider, including letter case, any trailingslashes and the protocol (http or https).

Allowed audience URIs URIs of allowed audience for the identity provider, separated bysemicolons. The value must match the corresponding relying partysettings of your identity provider, including letter case, any trailingslashes and the protocol (http or https).

To allow the authentication for all restricted sections of your websiteand the Kentico administration interface, use the base domainname of the website.

Trusted certificate thumbprint Enter the thumbprint of the certificate used to secure thecommunication between Kentico and the identity provider.

You can typically find the certificate thumbprint in the provider'sKey/Certificate configuration.

Certificate validator_________________________

Sets the validation mode used for the specified inX.509 certificatethe setting.Trusted certificate thumbprint

Chain trust - accepts certificates whose chain of trust leads toa trusted certification authority. The certificate must be installedon the server hosting Kentico in the Local Computer -> Trusted

certificate store.PeoplePeer trust - accepts self-issued certificates. The certificatemust be installed on the server hosting Kentico in the Local

certificate store.Computer -> Personal Peer or chain trust - accepts self-issued certificates, orcertificates with a chain that leads to a trusted certificationauthority.None - no validation of the certificate is done and the systemaccepts any certificate with the given thumbprint.

See .Working with Certificates

 

Settings - FacebookThis section contains settings related to Facebook features integrated into Kentico, which includes and displaying ofFacebook authenticationFacebook content via web parts.

We recommend that you separately. Configuring these settings on a global level could causeconfigure these settings for individual sitesproblems if you have multiple sites and each of the sites has a different associated Facebook page and Facebook App.

Facebook app

If you want to from Kentico, you do not need to configure these settings. Instead, follow the procedure in post to Facebook Connect and .ing Kentico to social media Adding social media accounts

Page 41: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

App ID A numeric ID of your Facebook App. You can find your App ID onthe Facebook App editing page.

App secret The key used to authenticate Kentico against the Facebook App.You can find your App secret on the Facebook App editing page.

Login with Facebook

Enable login with Facebook Enable if you want your website users to log in with their Facebookaccount. See for more information.Facebook authentication

Assign Facebook members to roles When a new user logs in using Facebook, the system assigns theuser to the roles entered here.

Update users Allows you to load information from the user's Facebook profile andstore it with the user's record in Kentico. This feature only workswhen users log in using their Facebook accounts.

Never – disables this feature. User information that has beenalready downloaded stays in the system.When they log in for the first time – downloads the userinformation only once, when they log in for the first time.Every time they log in – updates the user information everytime they log in.

User profile mapping Determines how Kentico user fields match with Facebook profilefields.

 

Settings - LinkedInOn this tab, you can adjust settings related to . This feature enables live site users to register and log on to yourLinkedIn authenticationwebsite using their LinkedIn logon credentials.

General

API key Key obtained during the .registration of your application at LinkedIn

Application secret Key obtained during registration of your application at LinkedIn.

Access token Click the button to obtain a site-wide access token required toGetexecute LinkedIn API calls that require authorization. The aAPI keynd fields must be filled in. After the tokenApplication secretexpires, it is renewed automatically.

Authentication

Enable LinkedIn authentication Indicates if is enabled.LinkedIn authentication

Assign new users to roles New users registered via LinkedIn authentication will be assigned tothese roles.

Required user data page URL of the page where the web partLinkedIn required dataresides. If entered and a new LinkedIn user logs in to the site for thefirst time, their user account is not created automatically, but theyare redirected to this page and required to enter some additionaldata (or merge with an existing account) using the web part.

To obtain these keys, create an account at and create a new application at https://www.linkedin.com/ https://www.linkedin.com/secure/develo.per

 

Settings - System

General

Default user ID Specifies the user that serves as the system's default globaladministrator. For example when indexing content for page crawler

that are not configured to work under asmart search indexesspecific user account.

Enter the user ID of the given user.

If empty, the system uses the default user account.administrator

Page 42: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

DB object schema Sets the database schema that is used for newly created databasetables (e.g. for custom page types). The only values that makesense are either or the current database user. If not specified,dbothe current database user is the owner of the tables.

Object code name prefix A default prefix added to all object code names in the system. Theprefix is added upon object creation.

Event log

Event log size The number of events stored in the .Event log

When exceeded by 10% (or a different percentage set by means ofthe web.config key), the percentage of theCMSLogKeepPercentoldest events is deleted from the log in a batch.

Set if you do not want the system to log any events.0

Log metadata changes Indicates if changes of object and page metadata (i.e. when anobject or page is created, edited or deleted) are logged in the Eventlog.

Log to database Indicates if events are logged to the database. Doesn't overwrite Ev set to 0.ent log size

Log to filesystem If enabled, the system writes the event log into the CMS\App_Data\ file on the server's file system. Doesn't override logEvents.log Eve

set to 0.nt log size

Log to trace Indicates if events are logged to trace. Doesn't overwrite Event log set to 0.size

Use EventLog trace listener Indicates if the system logs events in your Windows Event Viewer.

Use the feature of the Kentico installer, if you haven't turnedModifyon the optionRegistration of Kentico in Windows Event Logwhen installing Kentico.

E-mails

No-reply e-mail address Various types of automated e-mails will be sent from the e-mailaddress that is specified here.

Error notification e-mail address E-mail notifications about errors logged in the event log will be sentto the specified addresses. It is possible to enter multiple addressesseparated by semicolons.

Send e-mail notifications from E-mail address used as the sender for .e-mail notifications

Scheduler

Application scheduler interval Determines how often the application checks if there are any tasksready to be executed (in seconds).

By default, the scheduler is configured to check tasks only on pagerequests. You can set the minimum time between the checks to anyinterval. If it is configured to check automatically, you can set aninterval of 1 to 30 seconds.

Setting stops the scheduling of tasks.0

Use external service Indicates if that have the optscheduled tasks Use external serviceion enabled are processed by the Kentico Scheduler Windowsservice.

Note: for this to work, the service must be installed and running. Ifenabled and the service is not running, these tasks are notprocessed at all. If disabled, all scheduled tasks are processed bythe application itself. You can install the service using Kentico

.Service Manager

Service scheduler interval Determines how often the external Windows service checks if thereare any tasks ready to be executed (in seconds).

You can set an interval of to seconds.1 30

Setting stops the scheduling of tasks.0

Scheduled tasks enabled Scheduled tasks will only be executed if this setting is enabled.

Page 43: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Time zones

Enable time zones Indicates if support is enabled.time zone

Server time zone Specifies the time zone of the physical location of the server.

Site time zone Specifies the time zone for the selected site.

User interface

Hide unavailable user interface Indicates if the user interface is hidden for features unavailable dueto license restrictions.

Max UI tree nodes Maximum number of nodes displayed under one parent node in theadministration UI trees. Any additional tree nodes will be accessiblevia the option, which automatically selectsclick here for more...appropriate parent category.

Remember listing, filter and state If enabled, listing pages in the user interface remember thepreferences set by individual users, including:

filtering optionssorting orderthe number of the selected pagepage size

Kentico improvement program

Send anonymous usage records to Kentico By default, the application periodically sends data about thesystem's usage to Kentico. The data helps Kentico analyze whichparts of the system need improvement and allows us to better focusour development efforts.

All of the data is strictly anonymous and for internal use only.Please see .How Kentico protects your privacy

You can disable the setting to opt out of the Kentico improvementprogram and stop the sending of data.

 

Settings - Performance

General

Enable output compression_______________________________

Enables compression for the HTML output code of all pagesrendered by Kentico.

Output compression requires compliance from client browsers.Browsers that do not support compression always downloaduncompressed page output.

Applies globally for all sites in the system.

Server content caching

Cache page info (minutes) Sets the number of minutes for which the system caches pageinformation (basic page properties and metadata). Kentico retrievespage information many times during the processing of a singlepage, so always set this value to .at least 10 minutes

When a page is modified, the system automatically clears thecorresponding part of the page info cache. This type of cachingcannot cause the website to display outdated information.

Page 44: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Cache content (minutes) Sets the number of minutes for which web parts/controls with datasources cache their content (typically retrieved from the Kenticodatabase).

You can override this value for specific web part instances bysetting their property. Using 0 as the value disablesCache minutescontent caching for the given web part instance.

It is recommended to cache all possible content. You can use cach to clear the cache on content changes. For moste dependencies

non-custom data sources, the default dependencies automaticallyensure that web parts reload the cached content whenever the datais modified.

See also: Caching the data of page components

Use progressive caching If checked, the system optimizes access to uncached data so thatconcurrent threads only use a single data access operation andshare the results. This leads to better performance if the website isunder a heavy load, without the drawback of not having the latestdata available.

Server file caching

Cache files (minutes) Sets the number of minutes for which the system caches imagesand other files on the server. Includes images, and web resourcessuch as CSS stylesheets and JavaScript files.

The system always caches files for to protectat least one minuteagainst brute force attacks. Kentico automatically removes filesfrom the cache if they are modified, so file caching cannot cause thewebsite to display outdated content.

This setting also specifies the caching interval for Azure CDN,unless overwritten by the web.config CMSAzureCDNCacheMinuteskey (see for details).Reference - Web.config application keys

See also: Caching files and resources

Maximum file size to cache Specifies the maximum file size in kilobytes that is allowed to becached. Setting a limit stops the file cache from using an excessiveamount of memory.

Redirect files to disk If enabled, the system redirects file requests for apage attachmentsnd to the corresponding physical file (if thecontent tree filesrequested file is stored in the file system).

Warning: The system stores files on the file system with GUIDidentifiers instead of names (to avoid conflicts). If you enable the Re

setting, files downloaded by users have names indirect files to diskthe GUID identifier format instead of the original file name.

Client-side file caching

Page 45: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Client cache (minutes) Sets the number of minutes for which clients consider cached filesto be valid and up-to-date (i.e. the length of the client cacheexpiration time). Specifically, the setting determines how the serversets the response header for file requests. Client fileExpirescaching includes images and web resources such as CSSstylesheets.

The following values are possible:

0 - cached files are always flagged as expired, so clientsrevalidate files on each request. Does NOT disable clientcaching for files.More than 0 - until a cached file expires, clients load the file'sdata from the cache without sending any requests to theserver. Provides the best file performance, but may causebrowsers to display outdated content (if cached files aremodified before the expiration interval ends).

This setting only applies to dynamic files that are managed by theKentico application, such as stylesheets in the appCSS stylesheetslication. Files stored on the file system may use a different clientcache expiration time. For example, physical files served by theKentico application through the handler use the GetResource.ashx

web.config key (the defaultCMSPhysicalFilesCacheMinutesvalue is one week) and directly requested files use the IIS clientcache configuration.

See also: Caching files and resources

Allow client cache revalidation If enabled, the server adds the directive to the must-revalidate Cac response header of file requests. Ensures that cachinghe-control

clients always perform revalidation when requesting expired files(most clients revalidate by default even without the must-revalidatedirective).

Output caching

Enable output caching If enabled, the system allows output caching. Output cache storesthe full HTML source of pages. If disabled, output caching is off onthe whole website.

To enable output caching for pages, configure the prOutput cacheoperties of individual pages in the application on the Pages Propert

tab. Both the main website setting and page settingsies -> Generalmust be enabled to use output caching.

See also: Caching page output

Cache output in file system (minutes) Specifies the number of minutes for which the system stores outputcache in the file system. This provides persistent cache storage incase of application restarts.

If not set, only the standard caching mechanism (in memory) isused. If you enter a value, the system loads the output data ofrequested pages from the file system cache when it is not found inthe memory cache.

To enable output caching in the file system for pages, configure the property of individual pages in the Allow file system cache Pages

application on the tab.Properties -> General

Warning: Enabling the file system output cache may cause yourwebsite to serve outdated content. When clearing invalid outputcache due to changes made to pages or other dependencies, thesystem only removes cache files if the corresponding cache itemalso exists in the memory. The file system cache remains outdatedif the memory cache is not available when the invalidation occurs(for example after an application restart or if you have differentexpiration times set for the two caching types).

Page 46: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Output cache variables Determines under which conditions the system stores multipleversions of the output cache for pages. Click to change theEditdefault settings.

For example, the variable ensures that the systemusernamestores a separate version of each page's output cache for everylogged in user. If disabled, the output cache does not distinguishbetween users — if a page's output is cached for one user, thesystem may load the same content for all other users (depending onthe remaining output cache variables).

You can enable or disable separate output cache for:

username - every logged in user (public users share the sameoutput cache).sitename - every site in the system (leave checked unless yoursites all have identical content on pages with the same path).lang - each of pages.language versionbrowser - different types of web browsers.cookielevel - the preferences of visitors.cookie leveldeviceprofile - the detected for visitors.device profilesdomain - the website domain name (check to disable outputcache sharing between different of sites).domain aliasesviewmode - the page view modes used by Kentico, such as de

, , or . Currently, the system only usessign edit preview live sitecaching for the view mode.live site

The output cache creates separate cache items based onalwaysthe:

Page path (including the virtual directory and extension)Protocol in the request URL

Enable partial caching If enabled, the system allows partial caching of web parts. Thepartial cache stores the HTML output of individual web partinstances. If not checked, partial caching is disabled on the wholewebsite for all web parts.

By default, web parts do not use partial caching. You need toenable partial caching for individual web part instances using the Pa

property.rtial cache minutes

See also: Caching portions of the page output

Partial cache variables_______________________________

Determines under which conditions the system stores multipleversions of the partial cache for web parts. Applies globally to thepartial cache of all web parts.

Click to change the default settings.Edit

For example, the variable ensures that each web part instancelanghas a separate version of the partial cache for every language. Ifdisabled, the partial cache does not distinguish between languages— if a web part's output is cached for one language, the systemloads the same content for all languages (depending on theremaining partial cache variables).

You can enable or disable separate partial cache for:

username - every logged in user (public users always sharethe same partial cache).sitename - every site in the system (leave checked unless yoursites have identical content).lang - each of pages.language versionbrowser - different types of web browsers.viewmode - the page view modes used by Kentico, such asdesign, edit, preview or live site. Currently, the system onlyuses caching for the live site view mode.

Resources (global settings only)

Page 47: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Allow resource compression If enabled, the system compresses JavaScript and CSS stylesheetweb resources before sending them to the client browser. Thisreduces the amount of data that must be loaded. Uncompressedversions remain available for browsers that cannot processcompressed data.

Minification of the given resource type must be enabled (via the All settings) in order for compressionow JavaScript/CSS minification

to be applied.

Allow JavaScript minification Indicates if JavaScript resources should be minified before they areserved to the client browser. Minified code has a reduced size,which saves bandwidth and decreases response times, but may notbe suitable for debugging.

Allow CSS minification Indicates if CSS stylesheet resources should be minified beforethey are served to the client browser.

CSS Styles (global settings only)

Resolve macros in CSS If checked, can be used in CSS stylesheets tomacro expressions dynamically insert the content of other stylesheets.

To insert this type of macro, add an expression into the code of astylesheet according to the following format: {%CSS["<stylesheetname>"]%}

Warning: If you wish to disable this setting, you first need toremove all occurrences of macros from your stylesheets.Unresolved macro expressions are not valid CSS code, sobrowsers cannot process stylesheets containing macros.

Allow CSS from components If enabled, CSS styles defined for individual page components (e.g.web parts, page templates etc.) are automatically requested by thepage where they are placed. Otherwise, you either need to have allstyles defined in the website's stylesheet, or link the styles of therequired components into the stylesheets via CSS macros.

Combine CSS from components_______________________________

If enabled, pages load the CSS styles of all contained componentsvia a single request. Otherwise different types of components eachgenerate a separate request. The styles of multiple components ofthe same type (e.g. several web parts) are always retrieved by asingle request.

Combining the CSS requests into one may improve the load time ofindividual pages and is recommended in most cases.

 

 

Related pagesOptimizing website performanceConfiguring cachingUsing code minification and compressionDesigning websites using CSS

 

Settings - Emails

General

Email encoding Sets the character encoding used for emails sent by the system. Bydefault, UTF-8 is used. It is recommended to leave the defaultencoding unless you encounter issues with extended characters inyour emails.

Email format Format used for email messages. You can choose between HTMLand . If is selected and an email template has bothPlain text Bothformats defined, HTML will be used for the email text and plain textwill be included as an attachment.

Email processing

Page 48: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Enable emails If checked, will be enabled. You can temporarilyemail sendingdisable sending of emails by clearing this check-box, e.g. whenperforming administration tasks.

Enable email queue If enabled, the system uses an when .email queue sending emailsThis allows advanced email processing and resending of mails thatare lost due to errors. If disabled, emails are sent directly to theSMTP server.

Using the email queue is highly recommended when sending outlarge amounts of emails over a short amount of time (emailcampaigns or other types of mass emails).

Batch size Sets the maximum number of emails that the system loads from theemail queue in one batch when sending emails to SMTP servers.The emails are then distributed one-by-one to the available servers.If the specified value is smaller than the total amount of emails to besent from the queue, the system loads a new batch and continuesthe process.

The value of the batch size affects the number and frequency of dat. Set an appropriate value if you wish to optimize theabase queries

email sending for your environment. If you set a very large batchsize, the system needs to process a large volume of data at onetime, which may consume a lot of memory. Using a smaller batchsize increases the number and frequency of queries and mayreduce the database performance.

This setting affects all sites in the system, so it is only available ifthe option is selected from the dropdown list.(global) Site

Archive emails (days) Sent emails will be stored by the email queue for the number ofdays specified here. Such emails may be viewed in the Email

application on the tab.queue Sent emails

If set to , emails will not be archived.0

Default SMTP server

SMTP server The specified here will be used as the default optionSMTP serverwhen sending emails. Depending on the value selected in the Sitedropdown list, the server will either be dedicated to a single website,or will be designated as a global server (i.e. it will accept emailsfrom all sites in the system and also handle mails that are notrelated to any specific website).

This field must contain the domain name or IP address of theserver. If the connection to the server should use a different portthan , please include it in the name. Enter if you wish to25 localhostuse the server provided by your local machine.

You can define additional servers that will be used if this one isbusy in the application.SMTP servers

SMTP server user If the server requires authentication, you can enter the user namehere.

SMTP server password If the server requires authentication, you can enter the passwordhere.

Note: After you enter and save a password, the field alwaysdisplays 8 "masking" characters, even if the password is longer orshorter. This measure helps protect your password.

Use SSL Indicates if the SMTP connection to the server should be securedby SSL. The server must be configured to use SSL in order for thisto work.

 

Settings - Files

Storage

Page 49: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Store files in Select where you want the system to (attachments,store filesattachment history, CMS.File pages).

DatabaseFile systemDatabase and file system

Generate thumbnails Indicates if the Kentico should generate image thumbnails on thedisk when a of the image is displayed. This optionresized versiononly applies if files are stored in the file system. It improves site

.performance

Files folder The folder on the disk where page attachments and metafiles arestored. You can use:

physical disk path: e.g. c:\myfiles\virtual path: ~/UploadedFilesUNC path: \\server\folder

If you do not specify any value, the files are stored in folder ~/<site.code name>/files

Use site-specific subfolders for custom files folder This setting is only applied when a isCustom form files folderconfigured. If enabled, attachment files will be stored in a sub-foldernamed according to the code name of the site where the form isplaced, i.e. . It is useful<custom form files folder>/<site code name>for better orientation in files when multiple sites are running in thesystem.

Custom form files folder Folder where files uploaded via are stored. You can use:Forms

physical disk path: e.g. c:\myfiles\mysitevirtual path: ~/UploadedFilesUNC path: \\server\folder

If no value is entered, the files are stored in ~/<site code.name>/BizFormFiles

Use site-specific subfolders for custom form files folder This setting is only applied when a isCustom form files folderconfigured. If enabled, attachment files will be stored in a sub-foldernamed as the site code name under the custom files folder, i.e. <cu

. It is useful for betterstom BizForm files folder>/<site code name>orientation in files when multiple sites are running in the system.

Security

Upload extensions Specifies which extensions are allowed for uploaded files. You canrestrict the types of uploaded files by entering a limited list ofextensions separated by semicolons, for example: gif;jpg;doc;pdf

This allows you to block users from uploading potentially dangerousfiles, such as ASPX scripts. If no value is specified, uploading isallowed for all file types.

Check if files are published If checked, only files that are in the workflow step can bePublished accessed from the live site when a workflow is applied to the page.

Check files permissions If checked, page permissions are applied to the files.

Image resizing

Automatic image resize on upload (width, height, max side size) Configures the system to automatically the size of imagesreducewhen they are uploaded. The values are measured in pixels. Thebehavior depends on the values that you fill in:

No values are entered - images are not resized.Only width or only height - images are resized so that theirwidth or height matches the entered value. The otherdimension is also resized to preserve the image's aspect ratio.Both width and height - both dimensions of images areresized according to the specified values (if the givendimension is greater than the entered value). Aspect ratio is notpreserved.Max side size - if one of the image's sides is larger than thisvalue, the image is resized so that its larger side's dimensionmatches the entered value. Aspect ratio is preserved and widthand height settings are not applied.

See for more information.Resizing images on upload

Page 50: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Watermark

Watermark image Allows you to specify an image file that the system adds as awatermark to images (according to the remaining settings in thecategory). There are two ways to set the watermark:

Enter the full relative path to a physical file on the server, forexample ~/App_Themes/Default/Images/Powered_by_kentico.

. You cannot use web links or images loaded using Kenticogifsystem pages, such as GetFile.Enter only the name of an image file located in the ~/App_The

folder.mes/Default/Images/Watermarks

Watermark position Sets the position where the watermark is placed on thewatermarked images.

Minimum image width for watermark Minimum width of an image to be watermarked.

Minimum image height for watermark Minimum height of an image to be watermarked.

Use watermark for page images If enabled, the system adds the watermark to images stored aspage attachments.

Use watermark for media files If enabled, the system adds the watermark to images stored in medi.a libraries

Use watermark for object attachments If enabled, the system adds the watermark to images stored asobject attachments (metafiles).

 

Settings - Health monitoringOn this page, you can configure settings related to the functionality. Health monitoring allows system administrators toHealth monitoringobserve and record the application's load and performance using an external application, e.g. the built-in in MicrosoftPerformance monitorWindows.

General

Enable health monitoring Indicates if is enabled. i.e. if monitored values areHealth monitoringwritten to both General and Site performance counters related tothis instance of Kentico. If disabled, no values are written to any ofthese performance counters.

Application monitoring interval Time interval (in seconds). In this periodic interval, the applicationreads monitored values and writes them to performance counters.

Use external service Indicates if external Windows service ( )Kentico Health Monitorshould be used to read and write monitored values to the Schedule

, and perfod tasks in queue E-mails in queue Error e-mails in queuermance counters. As these counters require database access to gettheir values, using the external service may optimize yourapplication's performance.

Service monitoring interval Time interval (in seconds). In this periodic interval, the externalWindows service reads monitored values and writes them to theperformance counters. If you are using the Health MonitoringWindows service and change this value, it is necessary to restartthe Windows service in order for the new value to be used.

Enable site counters Indicates if values are written to site specific performance counters.If disabled, values are written to general counters only.

 

Settings - Output filterThe settings in this category allow you to adjust the , which performs additional changes to the final output code of pages before itOutput filteris sent to the browser for rendering.

Applying output filters to your website

General

Excluded output form filter URLs May be used to disable the Form output filter for specific URL paths,which fixes the issue with nonworking postbacks on pages that useURL rewriting. It ensures that forms, dialogs and buttons will workcorrectly on pages managed by Kentico.

Page 51: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Excluded resolve filter URLs Allows you to disable the URL resolving output filter, which adjustsrelative URLs so that they reflect the root URL of the website.

For example, would be changed to ~/mypage1/mypage2.aspx /myp (if the application is running in the root) or age1/mypage2.aspx /Virt

(when using a virtualualDirectory/mypage1/mypage2.aspxdirectory).

Only URLs inside and attributes are changed.src href

XHTML filter

Excluded XHTML filter URLs May be used to specify the that should beURL paths of the pagesexcluded from all functionality provided by the XHTML output filter.

Excluded XHTML attributes filter URLs Specifies the URL paths of the pages that should be excluded fromthe Tag attribute XHTML filter, which ensures that all attributes ofHTML tags are generated in valid XHTML format.

Excluded XHTML JavaScript filter URLs Specifies the URL paths of the pages that should be excluded fromthe JavaScript tag XHTML filter, which ensures that the and type la

attributes are included in all tags.nguage <script>

Excluded XHTML lower case filter URLs Specifies the URL paths of the pages that should be excluded fromthe Lower case XHTML filter, which ensures that all HTML tags andattributes are generated in lower case.

Excluded XHTML self close filter URLs Specifies the URL paths of the pages that should be excluded fromthe Self closing tag XHTML filter, which ensures that all HTMLelements without closing tags are properly closed, e.g. will be<br>replaced by .<br />

Excluded HTML 5 filter URLs Specifies the URL paths of the pages that should be excluded fromthe HTML5 output filter.

This filter replaces tag attributes that are obsolete in HTML5. Suchattributes are removed and the system instead assigns CSSclasses named in format . These<attribute name>_<attribute value>classes need to be defined in the CSS stylesheet used by thewebsite's pages.

The affected attributes are: , , , , cellpadding cellspacing width height b, , order align valign

For example:

<table cellpadding="2" cellspacing="4">would be replaced by:<table class="cellpadding_2 cellspacing_4">

Indent output HTML Indicates if the HTML output of pages should be processed into aproperly indented, easier to read format. This setting is applied to allpages on which the XHTML output filter is enabled.

Convert TABLE tags to DIV tags Determines which elements (and their child and t<table> <tr> <td>ags) should be converted to <div> elements by the output filter. Thesystem automatically assigns CSS classes to the replacement Divtags according to the name of the original tag. The classes need tobe defined in the CSS stylesheet used by the website's pages.

This behavior can either be disabled completely, enabled for alltables except for those marked by the CSS class, or only_nodivsenabled for the tables designated through the class._divs

 

Settings - SearchOn this page you can configure settings related to the .search engine on your websites

Search

Exclude page types from SQL search Specifies the that the system does search whenpage types NOTusing . You can specify multiple page types separatedSQL searchby semicolons (;).

Page 52: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Exclude pages from SQL search Specifies site sections that the system does search whenNOTusing SQL search.

Use to identify site sections or individual pages.path expressionsYou can enter multiple paths separated by semicolons (;).

Enable smart search indexing Indicates if smart search indexing is enabled. This setting is onlyavailable if is selected in the drop-down list, not for(global) Siteindividual sites.

Allowed attachment file types Specifies which file types are included when searching page. The smart search indexes the content of attachmentsattachments

along with the related pages. Only applies to indexes thatPagehave the enabled for theirInclude attachment content optionallowed content.

By default, the system can extract content for the following filetypes: xml, txt, csv, html, htm, pdf, docx, xlsx, pptx

Enter the allowed file types as file extensions without dots,separated by semicolons. If you leave the setting empty, allavailable file types are allowed.

 

Settings - DebugOn this page, you can configure settings of the system's . The following categories of settings are available:debugging tools

GeneralAllCache accessSQL queriesIOPage ViewStateOutputSecurityMacrosAnalyticsRequestsWeb farmEvent handlers

General

Setting Description

Disable debugging Globally disables all debugs, regardless of individual debugsettings.

Debug Import/Export If disabled, the system does not log debug information for the pagesof the interface. For performance reasons, it isImport/Exportrecommended to leave this option disabled unless you need todebug the Import/Export process.

Debug resources If disabled, the debug ignores all resource requests ( aGetResourcend ).GetCSS

Debug scheduler If disabled, the debug ignores all operations executed by the sched.uler

All

Setting Description

Debug everything everywhere Enables:

All debug typesDebugging of user interface pages for all debugsLive site debugging (for all debugs)

Enable all debugs Enables all debugs and the corresponding tabs in the applicDebugation.

Display all debugs on live site If checked (true), all debugs display their information on theenabledlive site below the regular content of pages.

Page 53: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Include UI pages in all debugs If checked (true), all debugs include actions performed onenabledthe pages of the user interface.

Default log length Sets the default maximum length of the debug log in the appDebuglication. The default log length is used by debug types that do nothave their own log length set.

Display stack information in every debug If enabled, the system tracks the code stack for all debug types anddisplays the information in the Context column of the debuginterface in the application.Debug

Log everything to file Enables logging of all possible operations into files in the .log ~/App folder (including the and E-mail sending log)._Data/ Event log

Cache access

Setting Description

Enable cache access debug Enables cache access debugging and the tab in the Cache access application.Debug

Display cache access debug on live site If enabled, cache access debug information is also displayed at thebottom of each live site page. This option requires cache accessdebugging to be enabled.

Debug cache access of UI pages If enabled, access to data cached for pages of the administrationinterface will also be included in the cache access debug. Thisoption requires cache access debugging to be enabled.

Cache access debug log length Sets the maximum length of the cache access debug log on the De tab, i.e. the number of requests for whichbug -> Cache access

debug information is preserved and displayed on the tab. If empty,value of the setting (or the Default log length CMSDebugEverythi

key) is used.ngLogLength

Display stack information If enabled, the system tracks the code stack when debugging cacheaccess and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logcache.log

Log cache access to file If enabled, cache access debug log is saved into the fillogcache.loge in the folder. This option does not require cache~\App_Dataaccess debugging to be enabled.

SQL queries

Setting Description

Enable SQL query debug Enables SQL query debugging and the tab in the SQL queries Deb application.ug

Display SQL query debug on live site If enabled, SQL query debug information is also displayed at thebottom of each live site page. This option requires SQL querydebugging to be enabled.

Debug SQL queries of UI pages If enabled, SQL queries called by pages of the administrationinterface will also be included in the SQL query debug. This optionrequires SQL query debugging to be enabled.

SQL query debug log length Sets the maximum length of the SQL query debug log on the Debu tab, i.e. the number of requests for which debugg -> SQL queries

information is preserved and displayed on the tab. If empty, value ofthe setting (or the Default log length CMSDebugEverythingLogL

key) is used.ength

Debug SQL connections If enabled, SQL connection operations (new, open, close) arelogged in the SQL query debug log.

Display stack information If enabled, the system tracks the code stack when debugging SQLqueries and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logsql.log

Page 54: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Log SQL queries to file If enabled, SQL query debug log is saved into the file inlogsql.logthe folder. This option does not require SQL query~\App_Datadebugging to be enabled.

IO

Setting Description

Enable IO operation debug Enables IO operation debugging and the tab in the applicIO Debugation.

Display IO operation debug on live site If enabled, IO operation debug information is also displayed at thebottom of each live site page. This option requires IO operationdebugging to be enabled.

Debug IO operations of UI pages If enabled, IO operations called by pages of the administrationinterface will also be included in the IO operation debug. This optionrequires IO operation debugging to be enabled.

IO operation debug log length Sets the maximum length of the IO operation debug log on the Deb tab, i.e. the number of requests for which debugug -> IO

information is preserved and displayed on the tab. If empty, value ofthe setting (or the Default log length CMSDebugEverythingLogL

key) is used.ength

Display stack information If enabled, the system tracks the code stack when debugging IOoperations and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logfiles.log

Log IO operations to file If enabled, IO operation debug log is saved into the filelogfiles.login the folder. This option does not require IO operation~\App_Datadebugging to be enabled.

Page ViewState

Setting Description

Enable ViewState debug Enables ViewState debugging and the tab in the Page ViewState D application.ebug

Display ViewState debug on live site If enabled, ViewState debug information is also displayed at thebottom of each live site page. This option requires ViewStatedebugging to be enabled.

Debug ViewState of UI pages If enabled, ViewState of administration interface pages will also beincluded in the ViewState debug. This option requires ViewStatedebugging to be enabled.

ViewState debug log length Sets the maximum length of the ViewState debug log on the Debug tab, i.e. the number of requests for which debug-> ViewState

information is preserved and displayed on the tab. If empty, value ofthe setting (or the Default log length CMSDebugEverythingLogL

key) is used.ength

Output

Setting Description

Enable output debug Enables page output debugging and the tab in the aOutput Debugpplication.

Debug output of UI pages If enabled, output of administration interface pages will also beincluded in the output debug. This option requires output debuggingto be enabled.

Output debug log length Sets the maximum length of the output debug log on the Debug -> tab, i.e. the number of requests for which debug informationOutput

is preserved and displayed on the tab. If empty, value of the Defaul setting (or the key)t log length CMSDebugEverythingLogLength

is used.

Page 55: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Log output to file If enabled, output debug log is saved into the file inlogOutput.logthe folder. This option does not require output~\App_Datadebugging to be enabled.

Security

Setting Description

Enable security debug Enables security operation debugging and the tab in the Security D application.ebug

Display security debug on live site If enabled, security operation debug information is also displayed atthe bottom of each live site page. This option requires securitydebugging to be enabled.

Debug security operations of UI pages If enabled, security checks performed by pages of theadministration interface will also be included in the security debug.This option requires security debugging to be enabled.

Security debug log length Sets the maximum length of the security debug log on the Debug -> tab, i.e. the number of requests for which debugSecurity

information is preserved and displayed on the tab. If empty, value ofthe setting (or the Default log length CMSDebugEverythingLogL

key) is used.ength

Display stack information If enabled, the system tracks the code stack when debuggingsecurity and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logSecurity.log

Log security operations to file If enabled, security debug log is saved into the file inlogSecurity.logthe folder. This option does not require security~\App_Datadebugging to be enabled.

Macros

Setting Description

Enable macro debug Enables macro debugging and the tab in the applicMacros Debugation.

Enable detailed macro debug If enabled, the macro debug displays the results of all subelementsused within macro expressions. This allows you to check the exactdata content of a macro's components during each step of theresolving process.

Detailed macro debugging is highly recommended if you encounterproblems with complex expressions. If disabled, the debug onlyshows the final result of each macro.

You can enable the detailed debug only for specific expressions byadding the parameter to the given macro.|(debug)

Display macro debug on live site If enabled, macro debug information is also displayed at the bottomof each live site page. Macro debugging must also be enabled.

Debug macros resolved on UI pages If enabled, macros resolved on the pages of the administrationinterface are also included in the macro debug. Macro debuggingmust also be enabled.

Macro debug log length Sets the maximum length of the macro debug log, i.e. the numberof requests for which the macro debug stores information. If empty,the value of the setting (or the Default log length CMSDebugEver

key) is used.ythingLogLength

Display stack information If enabled, the system tracks the code stack when debuggingmacros and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logmacros.log

Log macros to file If enabled, the system saves the macro debug log into the logmacro file in the folder. Macro debugging must also bes.log ~\App_Data

enabled.

Page 56: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Analytics

Setting Description

Enable web analytics debug Enables web analytics debugging and the tab in the Analytics Deb application.ug

Display web analytics debug on live site If enabled, web analytics debug information is also displayed at thebottom of each page on the live site. Requires web analyticsdebugging to be enabled.

Debugging on the live site is only available if your site does NOTuse (JavaScript logging for web analytics On-line marketing ->

setting).Web analytics -> Log via JavaScript snippet

Web analytics debug log length Sets the maximum length of the web analytics debug log on the De tab, i.e. the number of requests for which debugbug -> Analytics

information is preserved and displayed on the tab. If empty, value ofthe setting (or the Default log length CMSDebugEverythingLogL

key) is used.ength

Display stack information If enabled, the system tracks the code stack when debugging webanalytics and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.loganalytics.log

Log web analytics to file If enabled, web analytics debug log is saved into the loganalytics.lo file in the folder. This option does not require webg ~\App_Data

analytics debugging to be enabled.

Requests

Setting Description

Enable request debug Enables request debugging and the tab in the apRequests Debugplication.

Display request debug on live site If enabled, request debug information is also displayed at thebottom of each live site page. This option requires requestdebugging to be enabled.

Debug UI page requests If enabled, administration interface page requests will also beincluded in the macro debug. This option requires requestdebugging to be enabled.

Request debug log length Sets the maximum length of the request debug log on the Debug -> tab, i.e. the number of requests for which debugRequests

information is preserved and displayed on the tab. If empty, value ofthe setting (or the Default log length CMSDebugEverythingLogL

key) is used.ength

Display stack information If enabled, the system tracks the code stack when debuggingrequests and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logRequests.log

Log requests to file If enabled, request debug log is saved into the andlogRequests.log files in the folder. The first filelogRequestsUrls.log ~\App_Data

contains the full log, while the second one only lists requestedURLs. This option does not require request debugging to beenabled.

Web farm

Setting Description

Enable web farm debug Enables request debugging and the tab in the apWeb farm Debugplication.

Debug web farm operations of UI pages If enabled, operations performed via the administration interface willalso be included in the web farm debug. This option requires webfarm debugging to be enabled.

Page 57: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Web farm debug log length Sets the maximum length of the web farm debug log on the Debug tab, i.e. the number of requests for which debug-> Requests

information is preserved and displayed on the tab. If empty, value ofthe setting (or the Default log length CMSDebugEverythingLogL

key) is used.ength

Display stack information If enabled, the system tracks the code stack when debugging webfarm operations and displays the information in the columnContext.

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logwebfarm.log

Log web farm operations to file If enabled, web farm debug log is saved into the filelogwebfarm.login the folder. This option does not require web farm~\App_Datadebugging to be enabled.

Event handlers

Setting Description

Enable handlers debug Enables event handlers debugging and the tab inEvent handlersthe application.Debug

Display handlers debug on live site If enabled, event handlers debug information is also displayed atthe bottom of each live site page. This option requires eventhandlers debugging to be enabled.

Debug handlers in UI pages If enabled, operations performed via the administration interface willalso be included in the event handlers debug. This option requiresevent handlers debugging to be enabled.

Handlers debug log length Sets the maximum length of the event handlers debug log on the D tab, i.e. the number of requests for whichebug -> Event handlers

debug information is preserved and displayed on the tab. If empty,value of the setting (or the Default log length CMSDebugEverythi

key) is used.ngLogLength

Display stack information If enabled, the system tracks the code stack when debugging eventhandlers and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logwebfarm.log

Log handlers to file If enabled, event handlers debug log is saved into the logwHandlers file in the folder. This option does not require event.log ~\App_Data

handlers debugging to be enabled.

 

Settings - On-line marketing

Campaigns

New page location Indicates where new pages for should bemarketing campaignslocated in the structure of the website. See forManaging campaignsmore information.

On-line Marketing

Enable on-line marketing Indicates if on-line marketing should be enabled. This includes thefollowing functionality:

Tracking of users on the live site as . If the setting iscontactsdisabled, users can still work with existing contacts in theadministration interface.Logging of on-line marketing .activitiesEmail marketing features, i.e. email tracking, A/B testing andbounced mail monitoring.

Optimization

Page 58: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Enable A/B testing Indicates if is allowed for pages.A/B testing

A/B testing allows you to define different variants of pages. When avisitor views the tested page on the live site for the first time, thesystem randomly displays one of the variants. From that point, thevisitor's activity on the website is logged and categorized under thegiven variant.

Enable multivariate testing Indicates if (MVT) is enabled. This allows you tomultivariate testingdefine MVT tests for pages and create different variants of theircontent. Once the test is running, the system assigns one of thepossible content combinations to visitors who access the page onthe live site. From that point, the visitor's activity on the website islogged and categorized under the given MVT combination.

Content personalization

Enable content personalization Indicates if is enabled. This allows pagecontent personalizationdesigners (and content editors) to create different variants of webparts, entire web part zones or editor widgets. The system displaysthe variants to users on the live site according to dynamicallyresolved conditions.

 

Settings - Contact managementOn this tab, you can configure settings related to .contact management

General

Log IP addresses Indicates if logging of IP addresses is allowed.

Notes stamp format Defines the format of the stamps that can be added to account orcontact notes.

 

Settings - Activities

General

Log activities If enabled, are logged for the website (according to theactivitiesother settings in this category).

Track file downloads (cms.file) for these extensions The system can track file downloads as activities for filesPage visitstored as pages in the content tree of a website. ThisCMS.Filesetting specifies which types of files the tracking includes.

Enter the allowed file types as a list of extensions separated bysemicolons, for example: pdf;docx;png

If left empty, the system tracks all file types.

Page

Page visits If enabled, the page visit activity is logged.

Landing page If enabled, the landing page activity is logged. A landing page iswhere the visitor comes first when viewing the website.

Membership

User registration If enabled, the user registration activity is logged.

User login If enabled, the user login activity is logged.

Joining a group If enabled, the joining a group activity is logged.

Leaving a group If enabled, the leaving a group activity is logged.

E-commerce

Customer registration If enabled, the customer registration activity is logged.

Adding a product to shopping cart If enabled, the activity of adding a product to the shopping cart islogged.

Page 59: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Removing a product from shopping cart If enabled, activity of removing a product from the shopping cart islogged.

Adding a product to wishlist If enabled, the activity of adding a product to wishlist is logged.

Purchase If enabled, an activity is logged when a contact makes a purchaseon the website (one record for the entire purchase).

Purchased product Indicates if an activity is logged individually for every purchase of aproduct.

Email campaign

Subscription to an email campaign If enabled, the activity is logged.Subscription to an email campaign

Unsubscription from a single email campaign If enabled, the activityUnsubscription from a single email campaignis logged.

Unsubscription from all email campaigns If enabled, the activity isUnsubscription from all email campaignslogged.

Email opening If enabled, the Email opening activity is logged.

Clickthrough tracking If enabled, the activity of user's clicking a particular hyperlink in anemail is logged.

Search

Search If enabled, the internal search activity is logged (the site visitor usesa standard search webpart).

External search If enabled, the external search activity is logged (the site visitoruses an external search engine that leads them to the website).

Subscriptions

Blog post subscription If enabled, the blog post subscription activity is logged.

Blog post comments If enabled, the activity of visitor's adding a new comment to a blogpost is logged.

Forum post subscription If enabled, the forum post subscription activity is logged.

Forum posts If enabled, the activity of visitor's adding new forum posts is logged.

Message board subscription If enabled, the message board subscription activity is logged.

Message board posts If enabled, the activity of visitor's adding new message board postsis logged.

User contributions

Creation of a new page If enabled, the activity of creating a new page is logged.

Update of existing page If enabled, the activity of updating an existing page is logged.

Deletion of existing page If enabled, the activity of deleting an existing page is logged.

Chat

Requesting support If enabled, an activity is logged when a contact requests chatsupport.

Requesting support using offline form If enabled, an activity is logged when a contact submits a supportrequest via e-mail (this option is offered when no one from the chatsupport staff is online).

Accepting initiated chat request If enabled, an activity is logged when a contact accepts a chatrequest initiated by website personnel.

Accepting automatically initiated chat request If enabled, an activity is logged when users accept automaticallyinitiated chat requests.

Other

On-line form submission If enabled, the activity of submitting an on-line form will be logged.

Content rating If enabled, the content rating activity is logged.

Page 60: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3.

Poll voting If enabled, the activity of poll voting is logged.

Abuse report If enabled, the abuse report activity is logged.

Custom table form submit If enabled, the activity after submitting custom table form is logged.

Event booking If enabled, the activity of event booking, i.e. attendee's subscribingto an event, is logged.

Custom activities If enabled, custom activities are logged.

 

Settings - Global data & merging

Global data

Allow global contacts Enables the use of global on the website.contacts

Automatically create global contact for user If enabled, the system creates new global contacts when it detectsthat there are multiple contacts associated with a user registered onmultiple websites in the system.

The site-specific contacts are merged into the global contact.If one of the detected contacts is already global, the systemdirectly merges the other contacts into it instead of creating anew contact.

Automatically create unique global contacts from site contacts If there are users with the same e-mail address across multiplewebsites, the system creates a global contact for all site contactsassociated with the given user.

When merging global contacts, select Indicates which contact the system uses as the primary contact forsite visitors who have multiple global contacts assigned. Thefollowing options are available:

Last modified - the contact that was most recently modified.First created - the oldest contact.Create a new contact - the system creates a new contact andmerges the other global contacts into it.

Allow global accounts Enables the use of global accounts on the website.

Allow global contact groups Enables the use of global contact groups on the website.

Allow global configuration Enables the use of global contact statuses, account statuses andcontact roles on the website.

Automatic merging of contacts

Merge contacts for identical Ecommerce customers If enabled, the system automatically merges contacts that areassociated with the same e-commerce customer.

Merge contacts for identical Newsletter subscribers If enabled, the system automatically merges contacts that areassociated with the same newsletter subscriber.

Merge contacts with identical e-mail addresses If enabled, the system automatically merges contacts that have thesame e-mail address.

When a visitor has more contacts, use Determines which contact the system selects as the parent whenautomatically merging:

Last logged contact - the contacts with the most recentlylogged activity.Most active contact - the contact with the highest number oflogged activities.

Note: The system always automatically merges contacts that are associated with the same user account. 

Settings - GeolocationIn this category, you can configure the mapping of the fields to Kentico contact fields. Use the drop-down lists to select the targetGeolocation fields into which the system maps the information.

The , , , and fields don't have equivalent fields in Kentico. To create new fields to mapArea code Metro code DMA code Latitude Longitudeinto:

Navigate to the application. ModulesEdit the  module.Contact management

Page 61: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3. 4.

On the tab, edit the class.Classes Contact management - ContactDefine the fields on the tab.Fields

The following settings are available. Mind the type restrictions when assigning target fields or creating custom fields for holding geolocationdata.

General

Enable IP geolocating contacts Indicates if contacts' locations can be tracked down based on theirIP addresses.

Suffix Type in an optional suffix, which the system adds to the values ofcontact fields obtained using . The suffix is only addedGeolocatingto text-based fields.

Geodata mapping

Country Accepts integer-based and text-based columns. When mapping toan integer-based column, is used. Country ID Country display nameis mapped into a textbased column.

State Accepts integer-based and text-based columns. When mapping toan integer-based column, is used. isState ID State display namemapped into a textbased column.

City Accepts text-based columns.

Postal code Accepts integer-based and text-based columns.

Area code Accepts integer-based and text-based columns.

Metro code Accepts integer-based and text-based columns.

DMA code Accepts integer-based and text-based columns.

Latitude Accepts decimal-based and text-based columns.

Longitude Accepts decimal-based and text-based columns.

Organization/ISP (GeoIPOrg required) Accepts text-based columns. The specified column will only beupdated if the GeoIP Organization Database is installed.

 

Settings - Inactive contacts

General

Inactive contacts - the system does notDo not delete inactive contactsautomatically delete inactive contacts.

-Delete contacts who were not active for the last X daysthe system deletes contacts that were inactive for at least aspecific amount of days. Specify the amount of days for whichcontacts have to be inactive for to be deleted in the Last X

setting.days Delete contacts without an email address that were not

- active for the last X days the system deletes contacts thatdo not have an email address (anonymous contacts) and wereinactive for at least a specific amount of days. Specify theamount of days for which contacts have to be inactive for to bedeleted in the Last X days setting.

 

Last X days Specify the amount of days for which contacts have to be inactive tobe automatically deleted. This setting is only taken intoconsideration when the Delete contacts who were not active for

or the last X days Delete contacts without an email addresssettings are enabled.that were not active for the last X days

The value is 10 days.minimum

 

Settings - Email marketing

General

Page 62: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Newsletter unsubscription page URL Sets the URL of the page where users can unsubscribe from an ne. The web part must be placed on thewsletter Unsubscription

specified page to ensure the required functionality.

The value of this setting is inherited by individual email campaign iftheir property is not set. If empty, the Unsubscription page URL ~/

default page is used.CMSPages/Unsubscribe.aspx

Double opt-in approval page URL Sets the URL of the page where users can confirm theirsubscription to a newsletter with double opt-in enabled. The Subscr

web part must be placed on the specified page toiption approvalensure the required functionality.

The value of this setting is inherited by individual email campaign iftheir property is not set. If empty, the Approval page URL ~/CMSM

defaodules/Newsletters/CMSPages/SubscriptionApproval.aspxult page is used.

Double optin interval Sets the length (in hours) of the time interval during which users willbe allowed to confirm their subscription to a newsletter that usesdouble optin. If a user does not activate their subscription within thespecified number of hours, the link in their confirmation email willexpire and become invalid.

Opt-out list Opt-out list is shared between all sites - suitable if all sites onthe instance are related. That is, visitors subscribe to allcampaigns on all sites at once.Opt-out list is separate for each site - suitable if sites on theinstance aren't related. That is, visitors subscribe to sitecampaigns individually.

Changing the behavior on a production site:

Switching to 'Opt-out list is shared between all sites' removessubscribers who were removed from a site newsletter from allthe newsletters on all sites. They will not receive newslettersfrom any sites.Switching to Opt-out list is separate for each site' will makesubscribers unsubscribed only from the newsletter from whichthey were opting out originally when choose to unsubscribefrom all.

Generate campaign emails if emails are disabled If enabled, campaign emails will be generated and saved into the E even if sending of emails is disabled in mail queue Settings ->

.System -> Emails

Use external service for dynamic newsletters If enabled, the that are created to ensure thescheduled tasksmailout of new dynamic newsletters will be set to be processed bythe external scheduling service by default.

Note: this does not change the settings of existing dynamicnewsletter tasks. If you wish to configure these to use the externalscheduler Windows service, you will have to enable their Use

property manually in the applicexternal service Scheduled tasksation (remember to select the appropriate site, these tasks are notglobal).

Bounced emails

Monitor bounced emails Indicates if bounced emails should be tracked for email campaignsubscribers. Bounced emails are received whenever there is aproblem with the delivery of a campaign email to a subscriber.

Bounced email address Sets the address to which bounced emails are sent when thedelivery of a campaign email to a subscriber fails. If set, thisaddress is used in the field of campaign emails.From

Bounced email limit Sets the amount of bounced emails that can be counted for asubscriber before the system blocks them from receiving furthercampaign emails. This limit is set for all email campaigns under theselected site.

If is entered, subscribers will never be blocked automatically, but0their bounced email count will still be tracked and displayed in the E

application.mail marketing

Page 63: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Block subscribers globally If checked, bounces will be added to all subscribers that have thesame email address. This is applied across all sites in the system.

Note: this setting does not ensure consistency between the bouncecounts of all subscribers with a shared address, only that newbounces will be added to all of them.

This field is only available when defining global settings, i.e. whenthe option is selected from the drop-down list.(global) Site

POP3 settings

Server name Sets the address of the mail server where the bounced emails arestored. POP3 is used to check the server and monitor bouncedemails.

Server port Specifies the number of the port used to connect to the mail server.

User name Sets the user name used for authentication against the mail server.

Password Sets the password used for authentication against the mail server.

Use SSL Indicates whether the connection to the mail server should besecured using SSL.

Authentication method Allows the selection of the authentication method used for theconnection to the mail server. Options include basic user name andpassword authentication and several challengeresponsemechanisms.

The option uses APOP if the server supports it and plain textAutouser name and password authentication otherwise.

 

Settings - Web analyticsThe settings here allow you to enable or disable tracking of various types of events and specify other related configuration options.

General

Enable web analytics Enables or disables the entire application. If thisweb analyticssetting is disabled, the system does not track any of the statisticslisted below.

Log via JavaScript snippet If enabled, the system uses JavaScript to log web analytics andpage-related on-line marketing . Otherwise the loggingactivitiesoccurs directly on each request.

JavaScript logging ignores all browsers and devices that do notsupport JavaScript or have it disabled. This filters out non-humantools such as RSS readers and web crawlers from future statistics.

In most cases, it is recommended to use JavaScript logging.Switching to JavaScript logging does not reduce the performance ofthe website.

Views & Downloads

Track file downloads If enabled, the system tracks which files were downloaded bywebsite visitors.

Important: Web analytics only track files stored as pages in thewebsite's content tree.

Track invalid pages Indicates if invalid page requests should be tracked. Invalidrequests are those that contain the website's domain name, butspecify a path to a page that does not exist.

Track page views Indicates if the web analytics track how many times the website'spages were viewed by visitors. Only pages that are served byKentico are included in the statistics.

Note: The system checks the values of the settings at the moment that tracked events occur. Changes do not affect previouslylogged data, only future events.

Page 64: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Track aggregated views If enabled, the web analytics track access to pages via linkscontained in RSS or Atom feeds (created using the funSyndicationctionality).

Track landing pages Indicates if the web analytics track which pages are the first onesviewed by visitors when they start their browsing session on thewebsite.

Track exit pages If enabled, the web analytics log the final pages that were visited byusers when their browsing session ended.

Track average time on page If enabled, the web analytics track the average time that usersspend on pages.

Visitors

Track browser types Indicates if the web analytics track the browser types and versionsused by the website's visitors.

Track visits Indicates if site visits are tracked. A single visit includes any numberof page views or other actions performed by a specific user duringone session.

First time users are logged as new visits. After a specified timeperiod of inactivity, known users are logged as returning visits.Visitors are recognized using a browser cookie.

Visitor idle time (minutes) Determines how long (in minutes) a visitor must be inactive beforetheir presence on the website is logged as a returning visit.

The default value is (23 hours). You can adjust this setting1380depending on how often visitors usually return to your site. Forexample, to track how frequently your site's visitors return over thecourse of a single day, you could set the value to minutes or60less.

Remember visitors by IP (minutes) If the entered value is higher than , the system stores the IP0addresses of the website's visitors in the memory for the specifiednumber of minutes.

You may use this setting in cases where there are problemsidentifying visitors using the standard approach, e.g. if many of yourvisitors have cookies disabled in their browser.

Track countries If enabled, web analytics track the countries from which visitorsaccess the website.

The countries are recognized according to the IP addresses ofvisitors, which may not be 100% reliable in all cases, but the overallstatistics for a high number of visits should provide correct results.

Track registered users Enables tracking of user registrations.

Track search crawlers Indicates whether the web analytics monitor the activity of searchengine web crawlers (robots). This type of tracking is performedeven if the setting is enabled.Exclude search engines

Note: This only includes crawlers whose user agent is specified forone of the search engines registered in the system. See Monitoring

for more information.traffic from search engines

Track mobile devices If enabled, the web analytics track whether visitors access thewebsite using mobile devices.

Excluded

Exclude search engines If enabled, hits generated by search engine robots (crawlers) arenot included in tracking statistics. This does not affect the Search

statistic.crawlers

Excluded file extensions Sets which file types should not be tracked as part of the File statistics. The file types are specified using a list ofdownloads

extensions separated by semicolons (;), for example: .jpg;.gif

Note: it is necessary to include the period in the extension name.

Page 65: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Excluded URLs Can be used to exclude websites or their sections from all types ofweb analytics tracking. To exclude a page and all underlying pages,enter its URL (or page alias). You can specify multiple URLs (or sitesections) separated by a semicolon (;).

Examples:

/Home; /Special-pages

/Articles/2014; /Articles/2013

Excluded IP addresses Hits generated by the client IP addresses listed here are notincluded in web analytics tracking.

You can enter multiple addresses separated by semicolons (;). Theasterisk ( * ) wildcard can be used as a wildcard for any number inan IP address, substituting for all values from 0 to 255.

This can be used to exclude the IP addresses of the website'sadministrators or other special users, so that they do not influencetracking results.

Traffic sources

Track search engines Indicates if the web analytics track traffic from search engines.

Track search keywords Indicates if the web analytics log the keywords that were enteredinto search engines in order to find the website.

Track on-site keywords Indicates if the keywords that were used in the website's localsearch functionality should be logged.

Track referring local pages If enabled, the web analytics track which links visitors use tonavigate within the website (i.e. menus or other types of linkspresent on the site's pages).

Track referring pages by direct link If enabled, the web analytics log when the website's pages areaccessed directly through a URL entered into the browser.

Track referring sites Indicates if the web analytics log the total amount of page viewsgained through links from external websites and the statistics forindividual website domains.

Track referrals Indicates if the web analytics log the full URLs of external pagesfrom which visitors were linked to the website and the number ofresulting page views.

 

Settings - E-commerceYou can configure the Kentico E-commerce Solution settings that determine the behavior of your on-line store in the , Store configuration M

and . Every one of them contains different settings, which you can configure. On this page, youultistore configuration applicationsSettingscan find out in which application you can configure different settings.

General settings

The general settings are located at:

Store configuration -> Store settings -> GeneralMultistore configuration -> Store settings -> GeneralSettings -> E-commerce

To find out the purpose and the specifics of the mentioned applications and generally the difference between store and multistoreconfiguration, see .Choosing site or global e-commerce configuration

Remember you can also use to configure additional e-commerce settings or you can define your ownweb.config settingsweb.config settings and then retrieve them in source code:

string value = CMS.Base.SettingsHelper.AppSettings["MyCustomKey"];

Page 66: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Currencies

Main currency Specifies the currency used for expressing prices. Learn more aboutcurrencies in .Configuring currencies

Restrictions: Only global administrator can change this setting. The settingis not available in the application.Settings

Products UI

Display tree of product sections Specifies whether the system displays the tree of product sections in the Prapplication. If the sections tree is hidden, you can create only oducts stand-

. Otherwise, you can create a complete product, i.e. an SKUalone SKUswith its page representation in the sections tree. Learn more about theproduct tree in .Configuring product structure

Products starting path Specifies a path within the content tree of pages where the subtree ofproduct sections starts, e.g.: . The system displays this subtree in/Productsthe administration interface when maintaining or selecting products. Learnmore about product structure in .Configuring product structure

Restrictions: The setting has no effect if the section tree is hidden (whenthe field is cleared).Display tree of product sections

Display products in sections tree Specifies if the system displays products in the product sections tree. Learnmore about product structure in .Configuring product structure

Restrictions: The setting has no effect if the section tree is hidden (whenthe field is cleared).Display tree of product sections

Allow stand-alone SKUs Indicates whether the users can create stand-alone SKUs (i.e. SKUswithout their page representations). If so, the system displays thestand-alone SKUs node above the product section tree in the administrationinterface. Learn more about stand-alone SKUs in Managing stand-alone

and .SKUs Configuring products

Restrictions: The setting has no effect if the section tree is hidden (whenthe field is cleared).Display tree of product sections

Products properties

Related products relationship name Specifies the name of the relationship used when defining related products.If you leave the default option, i.e. , the users can select from all(all)relationships existing on the current site while adding related products. Thisgives them the possibility to use more than one type of relationship amongproducts. Learn more about product relationships in Displaying related

. Learn more about setting up products in pages using named relationships.Configuring products

Products are 'new' for Specifies the number of days for which the recently added products areconsidered as new products in your on-line store. The system counts thedays based on the products' property. Learn more aboutIn store fromproducts in .Configuring products

Public status for 'new products' Specifies a product public status for new products.

The system can mark any product with this status automatically based onthe setting and the product property.Products are ‘new’ for In store fromIf you type a public status to this field, the system automatically assigns thispublic status to the product status indicator of the specific productregardless of the product-specific public status configuration. Learn moreabout products in .Configuring products

Default product image URL Specifies the default product image URL (virtual path). The system usesthis image if no image is specified for a given product. Learn more about thedefault product image in .Configuring products

Keep the advertised price of the products according to their cheapestproduct variant

If selected and a product's has a lower price than the product itself,variantthe system assigns the variant's price to the product. Therefore, the lowerprice is displayed on the product's detail page on the live site. Learn moreabout the setting in .Configuring products

Restrictions: The settings are not applied when workflows are used.Changing the setting does not affect the already existing products (youneed to resave all of the existing products).

Taxes

It is recommended to enter the default product image.

If you do not enter any default product image URL, products inproduct listings could be displayed incorrectly.

Page 67: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Default country Specifies the default country (typically select your country or the countrywhere you sell the most). The system applies all taxes based on theirvalues as set for the default country, unless the customer specifies adifferent country (or state) during the checkout process. Learn more abouttaxes in .Configuring taxes

Apply taxes based on Specifies whether the system applies taxes based on the shipping addressor the billing address. Taxes related to orders with no shipping addressspecified are calculated based on the billing address regardless of thissetting. Learn more about taxes in .Configuring taxes

Shopping cart

Mark shopping cart as abandoned after (hours) Specifies after how many hours the system marks customers' shoppingcarts as abandoned. This setting is then used by a scheduled task that usesthe class, which you can use for aCMS.Ecommerce.MarkCartAbandonedmarketing automation process that sends your customers a reminder thatthey left your website with their shopping cart with products in it. See moreinformation about this process in Walkthrough - Sending an automated

.reminder of an abandoned shopping cart

Clear content of old shopping cart after (days) Specifies after how many days the system selects shopping carts stored inthe database to be removed. This setting is then used by a scheduled taskthat uses the class, which you canCMS.Ecommerce.ShoppingCartCleaneruse for automatic removing of shopping carts stored in the database. Seemore information about this process in Removing old shopping carts from

.the database

Unregistered customers

Register customer after first checkout Specifies if the system automatically creates an account for unregisteredcustomers after making their first order. The system uses data that thecustomer provided during the checkout process. The customer thenreceives a notification email with their login information, i.e. an emailaddress and a randomly generated password. Learn more about automaticregistering after the checkout process in Enabling automatic registration for

.anonymous customers

Registration after checkout email template Specifies the email template the system uses to notify customers that theywere registered after their first order (if the Register customer after first

setting is enabled). Learn more about email notifications in checkout Confi.guring e-commerce email notifications

Live site pricing

Display price including catalog discounts Specifies if the system displays product prices on the live site includingcatalog discounts. Learn more about creating product listing and productdetail pages in .Configuring product pages

Restrictions: This setting takes effect only for prices that are displayedthrough the or transformatiGetSKUFormattedPrice() GetSKUPriceSaving()

.on methods

Display price including taxes Specifies if the system displays product prices on the live site includingtaxes. more about creating product listing and product detail pages inLearn  Configuring product pages.

Restrictions: This setting takes effect only for prices that are displayedthrough the or transformatiGetSKUFormattedPrice() GetSKUPriceSaving()

.on methods

Invoice

Invoice number pattern Specifies the pattern used for generating invoice numbers. If left empty, thedefault pattern is used; invoice numbers are then{% Order.OrderID %}equal to order IDs. Learn more about invoices in .Configuring invoices

Measurement units

Mass unit Specifies the unit of weight of products. When a store administrator typesweight of a product, the weight is of this unit. The unit is then used, forexample, for shipping calculation. Learn more about products' weight in Con

.figuring products

Restrictions: This setting is only global and applies for all your sites.Therefore, these settings are available only in the Multistore configurationapplication and the application when is selected in the Settings (global) Sit

drop-down list.e

Mass format string

____________________________

Specifies the format string used for displaying product weight. The specif{0}ier represents the weight number, e.g., if the weight should be displayed as

, type to this field. The appearance can vary for different 30 kg {0} kg culture.s

Page 68: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Example

The example weight is .20.5 lb

Typedformatstring

Culturesusingpoint asdecimalmark

Culturesusingcommaasdecimalmark

Notes

{0} lb 20.5 lb 20,5 lb Displaysas manydecimalplaces asthenumberhas.

{0:F0} lb 20 lb 20 lb F0 displays 0decimalplaceswithoutrounding.

{0:F4} lb 20.5000lb

20,5000lb

F4 displays 4decimalplaces.

{0:000.000} lb

020.500lb

020,500lb

Insteadof the -nFotation,you canuse0-basednotation.

000.000displaysat leastthreenumbersbeforedecimalmark andalwaysthreenumbersafterdecimalmark.

For complete information about format strings, see .MSDN

The format string is used, for example, in the webShopping cart totalspart, in which the total weight of the shopping cart is displayed. If you wantto use the format string elsewhere, use the macroGetFormattedWeight()

.method

Page 69: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Example

For using the format string on productdetail page, use:

Text/XML transformation: {%GetFormattedWeight(SKU.SKUWeight)%}ASCX transformation: <%#EcommerceFunctions.GetFormattedWeight(SKUWeight) %>

Where is a .SKUWeight double

Learn more about products' weight in Configuring products.

Pages

My account URL Specifies the URL of the page (virtual path). You can thenMy accountretrieve the URL with the macro{% Settings.CMSMyAccountURL %}method.

Wishlist URL Specifies the URL of the page (virtual path).Wishlist You can then retrievethe URL with the macro method.{% Settings.CMSWishlistURL %}

Shopping cart URL Specifies the URL of the page (virtual path). Shopping cart You can thenretrieve the URL with the macro{% Settings.CMSShoppingCartURL %}method. Learn more about displaying shopping cart preview on pages,where this macro can be especially useful, in Displaying the shopping cart

. Learn more about shopping carts in preview on pages Configuring steps of.the checkout process

Redirect to shopping cart Specifies whether the system redirects the customer to the shopping cartpage when they click Add to shopping cart. If cleared, the customer stayson the same page, and the product is added to the shopping cart in thebackground. Learn more about shopping carts in Configuring steps of thecheckout process.

Email settings

The email settings are located at:

Store configuration -> Store settings -> EmailsMultistore configuration -> Store settings -> EmailsSettings -> E-commerce (under )the general settings

Emails

Send e-commerce emails from Specifies an email address from which e-commerce notificationemails are sent. Learn more about email notifications in Configuring

.e-commerce email notifications

Send e-commerce emails to Specifies email addresses to which administration e-commercenotification emails are sent (separated by semicolons). Typically, itis the merchant's email address. Learn more about emailnotifications in Configuring e-commerce email notifications.

Send order notification Specifies if the system sends email notifications after completingand saving .orders

The isE-commerce - Order notification to customer email templateused when sending notifications to . The customers E-commerce -

email template is used whenOrder notification to administrator sending notifications to administrators. Learn more about emailnotifications in Configuring e-commerce email notifications.

Page 70: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Send payment notification

____________________________

Specifies if the system sends email notifications after customerscomplete order . The system sends these notificationspaymentautomatically if the customers paid through payment gateways, or iforders moved to a status with enathe propertyMark order as paidbled. Store administrators can also manually complete orderpayment by enabling for selected orders.Order is paid

The emailE-commerce - Order payment notification to customertemplate is used when sending notifications to customers. The E-co

emailmmerce - Order payment notification to administratortemplate is used when sending notifications to administrators. Learnmore about email notifications in Configuring e-commerce emailnotifications.

Send e-products reminder (days) Specifies how many days prior to e-products expiration the systemsends a notification email .to the customers

The email templateE-commerce - E-product expiration notificationis used. Learn more about email notifications in Configuringe-commerce email notifications.

Use customer's culture for emails Specifies if the system sends the customers' emails in thecustomers' shopping cart culture. Learn more about emailnotifications in Configuring e-commerce email notifications.

Marketing settings

The marketing settings are located at:

Store configuration -> Store settings -> On-line marketingMultistore configuration -> Store settings -> On-line marketingSettings -> E-commerce (under )the email settings

Conversion tracking

Order conversion name Specifies the name of a conversion logged when a customercompletes an order. Learn more about e-commerce conversions in Logging conversions on your website.

Order conversion value

____________________________

Specifies a number that the system records when the orderconversion is logged. The values are cumulative, i.e. when aconversion hit is logged, the specified value is added to the totalsum previously recorded for the conversion.

You can insert a macro expression to dynamically retrieve a valuefrom the current website context. For example: {%

The macroEcommerceContext.CurrentShoppingCart.TotalPrice %}. is resolved into total price of all items contained in the order,including tax and shipping. Learn more about e-commerceconversions in Logging conversions on your website.

Add to shopping cart conversion name Specifies the name of a conversion logged when a customer adds aproduct to the shopping cart. Learn more about e-commerceconversions in Logging conversions on your website.

Add to shopping cart conversion value Specifies a number that the system records when add to shoppingcart conversion is logged. The values are cumulative, i.e. when aconversion hit is logged, the specified value is added to the totalsum previously recorded for this conversion.

You can insert a macro expression to dynamically retrieve a valuefrom the current website context. For example: {%

. This macro logs the addedShoppingCartItem.UnitTotalPrice %}products' price (including tax). Learn more about e-commerceconversions in Logging conversions on your website.

Global object settings

The global object settings are located at:

Store configuration -> Store settings -> Global objectsMultistore configuration -> Store settings -> Global objectsSettings -> E-commerce -> Global objects

Page 71: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

On this setting page, you can choose which global objects and settings the system uses. See the complete description of the store vs.multistore approach along with the list of objects grouped by their type in .Choosing site or global e-commerce configuration

Authorize.NET settings

The Authorize.NET settings are located at . This type of settings is notSettings -> E-commerce -> Payment gateways -> Authorize.NETavailable in the or application.Store configuration Multistore configuration

See more about Authorize.NET settings in . Learn more about Authorize.NET payment gateway in Settings - Authorize.NET Configuring.Authorize.NET

PayPal settings

The PayPal settings are located at . This type of settings is not available in the Settings -> E-commerce -> Payment gateways -> PayPal St or application.ore configuration Multistore configuration

See more about PayPal settings in . Learn more about Authorize.NET payment gateway in .Settings - PayPal Configuring PayPal 

Settings - Authorize.NETHere you can find out settings related to the . The Authorize.NET settings are located at Authorize.NET payment gateway Settings ->

. This type of settings is not available in the   or E-commerce -> Payment gateways -> Authorize.NET Store configuration Multistore application.configuration

General

API login Specifies an API login ID for the payment gateway account.

Transaction key Specifies a transaction key obtained from the Merchant Interface.

Use test mode Specifies whether the Authorize.NET uses test transactions fortesting purposes or live transactions used by real customers.

 

Settings - PayPalHere you can find out settings related to the . The PayPal settings are located at PayPal payment gateway Settings -> E-commerce ->

. This type of settings is not available in the   or  application.Payment gateways -> PayPal Store configuration Multistore configuration

General

Business Specifies an e-mail address for the merchant's PayPal account.Enter the PayPal e-mail of the merchant's account.primary

Cancel return URL Specifies a URL where the system redirects the customer's browserif the payment is cancelled. For example, a URL on your sitedisplaying your custom page. By default, i.e. ifPayment cancelledno such URL is defined, the system redirects the browser to thecorresponding PayPal page.

Notify URL Specifies a URL where PayPal sends information about thetransaction. If specified, overrides the settings in the PayPalMerchant Interface.

Return URL Specifies a URL where the system redirects the customer's browserafter completing the payment. For example a URL on your sitedisplaying your . Bycustom pageThank you for your paymentdefault, i.e. if no such URL is defined, the system redirects thebrowser to the corresponding PayPal page.

 

Settings - Community

The behavior depends on configuration in this field andalso in the . If both or atAuthorize.NET Merchant Interfaceleast one of the interfaces is set to test transactions, alltransactions are completed as test transactions.

To process transactions as live transactions, you need todisable this field and the related field in the both Authoriz

.e.NET Merchant Interface

Page 72: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

You can configure settings related to in .Community features Settings -> Community

Groups

Group template path Alias path of the page that will be used, together with the pagesstored under it, as a template for newly created , e.g. groups /Group

.s/Template

The value of this setting is used by the webGroup registrationpart if its property is empty.Template source alias path

Groups security access denied path Alias path of a page to which users will be redirected when they tryto access pages of a group they don't have permissions for. Thispage should contain the Group security message web part, e.g. /Groups/{GroupName}/Access.

Group management path Alias path of the group management page, containing the Groupprofile web part, e.g. /Groups/{GroupName}/Management.

Group profile path Alias path of the group profile page; e.g. ,/Groups/{GroupName}where is a wildcard replaced by the name of a givenGroupNamegroup.

Group invitation

Invitation acceptation path Alias path of the page containing the Group invitation web part; thisis a special web part handling requests for joining a group when auser clicks the joining link in group invitation e-mail, e.g. /Special-pages/Invitation-acceptation.

Group invitation expires after (days) When some user receives a group invitation e-mail, the link forjoining the group included in the e-mail will be active for the numberof days entered here. After the specified duration, the link will nolonger be functional. If is entered, the link will be functional0permanently.

Members

Member management path Alias path of the member management page, e.g. /Members/Manag.ement

Member profile path Alias path of member the profile page, e.g. ,/Members/{UserName}where is a wildcard replaced by the name of a givenUserName user.

Enable friends Indicates if the Friends functionality should be available in othermodules on the live site.

Friend management path Node alias path of a page with the Friendship management webpart. This is a special web part for handling friendship approval orrejection requests.

Activity points

Enable user activity points If checked, will be logged for users.activity points

Activity points for blog post Sets the number of activity points that users receive for adding ablog post.

Activity points for blog comment post Number of activity points that users receive for adding a blog postcomment.

Activity points for forum post Number of activity points that users receive for adding a forum post.

Activity points for message board post Number of activity points that users receive for adding a messageboard post.

Content management

Use parent community group for new pages Indicates if new pages should inherit the value of the Owned by property from their parent page.group

 

Settings - AvatarsYou can configure settings related to in .avatars Settings -> Community -> Avatars

General

Page 73: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Enable pre-defined avatars If checked, it will be possible to select one of the shared, predefinedavatars when choosing a user or group's avatar image. If disabled,only custom uploaded avatars will be allowed.

This setting does not affect .Gravatars

Avatar type Determines what kind of user avatars will be usable on the website.The following options may be selected:

Avatar - users can either upload their own image or choose apredefined one. The images are stored locally in the website'sdatabase or file system.Gravatar - the system will automatically load and display the gl

associated with the e-mail addressesobally recognized avatarsof users. Users must be registered at tohttp://gravatar.com/have a custom avatar, otherwise a default image will beassigned to them. Note that switching to this option will changethe avatars of users who have uploaded a custom imagelocally on the website.User can choose - users will be able to choose if they want touse a local avatar or a when configuring their profile.Gravatar Gravatar support will be enabled for public users.

Gravatar rating Gravatars are rated according to the maturity level of their content.Through this setting, you can specify the maximum rating that willbe allowed on the site. The following options are available:

G - suitable for display on all websites with any audience type.PG - may contain rude gestures, provocatively dressedindividuals, the lesser swear words, or mild violence.R - may contain such things as harsh profanity, intenseviolence, nudity, or hard drug use.X - may contain hardcore sexual imagery or extremelydisturbing violence.

If a user's Gravatar does not meet the site's rating requirements, thedefault image is displayed instead. Note that the rating of aGravatar is entered by its owner, so it may not always be accurate.

Gravatar default image Determines what type of image should be displayed as the avatar ofusers who do not have a valid Gravatar registered for their emailaddress.

If the option is selected, the local avatar image specified as(none)the default option for users in the application is used. TheAvatarsremaining options provide various types of default Gravatar images.Most of the options automatically generate a different default imagebased on the email address of the given user.

User avatars

Avatar max side size Sets the maximum allowed size of avatar images. If one oruserboth dimensions of the uploaded image are larger, it will be resizedso that the larger dimension matches the entered value.

If is entered, the and settings will be0 Avatar height Avatar widthused instead.

Avatar height If the setting is set to , avatar images will beAvatar max side size 0resized to this height.

Avatar width If the setting is set to , avatar images will beAvatar max side size 0resized to this width.

Group avatars

Group avatar max side size Sets the maximum allowed size of avatar images. If one orgroupboth dimensions of the uploaded image are larger, it will be resizedso that the larger dimension matches the entered value.

If is entered, the and s0 Group avatar height Group avatar widthettings will be used instead.

Group avatar height If the setting is set to 0, images will beGroup avatar max side sizeresized to this height.

Group avatar width If the setting is set to 0, images will beGroup avatar max side sizeresized to this width.

Page 74: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Settings - ChatYou can configure settings related to in .chat Settings -> Community -> Chat

General

Allow anonymous users Indicates if users can enter chat without being logged in on thewebsite.

Guest prefix Text that will be appended with a number and used as the username for anonymous users.

Force unique nicknames for anonymous users If checked, nicknames of anonymous users on chat will have to beunique. Nicknames of registered users always have to be unique.

Maximum length of message Maximum number of characters in a message.

Convert URLs to HTML anchors in messages If checked, URLs in messages will be converted to clickable HTMLanchors.

Enable BBCode in messages Indicates if BBCode tags will be allowed and resolved in chatmessages. This setting affects the Room messages web part(resolving) and the Send message web part (inserting BBCodetags). If BBCode is enabled globally, you can still disable it for aspecific web part in its settings.

Convert emoticons to images Indicates if emoticons will be converted to images in messages.

Enable sound in live chat Indicates if the system uses sound notifications for new messagesopened in one-on-one conversations.

Support chat

Enable support chat Indicates if is enabled in the administration interface.support chat

Enable sound in support chat Indicates if the system uses sound notifications for new supportrequests and new messages in support chat.

Send support messages to this e-mail address Messages sent in support chat when no support person is on-linewill be sent to this e-mail address.

Timeout settings

Room ping interval (seconds) Defines how often room related will update their contentweb parts(messages, users in the room, etc.). The ping interval is the time inseconds between two requests to the server. If you areexperiencing performance issues with chat, consider setting thisnumber to a higher value.

Global ping interval (seconds) Defines how often global chat web parts will update their content(on-line users, available rooms and notifications). The ping intervalis the time in seconds between requests for new data to the server.If you are experiencing performance issues with chat, considersetting this number to a higher value.

Kick lasting time (seconds) Defines how long a kicked users will not be able to join the roomthey were kicked from.

Log out user when inactive for more than (seconds) Defines how long chat users can be inactive, i.e., not send anyrequest to the server, before the system logs them out. This canhappen if the users' Internet connections are down or they closedthe chat window.

Log out support engineer when inactive for more than (seconds) Defines how long a support people can be inactive, i.e., not sendany request to the server, before the system logs them out. Thiscan happen if the users' Internet connections are down or theyclosed the chat window.

Release room taken by support when not pinging for more than(seconds)

Time of inactivity needed to release a room taken by a supportperson. After this time passes, the room will appear as available toother supporters.

Page 75: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Delete chat history older than (days) Messages, rooms and chat users will be deleted after the number ofdays specified in this setting. Records will be deleted according tothese rules:

All messages written earlier than the time specified will bedeleted.All rooms will be deleted, which don't have any messages inthem, no one has access to them and were created earlier thanthe time specified.All users will be deleted, who are anonymous, have not writtenany message and haven't been on-line for the specified time.

Default paths

Default redirection path - enter chat action When this setting has a value, users will be redirected to the givenpath after they enter chat. Specified web part setting will overridethis global setting.

Default redirection path - leave chat action When this setting has a value, users will be redirected to the givenpath after they leave chat. Specified web part setting will overridethis global setting.

Default redirection path - join room action When this setting has a value, users will be redirected to the givenpath after they join a chat room. Specified web part setting willoverride this global setting.

Default redirection path - leave room action When this setting has a value, users will be redirected to the givenpath after they leave a chat room. Specified web part setting willoverride this global setting.

Chat room popup window URL URL of the window that is opened as a chat room pop-up (forsupport chat or one-on-one chat).

Flood protection

Enable flood protection Enables according to other settings in this section.flood protection

Join room interval (seconds) Number of seconds which have to pass between two subsequentroom joinings made by one chat user.

Create room interval (seconds) Number of seconds which have to pass between two subsequentroom creations by one chat user.

Post message interval (seconds) Number of seconds which have to pass between two messagesposted by one chat user.

Change nickname interval (seconds) Number of seconds which have to pass between two nicknamechanges made by one chat user.

 

Settings - Web parts

You can configure settings related to in .chat web parts Settings -> Community -> Chat -> Web parts

Default web parts settings

Items per page Number of items displayed on one page when paging is enabled.Affects on-line users, users in rooms, user search results, androoms. This setting can be overridden by a web part's setting.

Pages in group Number of pages displayed in one group when paging is enabled.Value 0 means that pages will not be grouped. Affects on-lineusers, users in rooms, user search results, and rooms. This settingcan be overridden by a web part's setting.

Show filter limit Filter will be shown when there is at least the specified number ofitems displayed by a web part. This setting can be overwritten by aspecific web part's setting.

Invite users - users per page Defines how many users will be displayed on one page wheninviting a user to a room.

Invite users - search mode If enabled, the Search on-line users web part will be used wheninviting a user to a room. Otherwise, the On-line users web part willbe used. This setting can be overridden by a web part setting.

Page 76: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Search on-line users - maximum users in response Defines how many users can be returned as a response to a searchquery when the Search on-line users web part's search mode isactivated. If this setting is set to 0, the response will not be limited.

First load of messages

Display 'Kick' system message If checked, system messages of this type will be displayed when auser enters a room.

Display 'Enter room' system message If checked system messages of this type will be displayed when auser enters a room.

Display 'Leave room' system message If checked system messages of this type will be displayed when auser enters a room.

Display 'Change nickname' system message If checked system messages of this type will be displayed when auser enters a room.

Display 'Support greeting' system message Indicates if automatic greeting support message will be displayed tousers when they enter support chat.

Display 'Invited' system message If enabled system will display messages when users invite otherusers to chat room in that room.

Display 'Announcement' system message Announcement is a message written from Kentico administrationinterface (Chat -> Chat room -> Messages -> New announcement).If checked, Announcements will be displayed when a user enters aroom.

Number of messages displayed after entering room Indicates how many messages will be displayed when a user entersa chat room. Negative number means there is no limitation and allmessages from the room will be displayed.

Default transformations

Room user transformation name Transformation for displaying users present in a room.

Room message transformation name Transformation that will be applied to messages in a normal (notone-on-one chat) room.

Chat room name transformation Transformation for displaying chat room name in the room title.

Room transformation Transformation to be used for displaying rooms in their list.

Notification transformation Transformation used for displaying notification messages.

On-line user transformation Transformation for displaying on-line users.

Error transformation Transformation that will be used for displaying errors.

Close all button transformation Transformation that will be used to display the Close all button.

Chat support request transformation name Transformation name for the element that allows to initiate on-linesupport.

Initiated chat transformation name Transformation for displaying chat bubble, which informs sitevisitors that a support person wants to initiate chat with them.

Related pagesWriting transformations for chat

 

Settings - ForumsYou can configure settings related to in .forums Settings -> Community -> Forums

General

Send forum e-mails from Sets the e-mail address that will be used as the sender for forumnotifications and confirmation e-mails.

Page 77: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Forum base URL This setting should contain the relative URL of the page where thewebsite's forums are located, for example:

~/Community/Forum.aspx

Forum groups and individual forums can either inherit this valuefrom the settings or use their own. Having a correct base URL isimportant for generating valid links in forum-related e-mails.

Forum attachments allowed extensions Allows you to specify a list of file extensions that will be allowed for f. The extensions should be entered withoutorum post attachments

dots and separated by semicolons. If blank, all extensions areallowed.

Max forum post nodes Determines the maximum number of forum post nodes displayed inthe forum post tree when editing a forum in the application.Forums

If there are more nodes than allowed by this value, the click here for link will be displayed at the bottom of the tree, letting youmore ...

display a list of all nodes in the main area.

Subscriptions

Forum unsubscription URL Sets the URL of the page that from receivingunsubscribes usersnotifications about new forum posts. The wForum unsubscriptioneb part must be placed on the page in order for the unsubscriptionsto work.

The value of this setting can be inherited by forum groups andthrough them by particular child forums. If left empty, the ~/CMSPa

default page is used.ges/Unsubscribe.aspx

Enable double opt-in for forums Indicates if double opt-in should be enabled for forum objects.When enabled, users are required to confirm their subscription byclicking a link that is sent to them in an e-mail.

You can override this setting in the properties of a particular forumgroup or a forum.

Double opt-in approval page path Path to the page that contains the Forum subscription confirmationweb part. The subscription confirmation link that will be sent tousers will point to this page.

Double opt-in interval (hours) Amount of time in hours, during which a user has to confirm theirsubscription request.

Send double opt-in confirmation Indicates if an e-mail confirmation should be sent to user after theyapprove a subscription. If double opt-in is disabled, theseconfirmation e-mails are always sent.

 

Settings - FriendsYou can configure settings related to in .friends Settings -> Community

Setting name Description

Enable friends Indicates if the Friends functionality is available in other features onthe live site.

Friend management path The node alias path of the page the webFriendship managementpart is placed on. This is a special web part that handles friendshipmanagement actions from friendship request e-mails.

If the user receives an email with a friendship request, this emailcontains links for friendship approval and rejection. When the userclicks one of the links they are redirected to the specified page, andthe user guid and type of action are transferred in the form ofquerystring parameters. The web partFriendship managementprocesses the received parameters and performs actions necessaryfor friendship approval or rejection.

On the , the Community Starter Site Special-pages/Friend-manage page serves this purpose.ment

Page 78: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Settings - GroupsYou can configure settings related to in .groups Settings -> Community

Groups

Group template path Alias path of a page used, together with pages stored under it, as atemplate for newly created groups, for example /Groups/Template.

Groups security access denied path Alias path of a page where users are redirected when trying toaccess pages of a group for which they don't have permissions. Forexample, , where is/Groups/{GroupName}/Access   {GroupName}replaced by the current group name. This page should contain the

web part.Group security message

Group management path Alias path of the group management page containing the Group web part. For example, profile /Groups/{GroupName}/Management

, where  is replaced by the current group name. {GroupName}

Group profile path Alias path of the group profile page. For example, /Groups/{GroupN, where  is replaced by the current group name.ame} {GroupName}

Group invitation

Invitation acceptance path Alias path of a page containing the web part. ThisGroup invitationis a special web part handling requests for joining a group when auser clicks the joining link in a group invitation email, for example /S

.pecial-pages/Invitation-acceptation

Group invitation expires after (days) When a user receives a group invitation email, the link for joiningthe group included in the email is active for a number of daysspecified in this field. When the group invitation expires, the link isno longer functional. If you enter , the link is functional0permanently.

Content management

Use parent community group for new pages Indicates if new pages inherit the value of the proOwned by groupperty from their parent page.

 

Settings - Message boardsYou can configure settings related to in .message boards Settings -> Community -> Message boards

Page 79: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

General

Send message board e-mails from E-mail address that will appear in the From field of notification about new message board messages.messages

Board base URL Global board base URL that can be inherited by message boards. Itcan be used by board notification e-mails and message boardviewers.

Subscriptions

Board unsubscription URL URL of the site on that the Message board unsubscription web partis placed. This web part handles requests for unsubscription fromnotifications about new message board messages.

See Managing message boards

Enable double opt-in for message boards Indicates if double opt-in should be enabled for message boards.When enabled, users are required to confirm their subscription byclicking a link that is sent to them in an e-mail.

You can override this setting in the properties of a particular forumgroup or a forum.

Double opt-in approval page path Path to the page that contains the Message board subscriptionconfirmation web part. The subscription confirmation link that will besent to users will point to this page.

Double opt-in interval (hours) Amount of time in hours, during which a user has to confirm theirsubscription request.

Send double opt-in confirmation Indicates if an e-mail confirmation should be sent to users after theyapprove a subscription. If double opt-in is disabled, theseconfirmation e-mails are always sent.

 

Settings - MessagingUsers can be notified about new received using .messages notification emails

The settings available in are related to these notification emails.Settings -> Community -> Messaging

General

Messaging sender email Email address that will be used as the sender address ( field)Fromof the notification emails.

Messaging email subject Entered text will be used as content of the field ofSubjectnotification emails.

 

Settings - Social mediaThis category contains settings dedicated to the configuration of social media integration.

 

Settings - Google+On this tab, you can adjust settings related to Google+ services. 

General

Client ID Key obtained during the authorization of API access on Google.

Client secret Key obtained during the authorization of API access on Google.

Access token Click the button to obtain a site-wide access token required toGetexecute Google+ API calls that require authorization. The Client IDand fields must be filled in.Client secret

To obtain these keys, create an account at , create a new API project at  andhttps://accounts.google.com https://cloud.google.com/consoleauthorize it on the tab.APIs & auth -> Credentials

  

Settings - Social marketingIn this section you can adjust settings that relate to the integration of Kentico with social media.

Page 80: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

In the category, you can set up the default that the system will use to shorten links posted to socialDefault URL shortener URL shortenermedia.

The default shortener appears as the default selection when posting to a social network in the , , or applications.Facebook Twitter LinkedIn 

Settings - URL shorteners­­­­­­­­­­­­­­On this tab, you can adjust settings related to that can be set for Facebook, LinkedIn and Twitter. Such servicesURL shortening servicesshorten URLs that are undesirably long in posts. It is especially useful in case of Twitter, because its posts cannot be longer than 140characters and generated URLs can take up a lot of this space.

bitly

Login Your Bitly account username. Note that if you signed into bitly usingFacebook or Twitter, your actual login may be different from thedisplayed name.

API key Key assigned to your bitly account.

It is necessary to provide these settings in order to use the bit.ly service.

After registering an account (or signing in) at , you can view your user name and API key at .https://bitly.com/ http://bitly.com/a/your_api_key

goo.gl

API key Key assigned to your google application after enabling an APIaccess.

Providing the API key for goo.gl service is not necessary, but it is highly recommended. To obtain it:

Register an account (or sign in) at .https://accounts.google.comVisit the API console at .https://cloud.google.com/consoleActivate the on the tab.URL Shortener API APIs & auth -> APIsClick the tab.Credentials

You can generate and view the API key on this page

TinyURL.com: TinyURL service does not require any settings. 

Settings - Intranet & CollaborationIn this section, you can configure settings related to the departments used on the sample Intranet portal. The following setting is available:

Departments

Department template path Alias path of a page that the system uses as a template for newlycreated departments (together with its child pages).

 

Settings - EventsIn this section, you can configure settings related to .events

When an attendee registers for an event, they receive an automatic email confirmation based on the Booking system - Event invitation em. You can use the settings to configure the , and .ail template Events Sender address Sender name Email subject

 

Settings - Versioning & SynchronizationThis category contains settings related to content staging and object versioning.

 

Settings - StagingOn this page you can adjust settings related to the functionality.Content staging

Client (source only)

Log content changes Specifies whether content change tasks are generated. Check forsource server.

Log data changes If enabled, staging tasks are logged when data in custom tables aremodified.

Log object changes Specifies whether the object change tasks are generated, check forsource server.

Log staging changes If enabled, synchronization tasks are created for changes made bysynchronization from another server to this server

Page 81: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Log export tasks Specifies whether tasks are logged for the whenexport featureobjects are deleted (incremental update support).

Staging service (target only)

Enable staging service Specifies whether the staging service is enabled. Check for targetserver.

Staging service authentication Sets the authentication type used by the staging service.

See .Using X.509 authentication

Staging service user name Staging service user name for username authentication.

Staging service password Staging service password for username authentication.

Note: After you enter and save a password, the field alwaysdisplays 8 "masking" characters, even if the password is longer orshorter. This measure helps protect your password.

X509 Certificates

Client key ID Staging service client certificate key ID.

Server key ID Staging service server certificate key ID.

 

Settings - Object versioning

General

Enable object versioning Globally enables or disables . This option isobject versioningenabled by default. If disabled, no versions are created whenobjects are modified.

Delete objects to recycle bin Determines which objects the system stores in the recycle bin whenthey are deleted.

No - no objects are moved to recycle bin when deleted, i.e.they are deleted permanently.Versioned objects only - only objects that support versioningand have versioning enabled are moved to the recycle binwhen deleted. You can select the objects in the Use object

section of the settings below.versioning forAll objects - all objects that support arstaging synchronizatione moved to the recycle bin when deleted.

Note: Storing very large media files in the recycle bin consumes asignificant amount of memory and space in the database. If yoursystem contains such files, we recommend selecting the Versioned

option and keeping versioning disabled for .objects only Media files

Team development

Use check-in/check-out for objects Indicates if (check-in/check-out) should be used forobject lockingvirtual objects. See Preparing your environment for team

.development

Keep new objects checked out Indicates if new objects are automatically checked out uponcreation.

Version history

Version history length (minor versions) Indicates how many minor versions of a single object will be storedin its version history. If the number of versions exceeds this value,the oldest version is deleted. If set to 0, minor versions historylength is not limited.

Version history length (major versions) Indicates how many major versions of a single object will be storedin its version history. If the number of major versions exceeds thisvalue, the oldest versions are deleted. If set to 0, major versionshistory length is not limited.

Page 82: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Save to last version if younger than (minutes) If an object is edited and saved within this number of minutes sinceit was last saved, changes made to it are saved to the last version.If it is saved after more minutes since it was last saved, a newversion is created. If set to 0, a new version is created wheneveryou save an edited object.

Promote to major version if older than (hours) If an object is edited and saved after this number of hours since itwas last saved, a new major version is created. If it is saved earlier,a new minor version is created or the changes are saved to thelatest version (depending on the setting above). If set to 0, majorversions are never created automatically.

Use object versioning for

Alternative forms Indicates if versioning of page type, on-line form and custom table a is allowed.lternative forms

Automation process Indicates if versioning of the automation process objects is allowed.

CSS stylesheets Indicates if versioning of CSS stylesheets is allowed.

Custom table definitions Indicates if versioning of custom table definitions is allowed.

Page type definitions Indicates if versioning of page type definitions is allowed.

E-mail templates Indicates if versioning of e-mail templates is allowed.

Form definitions Indicates if versioning of on-line form definitions is allowed (in theForms application).

Media files Indicates if versioning of media library files is allowed.

Note: Versioning of very large media files may consume anextensive amount of database space and memory. This option isdisabled by default.

Media files versioned extensions Extensions of versioned media files. Only media files withextensions enumerated here will be versioned.

Emails Indicates if versioning of campaign emails is allowed.

Email campaign templates Indicates if versioning of email campaign templates is allowed.

Page layouts Indicates if versioning of page layouts is allowed.

Page templates Indicates if versioning of page templates is allowed.

Queries Indicates if versioning of page type and custom table queries isallowed. Only custom queries are versioned — system queries arenot versioned because they are re-generated by the systemautomatically when their parent object is modified.

Report graphs Indicates if versioning of report graphs is allowed.

Report tables Indicates if versioning of report tables is allowed.

Report values Indicates if versioning of report values is allowed.

Report definitions Indicates if versioning of report definitions is allowed.

Transformations Indicates if versioning of page type and custom tabletransformations is allowed.

UI element Indicates if versioning of UI element objects is allowed.

Web part containers Indicates if versioning of web part containers is allowed.

Web part layouts Indicates if versioning of web part layouts is allowed.

Workflows Indicates if versioning of workflow objects is allowed.

 

Settings - Web farm

General

Page 83: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Web farm mode Disabled - is disabled. Web farm synchronizationweb farm supporttasks are not generated.

Automatic - web farm servers are generated and deleteddynamically in the system. In this mode, the web farm is completelymanaged by the system. We recommend this mode for mostenvironments.

Manual - when you add a server to a web farm, you must configure in the system (in the application on the the server Web farm Server

tab). Likewise, when you remove a server, you must remove itsmanually from the system. Otherwise, the web farm support will notwork correctly. Choose this mode when you need a completecontrol over the web farm.

Maximum file size to be synchronized (kB) Sets the maximum file size in kilobytes for files that should besynchronized.

Synchronization interval (milliseconds) Defines the interval after which the generated web farm tasks areprocessed.

Allow synchronization for

In this category, you can enable or disable web farm synchronization of particular objects. 

Settings - IntegrationThis category contains settings related to integration with external applications and services.

  

Settings - Integration busThe settings in this category allow you to adjust the functionality of the , which can connect Kentico with external third partyintegration bussystems. The integration synchronizes objects and pages (in both directions).

General

Enable system integration bus Allows logging and processing of incoming and outgoing integrationtasks.

Integration tasks represent individual synchronization operations forobjects or pages (create, update, delete etc.). The synchronizationprocess consists of two steps:

Logging - creation of integration tasks for actions that requiresynchronization.Processing - execution of the integration tasks.

You can enable or disable logging/processing of incoming/outgoingtasks separately through the other settings in the category.

Enable logging of incoming tasks Indicates if the integration bus logs integration tasks received fromexternal systems. To log tasks, the Enable system integration

setting must also be enabled.bus

Enable processing of incoming tasks Check to allow processing of integration tasks incoming fromexternal systems. To process tasks, the Enable system

setting must also be enabled.integration bus

Enable logging of outgoing tasks Indicates if the integration bus logs changes made to pages andobjects in Kentico as outgoing integration tasks. To log tasks, the E

setting must also be enabled.nable system integration bus

Enable processing of outgoing tasks Check to allow processing of outgoing integration tasks. To processtasks, the setting must also beEnable system integration busenabled.

 

Settings - Microsoft SharePointThese settings allow you to configure how the system caches images and other files loaded from SharePoint servers.

SharePoint file caching

Cache timeout (minutes) Sets the number of minutes for which the system caches filesloaded from SharePoint servers. The caching is done server-side.

Page 84: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

File size limit (kB) Specifies the maximum SharePoint file size in kilobytes that isallowed to be cached. Setting a limit stops the file cache from usingan excessive amount of memory.

See also: Integrating SharePoint 

Settings - RESTOn this tab, you can adjust settings related to . The following settings can be adjusted:Kentico REST service

General

Service enabled Enables or disables the Kentico REST service. See Configuring the.REST service

Service enabled for Choose if the REST service allows access to objects, pages, orboth.

Authentication type Determines which type of authentication the REST service uses.Supported types are and authentication. See Basic Forms Authenti

.cating REST requests

Note: You can authenticate REST requests using the hash querystring parameter in both modes.

Always check page security If disabled, security is not checked when accessing publishedversions of pages. If enabled, security is always checked.

Page access is read only If enabled, the REST service only allows GET requests for pages(pages cannot be modified).

Object access is read only If enabled, the REST service only allows GET requests for objects(objects cannot be modified).

Allowed page types Specifies a list of page types that the REST service is allowed toaccess. Enter the names of page types separated by semicolons.

If empty, all page types are allowed.

Allowed object types Specifies a list of objects types that the REST service is allowed toaccess. Enter the names of object types separated by semicolons.

If empty, all object types are allowed.

Generate authentication hash for URL Click the button to generate an authentication hash for specificREST URLs.

Enter the full absolute URL of the REST request, including theprotocol, website domain name, virtual directory, REST path, andquery string parameters. For example:

http://mywebsite.com/rest/content/currentsite/en-us/all/news?format=json

The system adds the authentication hash parameter to the URL.You can copy the URL and use it to perform the REST requestwithout any other type of authentication.

Restrictions:

Only works for GET requests (read only data retrieval)You cannot use hash parameter authentication for object/allretrieval requests ( ).~/rest/<objecttype>/all

Default encoding Sets the character encoding that the REST service uses forrequests that do not contain a supported header.Accept-Charset

Allow sensitive fields for administrators If enabled, REST requests authenticated using the credentials ofusers with the Global administrator are allowed toprivilege levelwork with data fields that contain sensitive information (for examplefields related to passwords).

Requests authenticated under non-administrator users can NEVERaccess sensitive fields, regardless of this setting's value.

 

Settings - WebDAVOn this tab, you can enable and configure which file types should be editable using WebDAV.WebDAV integration

Page 85: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

General

Enable WebDAV support Enables or disables WebDAV editing in both the and the Edit mode.Browse mode

Supported file extensions List of file extensions that should be editable using WebDAV Edit

. The ( ) icon is only displayedmode Edit in client applicationnext to pages with this extension.

Enter extensions with or without the leading dots, separated bysemicolons; e.g. ..docx;.xlsx;.pptx;jpg;jpeg

An appropriate client application with WebDAV support must beinstalled on the client machine for each listed extension in order forWebDAV editing of these files to be possible.

 

Settings - Data.comThe settings in this category allow you to configure data field mappings between:

Kentico and Data.com contactsKentico accounts and Data.com company profiles

To modify the default field mappings, click at the bottom of the or sections.Edit Contact Company

 

Related pagesData.com integrationMapping Data.com fieldsContact management

 

Settings - Salesforce.comOn this tab, you can configure the module which replicates Kentico contacts to Salesforce leads based on their .Salesforce integration scores

General

Organization access Allows you to authorize access of Kentico to your Salesforceorganization on behalf of a specific user.

Replication of contacts into Salesforce leads

Enabled Enables or disables replication of Kentico contacts into Salesforce.leads

Keep Salesforce leads updated If enabled, the replication process includes contacts that havealready been replicated before. This ensures that the systemupdates the corresponding Salesforce leads based on the currentcontact data.

If disabled, contacts are only replicated once.

Mapping of contacts to Salesforce leads Allows you to map contact fields to the fields of Salesforce leads.The replication process transfers contact data to leads according tothe mappings.

Organization access must be granted in order for this option to beconfigurable.

Batch size Applications can only make a limited number of API calls toSalesforce within a 24 hour window. To minimize the number ofcalls, the replication process handles contacts in batches. Eachbatch only requires one API call.

This setting specifies the maximum number of contacts that thesystem replicates in a single batch.

WebDAV is only functional if Kentico is configured to use , otherwise this settings have no effect.Windows authentication

Page 86: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3. 4. 5.

Score Allows you to select the that determines which contacts arescore replicated. The system only replicates contacts that reach a certainvalue in the given score (specified via the Minimum number of

setting).points for replication

If you do not choose a score ( ), the system replicates allNonecontacts.

Note: The replication process is always performed separately foreach website, so you can only select a score for individual sites, notglobally.

Minimum number of points for replication Specifies the amount of points that contacts must reach in the scoreselected through the setting. Once a contact reaches thisScore value, the system marks it for replication as a Salesforce lead.

Lead description Defines a custom description for replicated contacts. To map thedescription to a specific field of Salesforce leads, select the Genera

source in the field mappings.ted lead description

You can insert the values of contact fields into the description using .macro expressions

The default description adds the of the contact that isLast namebeing replicated and the name of the current site:

{% Contact.ContactLastName %} from{% CurrentSite.SiteName %}

For example, to use the value instead of the lastBusiness phonename, enter the following expression:

{% Contact.ContactBusinessPhone %}from {% CurrentSite.SiteName %}

Default company name All Salesforce leads require a company name value.

This setting allows you to specify a default company name, whichthe replication process uses for contacts who are not associatedwith any company.

The system attempts to retrieve the company name value fromsources in Kentico in the following order:

The value of the contact's fieldCompany nameThe name of the account in which the contact is listed as a primary contactThe that lists the contact as a account secondary contactThe first account that contains the contact as a regular contactThe value of the setting (if none of theDefault company nameabove steps are successful)

 

Settings - 51Degrees.mobiOn this tab, you can enhance the functionality of by adding a Data license key or uploading aDevice profiles Premium 51Degrees.mobiPremium data .xml file. The Premium data version contains additional devices, e.g., game consoles, eBook readers, tablets and smartphones. It also contains additional properties in comparison with the Lite data version, which is included in Kentico by default.

General

License settings Insert your Premium Data license key into the text box and click Activate.

You can also upload a Premium data file using the andChoose file button instead.Upload

 

  

Page 87: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Settings - Strands RecommenderOn this tab, you can configure the functionality which allows you to place recommended content to siteStrands Recommender integrationvisitors based on their behavior.

General

API ID Enter the unique identifier of your account.Strands RecommenderThe system requires the ID to communicate with therecommendation service. You can find your API ID in the Myaccount section of the .Strands Recommender website

Validation token Enter the validation token of your Strands Recommender account.The Strands recommendation service requests the token when theapplication performs certain customer actions. You can find yourValidation Token in the My account section of the StrandsRecommender website.

Catalog feed

Catalog layout Transformation used to generate each item in the Strands catalogfeed. Only items in the feed will be considered when recommendingitems.

Path The path from which items are generated into the Strands catalogfeed.

Product types The page types from which items are generated into the Strandscatalog feed. Leave empty to include all page types.

WHERE condition The value of the WHERE condition in the SELECT statement thatspecifies the items in the Strands catalog feed.

Automatic catalog upload

Enable automatic catalog upload Enables automatic upload of the Strands catalog feed to Strands.

When selected, the Save button automatically uploads the Strandscatalog feed to Strands.

Automatic upload frequency The frequency at which the Strands catalog feed is requested byStrands.

You can set the frequency more precisely directly on the Strandsportal (e.g., you can set an exact hour for weekly updates).

Catalog access restriction

Username The username used for restricting access to the Strands catalogfeed.

Password The password used for restricting access to the Strands catalogfeed.

 

Managing filesKentico allows you to upload files (such as GIF, JPG, SWF, PDF, XLS, DOC, etc.) to the Kentico database or file system and manage themas any other content.

File management approaches in Kentico

If you need to upload files to the Kentico database or file system, you need to distinguish between four types of files:

CMS.File pagesPage attachmentsMedia librariesUnmanaged files

Importing multiple files into Kentico at once

You can use two approaches to upload multiple files into Kentico at once:

In the administration interface - using and page attachments media librariesOn the server file system - using media libraries

Page 88: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

CMS.File pages

These files are uploaded by content editors as new pages into the content tree. You will typically use this type for files that are usedCMS.Fileas part of unstructured pages, such as page links or images inserted into editable regions of pages. We also recommend storing these fileswithin folders ( page type).CMS.Folder

 

Page attachments

These files are stored as a part of a structured page and their life cycle is also bound to the page (including workflow and versioning). Youcan have an unlimited number of files attached to a page.

You can find a detailed description and examples in .Attaching files to pages

Media libraries

We recommend the application to store large amounts of files. You can use files in media libraries to create ,Media libraries image galleriesvideo galleries or as a way of managing larger amounts of files of different types. The application and its typical usage is described in Media

.libraries

To upload multiple files at once, see .Inserting files into media libraries

Unmanaged files

These files are part of the website theme. They should be stored in the folder on the disk. They<web project>\app_themes\<theme>\imagesusually include images and Flash animations used throughout the site. These files are not managed by the system. 

Storing filesPage attachments (and their history), CMS.File , metafiles, , and can be physically stored in the file system,pages avatars forum attachmentsin the database, or both. You can define this in the application in the category using the Settings System -> Files -> Storage Store files insetting.

Page 89: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

You can choose one of the following options:

Database - the files are stored in the database. This option is worse in performance, but doesn't require the permission forModifythe file system and allows you to easily backup the uploaded files as part of your database. This option also has the advantage ofallowing you to use full-text search and have the content backed up with the rest of the database.File system - the files are stored in the configured folder on your disk. This option provides the best performance. However, the Modify permissions on the disk must be granted to the ASP.NET account on your machine, which is not always possible. See Disk

for the process of granting the permissions problems Modify permission.Database and file system - this option combines the advantages of both options. It provides the same performance as the filesystem-only option since the files are stored in the file system. At the same time, you can use the full-text search because thedatabase is also available.

 

Page attachments and metafiles location

Page attachments are stored in the file system under , metafiles are stored under .~/<site code name>/files ~/<site code name>/metafilesBoth these folders can be located in different locations, which can be configured using the settinSettings -> System -> Files -> Files folder gs option. Learn more in Settings - Files.

Form files location

Files uploaded by website users into are always stored in the file system. The default location is .forms ~/<site code name>/BizFormFilesYou can customize the location in .Settings -> System -> Files -> Custom form files folder

Files may be submitted as part of form records, typically when a form contains an uploader type field (specifically the Upload file fieldtype/form control). You can adjust the following settings related to files submitted through forms and their storage in the file system:

Storage

Custom form files folder Folder where files uploaded via are stored. You can use:forms

physical disk path: e.g. c:\myfiles\mysitevirtual path: ~/UploadedFilesUNC path: \\server\folder

If no value is entered, the files are stored in the ~/<site codefolder.name>/BizFormFiles/

Use site-specific subfolders for custom form files folder This setting is only applied when a isCustom form files folderconfigured. If enabled, attachment files will be stored in a sub-foldernamed as the site code name under the custom files folder, i.e. <cu

. It is useful for betterstom BizForm files folder>/<site code name>orientation in files when multiple sites are running in the system.

Security

Upload extensions Specifies which extensions are allowed for uploaded files. You canrestrict the types of uploaded files by entering a limited list ofextensions separated by semicolons, for example: gif;jpg;doc;pdf

This allows you to block users from uploading potentially dangerousfiles, such as ASPX scripts. If no value is specified, uploading isallowed for all file types.

Media library files location

Page 90: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Files stored in are always stored in the file system. The default location is , while the location of themedia libraries ~/<site code name>/mediafolder can be customized in , as described in Settings -> Content -> Media -> Media libraries folder Configuring media libraries. 

Uploading filesYou can upload files in Kentico either one by one or as multiple files. This can be useful if you need to upload a greater number of files atonce, or if you need to perform the task quickly. Uploading multiple files at once is available for:

Media files - files in (e.g. ).media libraries Media libraries -> Edit ( ) -> Filesmedia library

Meta files - files related to specified objects (e.g. attachments in e-mail template E-mail templates -> Edit ( ) ->e-mail template).General

 Page attachments - files attached to pages (e.g. ).Pages -> select -> Properties -> Attachments page 

Requirements for uploading multiple files

The following conditions must be fulfilled to allow uploading of multiple files:

The application has the write-to-disk for the temporary file repository ( folpermission CMS/App_Data/CMSTemp/MultiFileUploaderder).The client browser supports HTML 5 (for example, the system only allows uploading of single files for older versions of InternetExplorer)

How it works

1. Select one or more files from a given location.

2. The files are downloaded as temporary files to a repository ( ). To upload the filesCMS\App_Data\CMSTemp\MultiFileUploadersuccessfully, users need to avoid causing a post back on the page containing the upload form field.

3. When the upload is finished, the temporary files become the requested files:

Page 91: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Resizing images on uploadYou can configure global image resizing in .Settings -> System -> Files -> Image resizing

The system automatically the size of images when they are uploaded according to the values that you fill in for the reduces Automatic settings:image resize on upload (width, height, max side size)

No values are entered - images are not resized.Only width or only height - images are resized so that their width or height matches the entered value. The other dimension is alsoresized to preserve the image's aspect ratio.Both width and height - both dimensions of images are resized according to the specified values (if the given dimension is greaterthan the entered value). Aspect ratio is not preserved.Max side size - if one of the image's sides is larger than this value, the image is resized so that its larger side's dimension matchesthe entered value. Aspect ratio is preserved and the width and height settings are not applied.

If a post back occurs while uploading multiple files or another error occurs, the temporary files remain in the temporary repository.

The system provides the (configurable in the application),Delete old temporary upload files scheduled task Scheduled taskswhich deletes these temporary files, by default older than 24h. You can change this setting by changing the value of the CMSDelet

key (you need to manually add the key into the file of the current web projecteTemporaryUploadFilesOlderThan web.configfolder).

The image dimension values are measured in pixels.

Page 92: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

a.

b.

3.

4.

These settings are applied by default when uploading images as:

media library filespage attachmentsCMS.File pagesEditable text web part - uploading images using the dialogs.text editorEditable image web part - uploading images using the dialog. Select imageField editor fields - uploading images using the following field types (form controls), for example in forms or the Page type fieldeditor.

File data type -> and form controls.Upload file Direct uploaderText data type -> , , , and forHTML Area (Formatted Fext) BBcode editor Image selection Media selection File selectionm controls.

The default settings defined here can be overridden by local settings in the particular parts of the user interface (e.g. web part properties,field editor, text editor dialogs, etc.). 

Adding watermarks to imagesKentico allows you to specify a watermark that will overlay the images used throughout the system.

You can have the system automatically apply watermarks to the following images:

Page attachment imagesMedia library imagesObject attachment (metafile) images

To add watermarks to images

Navigate to .Settings -> System -> FilesSpecify the watermark image that you want to use:

By a full relative path, for example, ~/CorporateSite/media/images/watermark.jpg—or•— By specifying the watermark image file name placed in . For example, ~/CMS/App_Themes/Default/Images/Watermark watermark.jpg.

Configure the other watermark .properties

Page 93: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

1. 2. 3.

Save.

The watermark will now be applied to all the images for which it was configured. 

Administering files globallyA user interface for global-level administration of files stored by the system is located in the application on the tab. This part ofSystem Filesthe user interface is divided into tabs described in the following text.

Test tab

On the tab, you can perform a test that verifies the system's access to the file system. The test consists of the following steps:Test

Creation of a testing folder and fileModification of the testing fileDeletion of the testing folder and file

Click to perform the test.Test files 

Attachments tab

On the tab, you can find a list of page attachments stored by the system. Based on selection in the drop-down list, youAttachments Sitecan either select a site and view all page attachments on the site, or choose to view all page attachments on all websites in the system.(all)

If there are more than 25 page attachments (or a different number set by means of the key), a filterCMSDefaultListingFilterLimit web.configis displayed above the grid. Using the filter, you can filter displayed attachments by their name, extension, size or depending on if they arestored in the database.

Depending on the values of the setting in , the system allows you to perform different pageStore files in Settings -> System -> Filesattachments management actions.

Use the two drop-down lists below the grid. In the first drop-down list, you can select:

Selected files - performs the action for files selected using the check-boxes in the grid.All files - performs the action for all listed files.

Then you can select the required action from the second drop-down list and click .OK

Copy to database - copies the attachment to the database. This action is only displayed if the attachment is stored only in the filesystem while settings are configured for files to be stored both in the file system and in the database.Delete from database - deletes the attachment from the database. This action is only displayed if the attachment is stored both inthe file system and in the database while settings are configured for files to be stored only in the file system or to be stored both inthe file system and in the database.Copy to file system - copies the attachment to the file system. This action is only displayed if the attachment is stored only in thedatabase while settings are configured for files to be stored only in the file system or both in the file system and in the database.Delete from file system - deletes the attachment from the file system. This action is only displayed if the attachment is stored bothin the file system and in the database while settings are configured for files to be stored only in the database.

Page 94: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Clearing the attachment search content

The feature of Kentico allows users to search the text of attachment files along with the content of pages. The applicationSmart searchstores the text extracted from page attachments in the database. When rebuilding page indexes, the search loads the "cached" attachmenttext from the database. The system only processes the file text directly for attachments that do not have any search content saved.

Click in the header of the tab to remove the search content from the database for allClear attachment search cache Attachmentsattachments.

This allows you to rebuild your page indexes correctly in the following scenarios:

After you apply a hotfix or upgrade that changes how the search indexes attachment filesIf you modify the functionality of a custom search text extractor

Metafiles tab

On the tab, you can find a list of metafiles stored by the system. Based on selection in the drop-down list, you can select:Metafiles Site

(all) - displays all metafiles stored by the system.(global) - displays metafiles of global, i.e. not site-related objects.<website> - displays metafiles of site-related objects belonging to the selected site.

Using the drop-down list, you can further limit which metafiles will be displayed. By selecting , you get all metafiles thatObject type (all)match the selection in the drop-down list above. The other options in the drop-down are particular object types, while choosing one displaysonly metafiles of these objects that match the selection in the drop-down list above.

If there are more than 25 metafiles (or a different number set by means of the key), a filter isCMSDefaultListingFilterLimit web.configdisplayed above the grid. Using the filter, you can filter displayed metafiles by their name, extension, size or depending on if they are storedin the database.

In the column in the grid, action icons are displayed depending on the and settinActions Store files in file system Store files in databasegs in . The displayed actions are the following.Settings -> System -> Files

Depending on the values of the setting in , the system allows you to perform different metafilesStore files in Settings -> System -> Filesmanagement actions:

Use the two drop-down lists below the grid. In the first drop-down list, you can select:

Selected files - performs the action for files selected using the check-boxes in the grid.All files - performs the action for all listed files.

Then you can select the required action from the second drop-down list and click .OK

Copy to database - copies the metafile to the database. This action is only displayed if the metafile is stored only in the file systemwhile settings are configured for files to be stored both in the file system and in the database.Delete from database - deletes the metafile from the database. This action is only displayed if the metafile is stored both in the filesystem and in the database while settings are configured for files to be stored only in the file system or to be stored both in the filesystem and in the database.Copy to file system - copies the metafile to the file system. This action is only displayed if the metafile is stored only in the databasewhile settings are configured for files to be stored only in the file system or both in the file system and in the database.Delete from file system - deletes the metafile from the file system. This action is only displayed if the metafile is stored both in thefile system and in the database while settings are configured for files to be stored only in the database.

Page 95: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Editing file metadataYou can use the Metadata editor to edit metadata (i.e. descriptions) of non-image files stored in , as or asmedia libraries  page attachments

object metafiles. The dialog is accessible by clicking the ( ) icon next to the file listed in the respective part of theEdit metadata Editadministration interface.

You can enter the following metadata:

File name - the name of the file (without the trailing dot and extension). The current file name is always pre-filled when the dialog isopened.Title - the title of the file (may be different from the actual file name).Description - text describing the content of the file.

 

Configuring page URLsKentico uses a to processes URLs. The engine allows the system to use friendly URLs in format:rewriting engine

http://www.example.com/products/kentico-cms

instead of something like:

http://www.example.com/products.aspx?id=527

The friendly URLs provide several benefits:

They are easy to remember and easy to write into the browser address bar.They are friendly towards search engines (for more information, see the chapter).Search engine optimizationThey represent a path that shows users where they are located on the website.Users can easily bookmark or send the URLs of pages

Every page has its own unique URL. If the website's content is available in , individual language versions of pages aremultiple languagesrecognized based on a combination of their and a URL with a , or through completely custom (ifalias path culturespecific format URL pathsspecified).

Figure: Basic page processing steps

Page 96: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

  

URL processing

The steps below explain how the system handles a request for the following URL: http://www.example.com/products/kentico-cms

After pages are processed by the rewriting engine, the system optionally applies that perform additional changes inoutput filtersthe rendered HTML code.

1. Look up the website based on the domain name

The system checks the domain name in the URL and finds a matching site, either via the main site domain name or . Ifdomain aliasesnone of the currently running websites match the domain name, the page is displayed. If the~/cmsmessages/invalidwebsite.aspxrequested domain name contains a port number that is not found, the domain is checked without the port number.

2. Process the URL path

The request in this example specifies a standard URL path, so the request is handled by the Kentico URL rewriting engine. The mostprioritized way to identify standard pages is the , so the engine first attempts to find a page with a URL path set to Page URL path /produ

.cts/kentico-cms

If there is no page with a matching URL path, the rewriting engine tries to look up a page with an equal to Alias path /products/kentico-c (the alias path is generated according to the page's position in the content tree).ms

Page 97: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Figure: Processing for all types of URL requests

 

Excluding URLs from the rewriting engine

If your website uses custom physical pages ( , or any other file types) stored inside the web project directory, you can avoid.aspx .htmlunnecessary processing by excluding their URLs from the Kentico rewriting engine. When a visitor requests an excluded URL, the systemskips all URL rewriting actions and attempts to access the specified page directly. This leads to better performance and also allows you toprepare your own custom URL rewriting logic.

To disable rewriting for specific pages, open the application, select the category, and type the matching URL pathsSettings URLs and SEOinto the setting:Excluded URLs

Use URL paths without the website's domain name or virtual directory.The paths must always start with a forward slash (/), without the virtual path designator (~).Entering a value excludes all URLs that start with the given path, including sub-directories and all possible extensions.You can enter multiple URLs separated by semicolons.

Sample values:

3. Check for Page aliases

If a page cannot be found under the given URL or alias path, the system tries to find a page with a set to Page alias /products/kentico-c.ms

See also: Setting page aliases

4. Handle errors

If the steps described above fail to find a matching page for the requested URL, the system does not process the request. The webserver returns a 404 HTTP status code and displays the configured for the website.Page not found error page

5. Display the page

When the requested page is identified, the system displays the content according to the type of the page's template:

If the page is managed by the  , the system page is called, which renders the Portal engine ~/cmspages/portaltemplate.aspxfinal output according to the web parts placed on the given template and the content of the specific page.For , the appropriate template (web form) is loaded using an internal URL, for example: ASPX page templates /products.aspx?aliaspath=/products/kentico-cmsIn the case of , the system passes on the request to the MVC controller and action specified for the givenMVC templatestemplate, which then renders the page using an appropriate MVC view.

Processing of MVC and Routing URL patterns

If the URL of an incoming request matches the or Routing pattern defined for a page, the pattern always has priority overMVCother types of URL processing (even if it is set through a page alias).

The rewriting engine evaluates MVC and Routing patterns in the same step of the process, so precedence between the two is notdefined. You should always avoid collisions between MVC and Routing patterns.

Page 98: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

/Custom.aspx - excludes the page stored directly under the website's root.~/Custom.aspx /Custom - excludes all pages whose URL path starts with , for example: , , /Custom ~/Custom ~/Custom2.aspx ~/Custom/Page.htm/Custom;/Static - excludes all pages whose URL path starts with or ./Custom /Static

 

URL format and configuration

Defining URL extensions

Page URLs can use various types of extensions. By default, all URLs end with , for example: .aspx http://www.example.com/products/kentico-cms.aspx

You can also use , such as , or any other sequence of characters, or , such as custom extensions .htm .html URLs without extensions http:. In this case, you need to configure the system as described in .//www.example.com/products/kentico-cms Extensionless and custom URLs

Forbidden URL characters

Certain characters have special meanings in URLs, so they cannot be used in values that determine the path to pages (i.e. page aliases andURL paths). By default, the following characters are forbidden:

\/:*?"<>|&%.'#[]+=„" and the space character

To specify additional forbidden characters:

Open the application.SettingsSelect the category.URLs and SEOType the characters into the setting (without any separator).Forbidden URL charactersClick .Save

Alternatively, you can enter a into the setting to precisely specify which characters are allowedregular expression Allowed URL charactersin URLs.

The system automatically replaces or removes forbidden characters. You can specify the character that is used to replace forbiddencharacters through the setting in . By default, forbidden characters locatedForbidden characters replacement Settings -> URLs and SEOat the beginning or end of the path are removed completely and consecutive forbidden characters are only replaced by a single character. Ifyou wish to have each forbidden character replaced individually, add the following key to your web.config:

<add key="CMSLimitUrlReplacements" value="false" />

This preference may also be set specifically for the property of pages (and no other URLs) via the key below:Page URL Path

<add key="CMSUseLimitReplacementsForUrlPath" value="false" />

Warning: Be careful not to exclude the URLs used by the regular pages in the website's content tree. With URL rewriting disabledfor a URL, the system always tries to load a matching physical page, which leads to a page not found error in most cases.

Note

The default characters listed above are always forbidden unless you override the key in the CMSForbiddenURLValues /configurat section of your application's web.config file. For example:ion/appSettings

<add key="CMSForbiddenURLValues" value="$\/:?&quot;&lt;&gt;|&amp;%.&apos;#[]=" />

You can either use the key to allow some of the default forbidden characters, or add new ones. It is strongly recommended to — entering the characters into URL paths may prevent certain types of URLs fromkeep the default characters forbidden

working correctly.

Advanced character replacement customization

You can change the character replacement behavior to deal with specific scenarios, such as handling non-ASCII character sets or

Page 99: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Using URL Prefixes

If you need to add a prefix to all URLs on a specific site (e.g. for search engine optimization), you can specify it in Settings -> URLs and. The URLs use the following format: SEO -> Default Url path prefix <domain>/<path prefix>/<page URL path>

For example: http://www.example.com/myprefix/products/kentico-cms.aspx

Using language prefixes for URLs

To add a different URL prefix for every page culture version, type the prefix into the Settings -> URLs and SEO -> Use language prefix for setting. If you have both language prefixes and standard URL path prefixes enabled, the standard URL prefix always precedes theURLs

language prefix in the URL. Refer to for more details.Configuring URLs for multilingual websites

Reference - URL settings

The above configuration tasks can be performed via the application in the category. The following table shows anSettings URLs and SEOoverview of the available settings:

URL format

Forbidden URL characters List of additional characters that cannot be used in URLs (pagealiases and URL paths).

The following characters are forbidden by default:\/:*?"<>|&%.'#[]+=„“ and the space character.

Forbidden characters replacement Specifies the character that the system uses as a replacement forforbidden characters in URLs.

Allowed URL characters Determines which characters are usable in URLs by means of aregular expression. Any characters not specified are forbidden. Ifempty, only the characters specified by the Forbidden URL

setting are prohibited.characters

When allowing special characters in the regular expression, theymust be preceded by a backslash (\) as an escape character.

Example: Entering as the value only allowsa-zA-Z0-9\^alphanumeric characters and the caret symbol (^) to be used inURLs.

Friendly URL extension Specifies the extensions that the system adds to page URLs.

Extensions must be preceded by the period character.You can add multiple extensions separated by semicolons (;).The first extension is used as the default option whengenerating links and page URLs. Additional extensions aresupported in URLs when accessing pages.To allow extensionless URLs, enter a semicolon without anyextension.

Sample value: .aspx;.html;.htm;;

Files friendly URL extension Specifies the extension that the system adds to file URLs.

Example: getfile/<node alias>/myimage.aspx

If empty, the file URLs end with no extension: getfile/<nodealias>/myimage

Excluded URLs Specifies a list of URLs that are excluded from the URL rewritingengine. See for moreExcluding URLs from the rewriting engineinformation.

Page URLs

Default URL path prefix Defines a default URL path prefix used for all URLs of contentpages. Internally, this prefix is rewritten to the queryurlpathprefixstring parameter.

assigning unique replacement strings for specific characters.

This can be achieved by customizing how the system converts URLs into a safe format. See fCustom handling of URL path valuesor more information.

Page 100: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4. 5.

Use name path for URL path If checked, the system automatically copies page name paths to theURL path.

Use permanent URLs If enabled, URLs of pages and page attachments are generated inpermanent format. If disabled, friendly URLs are used. Learn morein .Linking pages and files

Remember original URLs when moving pages Indicates if the system creates new page aliases when a user sets anew page URL path or extension for a page.

Automatically update page alias If enabled, the alias of pages is automatically updated to match anychanges in the name of the given page in the default culture. Whenenabled, the page alias property cannot be edited manually.

Other settings (related to SEO) may also affect the format of URLs. To learn about these, refer to the chapter.Search engine optimization 

Setting page aliasesPages (with the exception of ) can have an unlimited number of different URLs. To configure URLs, select a page in thecontent only pagescontent tree of the application and open the tab:Pages Properties -> URLs

Page alias - the unique name of the page in the given section of the website. Aliases form the of each page, whichalias pathcontains all parent pages up to the root of the site's content tree. The alias path of a page is then used to generate its default URL.For example, if you set a page's alias to , then the URL is: Media <site domain>/<parent page alias path>/Media.aspx

Page URL path - the fields in this section specify an alternate URL for the page, regardless of its position in the website hierarchy.For example, if you select the Path type and enter , the URL of the page is:Standard URL or wildcard /Medialibrary <domain>/Medialibrary.aspx

Adding page aliases

You can add more URLs to pages through . Aliases do not change how the system generates the main URL of a page, they onlypage aliasesmake the given page available under other URLs.

To create page aliases:

Open the application.PagesSelect the page in the content tree.Open the tab.Properties -> URLsClick in the section.Add new alias Page aliasesYou can fill in the following properties for each alias:

Property Description

Path type________________

You can choose several different URL types for the alias path:

Standard URL or wildcard - the alias URL is handled bythe standard Kentico rewriting engine. Wildcard URLs canbe used here, as described in .Wildcard URLsRoute - the alias URL is processed as an ASP.NET Routepattern.MVC - requests to the alias URL are handled as requestsfor an MVC page. See Developing sites using ASP.NET

for more information.MVC

The selection determines how the system processes the valueof the property.Path or pattern

URL paths or routes with custom extensions

By default, only paths that are extensionless or have the extension are supported. This limitation also applies to aspx Rout or type paths.e MVC

If you wish to define paths or routes with custom extensions or containing the period character, you need to configure theapplication to handle custom extensions. See .Extensionless and custom URLs

For adding page aliases to content only pages, see .Setting page aliases in content only pages

Page 101: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

5.

6.

1. 2. 3.

4. 5.

Path or pattern Enter a URL path for the page alias according to the selected P.ath type

For example, if you enter as the value, you can/Mediagallerythen access the page under the following URL: <domain>/Mediagallery.aspx

Default controller(MVC only)

Obsolete - use only when using thedeveloping MVC sitesCMSApp_MVC project.

The name of the MVC controller containing the actionperformed when the alias URL is accessed, without the Controll

part at the end. For example, if the class is called er NewsMVC, enter .Controller NewsMVC

The system first searches for the specified class in the CMS.Co namespace. If it is not foundntrollers.<current site code name>

there, the namespace is searched.CMS.Controllers.Global

Default action(MVC only)

Obsolete - use only when using thedeveloping MVC sitesCMSApp_MVC project. Specifies the MVC action that thecontroller performs when the page is accessed through thealias URL.

Alias redirection Determines how the system handles (redirects) the URL whenthe page is accessed through the alias:

Use site settings (default) - with this option, theredirection behavior follows the Redirect page aliases to

setting specified for the website in main URL Settings ->.URLs and SEO

Redirect to main URL - if selected, the system alwaysredirects the alias URL to the page's main URL, i.e. thealias path or custom URL path (if specified).Do not redirect - if selected, the system does not redirectthe alias URL. This option is recommended if the URL ofthe alias contains a .wildcard

See also: Search engine optimization

Culture Determines which of the page the systemlanguage versiondisplays when the page is access through the alias URL.

URL extensions Specifies additional supported extensions for the alias URL. Touse custom extensions, you need to configure the systemaccording to the instructions in Extensionless and custom URLs.

This field is optional.

Track campaign The system assigns visitors who access the page through thealias to the selected web analytics .Campaign

For example, you can create a special alias for a page and thenuse the alias URL in links contained in marketing materials,such as banners, e-mails etc. This allows the system to monitorhow many page views the website receives as a result of thecampaign and track the activity of the visitors who arrive as aresult.

This field is optional.

Click .Save

If you now switch back to the page's tab, the new alias appears in the section. You can add any numberProperties -> URLs Page aliases of aliases. 

Viewing all aliases on a website

You can access a list of all aliases defined on the website (for all pages).

Open the application.PagesSelect a page with an alias in the content tree.Open the tab. Properties -> URLs

Edit ( ) any alias.Click in the page header.View all aliases

Page 102: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

The information provided can help you avoid URL collisions when creating new aliases, and allows you to manage aliases from a singlelocation.

Automatic creation of new page aliases

You can configure the system to automatically create new page aliases when a user sets a new URL path, alias or extension for a page:

Open the application.SettingsSelect the category.URLs and SEOEnable the setting.Remember original URLs when moving pages Click .Save

 

Wildcard URLsWildcard URLs provide a way to load content dynamically depending on the page URL.

You can find an example on the sample Community starter site. The page uses wildcard URLs to display user profilesMembers -> Profile— a single page displays profiles of various site users.

How is it achieved? Log in to the administration interface and open the application. Select the page in the contentPages Members -> Profiletree and switch to the tab. You can see in the field. The part ofProperties -> URLs /Members/{UserName} Page URL path {UserName}the URL is the actual wildcard.

If you type into your browser, the page opens. The system converts the wildcard part <domain>/Members/David.aspx Members -> Profileof the URL ( ) into a query string parameter, so that the internal URL actually looks like David <domain>/Members/Profile.aspx?username=

. The name of the parameter is taken from the name of the wildcard, and the value is the matching part of the entered URL. The David User web part which is placed on the page recognizes the parameter in the rewritten URL and displays David's profile.public profile username

 

Default wildcard values

You can set default values for wildcards in URLs. Use the following format in the URL path: . Default{<wildcard name>;<Default value>}values are useful when you want to have a wildcard in a page's URL path, but expect that the wildcard part may not always be present in theURL. The default value ensures that the system always generates the URL with a certain value in the wildcard.

For example, open the sample Community site in the application and select the page. Switch to the taPages Members Properties -> URLsb, enter into the field and click . If you now access the Members page on the live site, the/Members/{UserName;David} Page URL path Savepage displays David's profile by default.

Additionally, the current value of a wildcard is always used as the default value in all other URLs on the given page that contain the samewildcard. For example, imagine a scenario with two pages that use a wildcard in their URL path: the first set to and the/Profile/{UserName}other to . When the first page is accessed through the URL , navigation links to the/Profile/{UserName}/Details <domain>/Profile/Andy.aspxsecond page are automatically generated as . The current value is used even for wildcards that have a<domain>/Profile/Andy/Details.aspxdifferent default value set in the URL path.

Using wildcard URLs on multi-language sites

The is unique for each language version of a page. As a result, you may encounter problems when referring to a page usingPage URL patha wildcard URL on multi-lingual sites.

For example, on the sample , the page has the set to . IfCommunity Starter site Members/Profile Page URL path /Members/{UserName}you create a version of this page in another language, the Page URL path is automatically changed to . This/Members/{UserName}-1happens because the URL path needs to be unique for every page.

Now let's presume that you have the following link leading to the page: . In the original version, it works<domain>/Members/David.aspxfine. But if you try to click the link in the second language version, no profile is found, because the URL in this language version is <domain>/

. The modification added to the end of the URL path changes the wildcard value representing the user name, whichMembers/David-1.aspxmakes it impossible to find a matching user profile.

If you want to keep such links functional in all language versions, you need to define the path via the s/Members/{UserName} Page aliases ection, as described in . When creating the alias, select in the drop-down list. Before you can do this, youSetting page aliases (all) Culturemust erase the Page URL path value for both language versions of the page.

Dots in wildcard URLs

You may encounter problems when a string containing a dot character (".") gets into the wildcard parts of URLs. A typical example of this canbe found on the page of the sample Community Starter Site.Members -> Profile

The page's Page URL path is . For the username , the profile page URL is /Members/{UserName} jack.smith http://<domain>/Members/ja. Since the last part of the URL after the last dot ( in this case) represents the extension, the URL returns a 404 error.ck.smith smith

Keep in mind that it is not possible to specify wildcard values through page aliases. An alias only makes the pagedefaultaccessible through a given URL, it does not enforce this URL for the page.

Page 103: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

1. 2.

1. 2.

3.

1. 2. 3.

4.

To prevent this, registration on the sample Community Starter Site doesn't allow user names with dots. If you need to allow dots in usernames and use wildcard URLs with user names at the same time, move the wildcard in the Page URL to the middle of the URL, for example: /Members/{UserName}/Profile 

Extensionless and custom URLsYou can configure the system to use extensionless URLs or custom URL extensions.

Setting up extensionless URLs

URLs without extensions are the standard for most websites. For example: http://www.example.com/news

To use extensionless URLs, you only need to adjust the settings in the Kentico administration interface:

Open the application.SettingsSelect the category.URLs and SEOSet the setting to an .Friendly URL extensions empty valueClick .Save

Now when you go to the live website, the system renders all URLs in menus and listings without an extension. You may need to manuallyupdate static links that were created with the default extension..aspx

  

Using custom URL extensions

Custom URL extensions allow you to change the default extension to  , , or any other value..aspx .html .asp, .php

For example, instead of the default , you can have URLs ending with . :aspxhttp://www.example.com/news. html

.htmlhttp://www.example.com/news

To use custom URL extensions, take the following steps:

Adjust your web.config (IIS) to handle custom extensionsConfigure custom URL extensions in the Kentico settings

Configuring IIS to allow custom extensions

Edit your application's file.web.configFind the element inside the section directly under the web.config root (i.e. not under a specific <modules> system.webServer <loca

element).tion>Set the attribute to for the opening tag:runAllManagedModulesForAllRequests true <modules>

<system.webServer> ... <modules runAllManagedModulesForAllRequests="true"> <remove name="WebDAVModule" /> <remove name="XHtmlModule" /> <remove name="CMSApplicationModule" /> ... </modules>...</system.webServer>

You can now .configure the extensions in the Kentico administration interface

Setting custom URL extensions

Once you have performed the required low-level configuration, set the URL extensions in the Kentico administration interface:

Open the application.SettingsSelect the category.URLs and SEOType the required extension into the setting, for example: Friendly URL extensions .html

Make sure that your server fulfills the (when using IIS 7.5, the operating system must have Serviceminimum system requirementsPack 1 installed).

Page 104: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

1. 2. 3. 4. 5. 6.

Click .Save

Now when you go to the live website, the system renders all URLs in menus and listings with the specified extension. You may need tomanually update static links that were created with the default extension..aspx

Using multiple extensions

You can enter multiple extensions into the setting. Use the following rules:Friendly URL extensions

The first extension is used as the default.Enter other extensions, separated by semicolons. Pages can be accessed through URLs ending with all entered extensions.To allow extensionless URLs in combination with other extensions, enter a semicolon without an extension.

Examples:

;.aspx - extensionsless URLs by default, also allows aspx.html;.htm;;.asp - extension by default, also allows , extensionless and html htm asp

If you enable the setting in , the system redirects URLs with non-defaultRedirect pages to main extension Settings -> URLs and SEOextensions to the corresponding URL with the default extension. This can be useful for SEO purposes. For example, if you want to changeyour site's URL extension, and use the new extension when the pages are accessed from a search engine that has your website indexedwith the old extension.

Page-level extension settings

In addition to the global settings, you can set URL extensions for individual pages. The default extension that appears in the browser addressbar when opening pages is always taken from the global settings.

Open the application.PagesSelect the page in the content tree.Switch to the tab.Properties -> URLsSelect the check box.Use custom URL extensionsType the required extensions using the same rules as described above.Click .Save

Advanced URL extension settings

By default, the system keeps the URL extension (or extensionless URL) even when a occurs on the page. However, certain legacypostbackenvironments had problems processing postbacks with custom URL extensions. To prevent such problems, the system can automaticallyadd the extension to URLs when a postback occurs. If you need to force the .aspx extension for postback URLs, add the following key.aspxto the section of your web.config file:appSettings

<add key="CMSUseExtensionOnPostback" value="true" />

If you are using trailing slashes (enabled through the setting in ), you canUse URLs with trailing slash Settings -> URLs and SEOconfigure the system to only add the trailing slash for extensionless URLs. Add the following key to the section of your project'sappSettingsweb.config file:

<add key="CMSUseTrailingSlashOnlyForExtensionLess" value="true" />

With the key set to URLs with an extension do not have the trailing slash appended.true, 

Linking pages and files

Creating permanent links to pages

If you need to create a permanent link to a page, use a URL in the following format:

<domain>/getdoc/<page GUID>/<page name><extension>

<page GUID> is the globally unique identifier of the page. You can find a page's GUID value in Pages -> Properties -> General ->.Node GUID

Even if the option is disabled, files ( pages) can be accessed under their physicalUse custom URL extensions cms.fileextensions.

Page 105: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

The value may contain any text — it is not used by the system, but allows you to specify the exact URL (e.g. for the<page name>purposes of search engine optimization). By default, the system uses the page's name.

Permanent links keep working even if you move the target page to another location.

For example:

http://www.example.com/getdoc/016fad52-0d69-46d5-80dc-daec9173c0c7/Products.aspx

is the permanent equivalent of:

http://www.example.com/company/products.aspx 

Linking specific language versions of pages

If you need to link to a specific of a page, you use a URL in the following format:language version

<domain>/getdoc/<page GUID>/<page name>/<culture code><extension>

For example:

http://www.example.com/getdoc/8FG7-84E394-FABD-5678/our-services/fr-fr.aspx

Displays the given page in French (if the page is translated). It is an equivalent of:

http://www.example.com/company/our-services.aspx?lang=fr-fr

Linking attachments

If you need to create a permanent link to a file uploaded as a page attachment, you use a URL in the following format:

<domain>/getattachment/<file GUID>/<filename><extension>

The is not the same as the page GUID. It is the GUID of the file in the database table. To find the<file GUID> CMS_AttachmentGUID of an attachment, click the attachment in and view the URL.Pages -> Properties -> AttachmentsThe value can contain any text.<file name>

For example:

http://www.example.com/getattachment/763c8921-be94-4610-99b4-25e8d3be5b08/logo.aspx

Parameterizing file retrieval

The system uses a handler whenever you use /getdoc, /getattachment or a direct URL based on the alias path of a CMS.File page.

You can use the following query string parameters to parametrize GetFile URLs:

Parameter name Description Sample value

guid Attachment GUID value.  

nodeguid Node GUID value.  

versionhistoryid Version history ID of the attachment. It canonly be used together with the parametguider.

 

width Resizes the image to a specified width (inpixels).

100

height Resizes the image to a specified height (inpixels).

400

maxsidesize Resizes the image to the specified size ofthe longest side (in pixels).

500

Page 106: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3.

disposition Indicates the output disposition of the file.

You can use one of the following dispositionvalues:

inline - opens the file in the browserwindow if possibleattachment - opens the browser's"Save or Open" dialog

inline

or

attachment

 

Custom handling of URL path valuesTo ensure that URLs can be processed correctly, the system checks text values for unsafe characters before they are added to the URLpath, and makes any necessary changes. This affects fields such as page aliases, page URL paths, forum names, post subjects etc.

By default, the process includes removal of diacritics and replacement of all forbidden characters according to the settings defined for thegiven site (as described in ). Characters with diacritics are replaced by the appropriate base character, forURL format and configurationexample is converted to .ü u

If you need to change the default behavior in any way, you can register and implement a handler for one or both of the following systemevents:

OnBeforeGetSafeUrlPart - occurs whenever a potentially unsafe text value is added to a part of a URL, e.g. when the page aliasfield is saved (or filled automatically based on the page's name). This event can be used to customize the final format of URL paths.For example, you can convert characters from an international character set to an equivalent in Latin characters (ASCII) or specify aunique replacement string for particular forbidden characters.

OnBeforeRemoveDiacritics - occurs whenever the system removes diacritics from text. This is one of the default steps performedwhen creating safe URLs, but the event is also triggered during many text parsing operations that are not directly related to URLs(for example when indexing text for the ).Smart search

The events are members of the and classes respectively, which can be found under the namespace.URLHelper TextHelper CMS.Helpers

The handlers for these events have the source text included as a string parameter passed by reference, so any changes that youmake in the code are reflected in the result.Both handlers have a return value that indicates whether the default functionality should also be performed after the handlerbooleanis executed. For this reason, it is highly recommended to set the return value to for all but the most extensive customizations.true

 

  

Example

The following example demonstrates how to define handlers for the forbidden character events:

Open your Kentico web project in Visual Studio.Expand the folder (or if your project was installed as a web application) andApp_Code CMSApp_AppCode -> Old_App_Codecreate a new class.Edit the class and add the following references:

1.

2. 3. 4.

Resizing images

If your website has the setting enabled in Resize images according to device profile Settings -> Content -> Content, the system may override the , and parameters used in GetFile URLs of image files.management width height maxsidesize

When a user views the website on a device that matches a , images automatically their maximum side size todevice profile reducethe larger of the dimensions set for the given profile.

To configure the dimensions of device profiles:

Open the application.Device profiles

Edit ( ) a profile.Set the and properties.Preview width Preview heightClick .Save

If you wish to disable device profile resizing for an image, add the parameter to the GetFile URL.resizemode=1

Warning

Only return a value if you are sure that your custom handler can take full responsibility for all URL safety or diacritics removalfalserequirements.

Disabling the default system functionality may prevent parts of your website from working correctly, particularly in the case ofhandlers for the event.OnBeforeGetSafeUrlPart

Page 107: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

4.

5.

6.

using CMS.Base;using CMS.Helpers;

Delete the default class declaration and its content. Instead, add the following code:

[URLFormatHandlerLoader]public partial class CMSModuleLoader{ /// <summary> /// Custom attribute class. /// </summary> private class URLFormatHandlerLoaderAttribute : CMSLoaderAttribute { /// <summary> /// Called automatically when the application starts. /// </summary> public override void Init() { // Assigns a handler to the OnBeforeGetSafeURLPart event URLHelper.OnBeforeGetSafeUrlPart += Custom_OnBeforeGetSafeUrlPart;

// Assigns a handler to the OnBeforeRemoveDiacritics event TextHelper.OnBeforeRemoveDiacritics += Custom_OnBeforeRemoveDiacritics; }

}}

This extends the partial class and defines a new attribute. The override the method of the CMSModuleLoader Init CMSLoaderAttri attribute class allows you to assign custom handlers for events.bute

Add the definition of the handler into the private class:Custom_OnBeforeGetSafeUrlPart

static bool Custom_OnBeforeGetSafeUrlPart(ref string url, string siteName,EventArgs e){ // Replaces all & characters with the word "and" url = url.Replace("&", "and");

// Returns true to indicate that the default URL replacements should also beperformed (i.e. removing diacritics and forbidden characters) return true; }

Add the handler:Custom_OnBeforeRemoveDiacritics

This code replaces all ampersand (&) characters with the word . For example, a page named hasand Products & Servicesits default page alias generated as , which is then used in the page's URL. This example is onlyProducts-and-Servicesmeant as a simple demonstration. In realworld scenarios, the handler can be much more complex, for example whenmapping the character set of an international language to appropriate ASCII characters or words.

The parameter of the handler contains the code name of the site under which the event occurred. This can besiteNameuseful if you need to access the forbidden character settings of the given site in your custom code.

Page 108: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

6.

7.

1. 2. 3.

static bool Custom_OnBeforeRemoveDiacritics(ref string text, EventArgs e){ // Replaces German special characters text = text.Replace( "ä", "ae" ); text = text.Replace( "ö", "oe" ); text = text.Replace( "ü", "ue" ); text = text.Replace( "Ä", "Ae" ); text = text.Replace( "Ö", "Oe" ); text = text.Replace( "Ü", "Ue" ); text = text.Replace( "ß", "ss" );

// Returns true to indicate that the default diacritics removal should alsobe performed return true; }

Save the file. your project if it was installed as a web application.Build

The system applies the changes when creating new URLs and when removing diacritics from text.

 

Search engine optimizationSearch engine optimization (SEO) is a process that attempts to improve the page rank of a website. The rank determines the site's organicposition in the results of web search engines (such as Google). Being higher in search results benefits the site by naturally attracting morevisitors.

While Kentico cannot guarantee by itself that your website will have good search engine optimization, it provides many features that simplifyrelated configuration tasks and make it easier to follow general best practices. Additionally, the system ensures a solid SEO foundation bygenerating pages with valid, standards compliant output code, and page URLs in a search engine friendly format.

 

Configuring websites for SEOThis page describes the Kentico settings that can affect your website's SEO.

Editing the metadata of pages

An important SEO consideration is the metadata of individual pages. To edit the metadata of a page:

Open the application.PagesSelect the corresponding page in the content tree.Open the tab.Properties -> Metadata

You can set the following SEO-related properties:

Property Description

This ensures that the system uses custom replacements for German special characters rather than simply stripping thediacritics and leaving the base character.

Note: The customization does not automatically change the aliases and URL paths of existing pages until the current value ischanged or saved.

Tracking search engine traffic

You can use web analytics to review the results of your website's SEO. Tracking is supported for:

Traffic gained from search enginesThe activity of web crawlers on your site's pages

See: Monitoring traffic from search engines

Page 109: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Page title The page title is displayed to users in the header of their browser(or tab) when the page is viewed. Many search engines use this titlefor the page in their search result lists.

The system adds the content of the field into the element in<title>the HEAD section of the page's output.

Page description A brief description of the page and its purpose. The description canbe used for SEO purposes and when performing searches on thewebsite.

The system adds the content of the property as a description metaelement in the HEAD section of the page's output. Some searchengines index this tag.

 

  

SEO settings

You can configure most of the SEO functionality of your website through the application in the category. TheSettings URLs and SEOsettings here are divided into three main sections.

Search engine optimization (SEO)

Before search engines can provide results that link users to your website, they need to index the site using web crawlers (robots). Thesettings in this section allow you to use standard techniques for giving instructions to crawlers. You can also enable several options that helpcrawlers easily and accurately index the pages on your website.

Setting Description

Google sitemap URL These two settings set up the URL of the website's Google (XML)sitemap and the path of the source page. The sitemap allows you toinstruct web crawlers how to index the site's pages.

See also: Google Sitemaps

Google sitemap path

Robots.txt path Specifies the path of the page that generates the website's robots.t file.xt

See also: Managing robots.txt

Allow permanent (301) redirection If enabled, the system uses permanent (301) redirection instead ofstandard temporary (302) redirection. This is highly recommended,because it allows web crawlers to properly react to any changesmade on your website and pass page rank to the new or main URL.

Move ViewState to the end of the page If enabled, the system places the field at the end of theViewStateoutput code generated for pages. This helps search engine crawlersprocess more page content.

Use NOFOLLOW for user links If enabled, the system instructs search engine crawlers not to followlinks posted by users on , or in commForums Message boards Blogents. This is achieved by including the attribute in therel="nofollow"output code of all such link tags.

This can prevent damage to your website's search ranking causedby usergenerated links that lead to unrelated content. The settingcan also help stop spammers from passing page rank to other sites.

Global metadata settings

You can configure a prefix for the page title and description for all pages. Use the corresponding settings in .Settings -> ContentThe settings allow you to set the prefixes and also the overall format of the page title.

The default page title format is: {%prefix%} - {%pagetitle_orelse_name%}

The title format consists of the prefix value, followed by the page title value. If the page title value is not set, the page name isused.

Macro expressions in metadata

Use in format to dynamically insert values of page fields into metadata values.macro expressions (% ColumnName %}

Page 110: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3. 4. 5.

6.

7.

Default replacement page See the sectionAssigning replacement pages for deleted pagesbelow.

Assigning replacement pages for deleted pages

Removing pages can have a negative effect on your website's traffic. Visitors may find it confusing if pages suddenly become unavailable (forexample if they have a deleted page bookmarked). Another thing to consider is that deleted pages might be indexed by search engines,which then provide invalid links in their search results until they reindex the site's content.

You can mitigate these problems by setting up other pages as replacements when deleting pages:

Open the application.PagesSelect the page that you wish to remove.

Click ( ).DeleteSelect the check box.Display alternate page when visitors access the deleted page Specify the path of the .Replacement page

The field loads a default value from the setting of the current website, but you can enter aDefault replacement page different path for each specific case.

Enable or disable the following configuration options:

Copy all paths - if checked, the website uses the replacement page for all possible URL paths of the deleted page(including any page aliases). If false, the replacement only covers the main URL of the deleted page, i.e. the correspondingpage's custom URL path (if one is specified) or alias path.Include child nodes - if checked, the website uses the replacement page for all child pages removed along with the deletedpage.

Click Yes.

Once you confirm the deletion, the system automatically adds to the replacement page. These aliases ensure that the websitepage aliasesserves up the replacement page whenever a visitor requests the URLs of the deleted page. When combined with permanent 301 redirection,the replacement aliases also properly inform search engine crawlers about the change in your website's structure.

SEO - URLs

The settings in this section allow you to configure URL rewriting that focuses on avoiding issues with duplicate content, i.e. having the samecontent available under multiple URLs. Such problems can have a negative effect on search ranking, so it is recommended to set up aunified URL format.

Setting Description

Page 111: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Use URLs with trailing slash Specifies how the rewriter handles trailing slashes in URLs.Possible options:

Leave the URL as isAlways use URLs with a trailing slashAlways use URLs without a trailing slash

Redirect page aliases to main URL Enabling this setting ensures that pages always have only one validURL and other aliases are redirected to this main URL. The mainURL of a page is determined either by its alias path, or custom URLpath if one is specified.

Note: You can override this setting for individual pages aliasesthrough their property.Alias redirection

For more information about page URLs, see .Setting page aliases

Redirect invalid case URLs to their correct versions Determines how the system handles the letter case of characters inURLs. Available options:

Do not check the URL caseUse the exact URL of each pageRedirect all requests to lower case URLsRedirect all requests to upper case URLs

Redirect pages to main extension If enabled, the system ensures that all page URLs use the currentmain extension. The main URL extension is the first one specified inthe setting. Any URLs with a differentFriendly URL extension extension are automatically redirected to a corresponding URL withthe main extension.

Process domain prefix Determines how the rewriter handles the domain prefix in thewwwwebsite's URLs. You can leave the domain as it was entered orhave it rewritten to either always or never include the www prefix.

Note: This setting does not apply for IP addresses and topleveldomains.

Default page Allows you to redirect (permanent 301) all possible URLs thataccess the home page of your website to one single URL. Using aunified home page URL is highly recommended, because itprevents the duplicate content problem on your website's mostimportant URL.

You can choose from the following options for the home page URL:

Not specified - supports all possible home page URLs anddoes not perform any redirection.Use domain root - always uses the base URL of the website'sdomain name.Use page defined by default alias path - always uses theURL of the page specified by the website's Content -> Default

setting.alias pathUse default page URL - always uses the URL: default <domain>/default.aspx

SEO - Cultures

The options in this section are important when performing search engine optimization of multilingual websites. The following settings allowyou to set up unique URLs for different language versions of pages in a search engine friendly format.

Setting Description

Page 112: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

Force domain culture If checked, the system generates the domain name in page URLsbased on the current content culture. Whenever a user switches toa different language on the website, the URL is redirected to thecorresponding domain name.

You can assign cultures to domains by editing ( ) your site in the application:Sites

Set the culture of the website's main domain through the Visito property on the tab.r culture General

To define domain names for other languages, create Domain with an appropriately set .aliases Visitor culture

Note: You cannot use this option in combination with languageprefixes.

Use language prefix for URLs If enabled, the system generates page URLs with languageprefixes. A language prefix is a subdirectory inserted into the URL.The name of the prefix matches the culture code (or culture alias) ofthe content culture selected on the website.

Example: <domain>/en-US/Home.aspx

Allow URLs without language prefixes If enabled, URLs without language prefixes are allowed. Otherwisethe system redirects such URLs to a corresponding URL thatincludes a language prefix.

Only applies if is enabled.Use language prefix for URLs

See also:

Configuring URLs for multilingual websitesMultilingual websites

 

Google SitemapsKentico allows you to automatically generate sitemaps for your websites according to the Google Sitemap Protocol. Sitemaps help searchengines correctly index the content of websites and can have a significant effect on the resulting search ranking.

A sitemap is an XML file that lists the URLs of a website's pages along with additional metadata. Search engine crawlers (robots) use thesitemap data to determine which pages to index and how often to re-index pages. Sitemaps only serve as a recommendation and do notguarantee that all crawlers will index your website strictly according to the specified data.

For detailed information about the Sitemap protocol, see .http://www.sitemaps.org/ 

Setting the sitemap URL

To adjust the URL of your website's sitemap:

Open the application.SettingsSelect the category.URLs and SEOEnter the required URL into the setting.Google sitemap URLClick Save.

For example, the default value means that web crawlers can access the sitemap through the following URL:googlesitemap.xml

<website domain>/googlesitemap.xml

Defining the sitemap content

1. 2. 3.

Using the .xml extension

If you want to have your sitemap available under a URL with the extension, you need to configure your application to handle.xmlall types of request extensions:

Edit your application's file.web.configFind the section directly under the web.config root (i.e. not under a specific element).system.webServer <location>Add the following attribute to the element:<modules>

<modules runAllManagedModulesForAllRequests="true">

Page 113: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

5. 6. 7.

1. 2. 3. 4.

The system generates sitemaps for websites based on the pages stored in the content tree.

By the sitemap:default

Only contains pages of the typeCMS.MenuItemAutomatically excludes all pages whose parent page is not in the sitemap, such as pages stored under folders or custom page types

You can the content of your website's sitemap by creating a dedicated sitemap page:modify

Open the application.PagesCreate a new page in your website's content tree.Page (menu item)Place the web part onto the page.Google Sitemap (XML Sitemap)

Adding this web part stops the page from displaying standard content. Instead, the page returns an XML response with thesitemap data.The web part only generates output when the page is accessed on the live site.

Configure the content of the sitemap through the web part's properties.You can limit which pages are included in the sitemap by entering an appropriate .Path expressionBy default, the sitemap is generated in the same order as the pages appear in the content tree. Use the propertORDER BYy if you need to change the order of the pages generated by the sitemap. For example, sortsDocumentCreatedWhen DESCthe site map from the newest page (at the top) to the oldest page (at the bottom).

Open the application and select the category.Settings URLs and SEOEnter the path of your sitemap page into the setting.Google sitemap pathClick Save.

The sitemap generated by the web part replaces the default sitemap. Search crawlers can access the sitemap either under the main URLspecified in the setting, or directly through the URL of the page containing the Google Sitemap web part.Google sitemap URL

Troubleshooting:

If you encounter problems with pages missing in your sitemap, try checking for the following:

Manually excluded pages - specific pages may be excluded through their ( or sitemap properties Show in sitemap Exclude from).search

Incorrect content filtering - review the content filtering properties of your web part.Google Sitemap If the property is empty, the sitemap only loads pages. Add the page types that you wish toPage types CMS.MenuItemhave in the sitemap. You can use the asterisk (*) wildcard to specify all page types.

Broken page hierarchy - sections of the website may be excluded due to parent pages missing in the sitemap. To load all pagesregardless of the parentchild hierarchy in the content tree, disable the property of the Hide children for hidden parent Google

web part.Sitemap

Configuring sitemap settings for specific pages

By filling in the sitemap properties of pages, you can exclude specific pages from sitemaps or give search crawlers additional detailsdescribing how to index pages:

Open the application.PagesSelect the page in the content tree.Open the page's tab.Properties -> NavigationSet up the following properties:

Basic properties

Show in sitemap Sitemaps only list pages that have this property enabled.

Search & SEO

Exclude from search Marks the page to be ignored by all forms of search, includingsearch engines.

Enabling this checkbox excludes the page from sitemaps bydefault. However, individual web parts canGoogle Sitemapoverride this setting and generate sitemaps including pagesthat are excluded from search.

Customizing the default sitemap directly

If you do not wish to use portal engine pages and web parts, you can instead edit the markup of the ~/CMSPages/googlesitemap.a system page. This page generates the default sitemap for websites that have an empty setting.spx Google sitemap path

The control on the page provides the same configuration options as the web part.GoogleSitemap Google Sitemap

Page 114: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

1.

2.

3.

4.

Sitemap change frequency Determines the value of the page's tag in the<changefreq>sitemap. This metadata provides a suggestion to searchengines about how often they should re-index the page.

Choose a value that reflects how frequently the page's contentchanges.

Sitemap priority Allows you to inform web crawlers which pages you consider tobe the most important.

The system converts the selected priority to a decimal numberbetween 0 and 1 and adds the number as the value of thepage's tag in the sitemap. Web crawlers only<priority>measure the priority in relation to other pages on the website.

If you enter the URL of the sitemap into your browser, you can review the generated XML output. The system automatically creates therequired XML structure.

The elements represent individual pages.<url>The sitemap loads the values of the and tags from the data of the corresponding pages.<loc> <lastmod>The and optional tags are added for pages that have values in their and <changefreq> <priority> Sitemap change frequency Site

properties.map priority

Creating sitemap indexes

A single XML sitemap can only list up to 50 000 pages (URLs). If you need to include more pages, prepare multiple sitemaps and create asitemap index for your website:

Add any number of sitemap pages, each one containing its own web part.Google Sitemap

Separate your website's pages between the sitemaps by configuring the content filtering properties of the web parts.Each sitemap can contain a maximum of 50 000 items.Avoid duplicate content — do not list the same page URLs in multiple sitemaps.

Create the index as another page with a web part.Google SitemapSwitch the property of the web part to .Sitemap mode Sitemap indexConfigure the content filtering properties so that the sitemap index web part loads only the pages representing yoursitemaps.

Enter the path of your page into the website's setting.sitemap index Google sitemap pathThis ensures that crawlers process the sitemap index first.

The sitemap index points search engine crawlers to the other sitemaps, which then provide the lists of page URLs in the usual way.

Customizing the XML format of sitemaps

If you need to override the default XML format of a sitemap or index, you can specify a custom for the webtransformation Google Sitemappart or control. This allows you to react to any changes in the Sitemap protocol.GoogleSitemap

For example, the default transformation uses the following code to define the sitemap structure:CMS.Root.GoogleSiteMap

Page 115: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

<url> <%# GetSitemapItem("loc") %> <%# GetSitemapItem("lastmod") %> <%# GetSitemapItem("changefreq") %> <%# GetSitemapItem("priority") %></url>

The transformation method generates XML tags according to the sitemap protocol. The method's parameter specifies theGetSitemapItemtype of the tag, and the value is dynamically loaded from the data of the transformed pages.

In the final XML output, the web part automatically encloses the transformed items within either a or element<urlset> <sitemapindex>depending on the selected .Sitemap mode

Creating sitemaps for multilingual websites

Websites that offer content in use different URLs for different language versions of the same page.multiple languages

To include pages from all languages in your sitemap, you need to use one of the approaches described below.

Submitting separate sitemaps for different language versions of the website

One way to handle multilingual content is to present a separate sitemap for each language version of the website. This approach works bestif your website is fully translated into all supported languages.

You do not need to create multiple sitemaps. When submitting your sitemap to search engines, add the appropriate language modifiers to thesitemap URL. The format must match the URL structure that you use to identify language versions on your website.

See for detailed information about the available options.Configuring URLs for multilingual websites

Multilingual URL structure Description Examples of full sitemap URLs

Separate domain names Use the appropriate domain name whensubmitting the sitemap URL.

The sitemap automatically loads the pageURLs for the language that matches thedomain name.

http://domain.com/googlesitemap.xml

http://domain.fr/googlesitemap.xml

URL language prefixes Include the language prefix when submittingthe sitemap URL.

http://domain/en-us/googlesitemap.xml

http://domain/fr-fr/googlesitemap.xml

URL language parameters Add the language query string parameterwhen submitting the sitemap URL.

Warning: This approach is notrecommended. If your website does not useculture-specific domains or languageprefixes, URL conflicts may occur betweenthe different language versions of the samepage.

http://domain/googlesitemap.xml?lang=en-us

http://domain/googlesitemap.xml?lang=fr-fr

The sitemap automatically lists the pages from the language version of the website specified by the full sitemap URL.

Preparing one sitemap for all languages used on the website

You can list the URLs of the pages from all language versions of the website inside a single sitemap. This approach is most suitable forwebsites that are not fully available in the non-default languages, i.e. if only a limited number of pagesis translated.

Create a separate sitemap page for each language, each one containing its own web part.Google SitemapAssign the language through the property of the web part.Culture code

Important

To ensure that the sitemap dynamically presents pages for the language determined by the sitemap URL, you need to leave the C property of your web part with an value.ulture code Google Sitemap empty

Page 116: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

1. 2.

3. 4.

a. b. c. d.

Set the property to (prevents duplicate entries if your website uses the default content forCombine with default culture Nountranslated pages).

Add a page and configure it to load the language-specific sitemap pages.sitemap index

Each sitemap page lists the URLs of the pages available for a particular language. The sitemap index combines the output of alllanguage-specific sitemaps. You can then submit the URL of the sitemap index to search engines without any language modifiers. 

Managing robots.txtYou can give instructions to web crawlers and other robots using the , i.e. a file. The primary purpose ofRobots Exclusion Protocol robots.txtrobots.txt files is to exclude certain pages from search engine indexing. Like with , the provided instructions are only considered asSitemapsrecommendations and may be ignored by some robots. 

Creating a robots.txt file for your website

The most direct way to use robots.txt in Kentico is to physically add the text file into the root of your web project. However, this scenario doesnot allow you to assign different robots.txt files to specific websites (if there are multiple sites running on your installation). Additionally, it maybe difficult to access the file system in certain types of hosting environments.

The recommended approach is to create a dedicated page in your site's content tree and make it return the appropriate text response:

Open the application.PagesCreate a standard page.Page (menu item)

You can use the predefined page template to quickly implement robots.txt pages.SEO -> Robots.txt

Add a web part to the page.Custom responseConfigure (double-click) the web part to generate a valid robots.txt response according to the following steps:Custom response

Set the property to .Content type text/plainEnter an appropriate type, for example  .Encoding UTF–8Set the of the response to .Status code 200Add the actual robots.txt instructions into the property, just like you would in a physical text file. This propertyContentsupports , so you can dynamically load values from the current system data if needed.K# macro expressions

Page 117: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

Page 118: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

5. 6.

Open the application and select the category.Settings URLs and SEOEnter the path of your robots.txt page into the setting.Robots.txt path

You can specify a different value for each site by using the selector above the settings tree.Site

The output of the specified page is always available under the standard URL, regardless of the page's location<website domain>/robots.txtin the content tree. Compliant web crawlers read the instructions from this URL before processing other pages on the website.

 

Optimizing website performanceThe performance of your website depends on many factors:

The on your websitetotal number of pagesThe complexity of the website (the depth of the content tree, number of levels, number of per page)page nesting web partsCustom functionality added to the application or individual sitesThe hardware and environment on which the Kentico application and database server are runningThe available resources if the server is shared with other applications

Disable output filters

Applying adds steps to the processing of pages, and may slow down the website. If the output code of your pages is validoutput filterswithout filtering, you can disable the filters:

1. 2. 3.

Enabling the .txt extension

To ensure that the URL is available, you need to configure your application to handle all request extensions:<domain>/robots.txt

Edit your application's file.web.configFind the section directly under the web.config root (i.e. not under a specific element).system.webServer <location>Add the following attribute to the element:<modules>

<modules runAllManagedModulesForAllRequests="true">

1. 2. 3. 4. 5.

Excluding pages manually

You can also configure individual pages to be excluded from search engine listings without the need to prepare a robots.txt file.

Open the application.PagesSelect the given page in the content tree.Open the tab.Properties -> NavigationEnable the property.Exclude from searchClick .Save

The system automatically adds the following meta tag to the section in the HTML output of such pages:<head>

 <meta name="robots" content="noindex,nofollow" />

This instructs web crawlers not to index the page and to ignore any links in the content.

Tip: Finding sources of performance problems

Check the system's for errorsevent logUse the built-in to investigate pages with low performancedebugging toolsMonitor your application using (EMS license required)performance counters

Page 119: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

1. 2. 3.

1. 2.

3.

4.

5.

Go to .Settings -> System -> Output filterChoose your site in the selector. SiteType the / character (forward slash) into the following settings:

Excluded output form filter URLsExcluded resolve filter URLsExcluded XHTML filter URLsExcluded HTML5 filter URLs

the settings.Save

The system excludes all pages on the website from the output filter.

If you resolve your performance issues by disabling the output filter but need to keep the functionality to produce valid code, considerenabling output filter on only. For example, you may want to enable output filter in web parts for which you cannot guaranteeweb part levelvalid output, like the 'Editable text' web part.

Disable debugging tools

Always disable all Kentico before deploying websites to the production environment:debugging tools

Go to .Settings -> System -> DebugCheck the setting.Disable debuggingClick .Save

If you ever need to debug in the production environment, make sure you only enable the necessary Debug settings for a limited period oftime.

Configure file storage and processing

Loading files from the database is a demanding operation. on the server's file system provides better performance in mostStoring filescases:

Requirement: Your application needs to have the permission for the web project directory in the server's file system.Modify

Go to .Settings -> System -> FilesEnable the following settings:

Store files in: File systemGenerate thumbnails

Consider disabling the following settings to improve loading time of  :page attachments

Check if files are published (if you do not use on your website)workflow or content schedulingCheck files permissions (if you do need to restrict access to the attachments of )secured pages

If you don't need to protect your images with , we recommended disabling the watermarks feature to achieve the bestwatermarksperformance. Watermarks don't generate thumbnails on the file system so the performance can be affected. Disable:

Use watermark for page imagesUse watermark for media filesUse watermark for object attachments 

Click .Save

See also: Storing files

Disable permission checks

If you don't need to check permissions for pages in the content tree, we recommended disabling the site setting toCheck page permissions avoid unnecessary security checks. See for more information on the settings.hiding pages based on permissions

Organize your website's content in the most effective way

You can store your site's content either in , Custom tables, or . Each storage type is designed for aPages Module classes Media librariesdifferent type of data.

Storing large amounts of pages in the system can significantly affect the website's performance. Refer to fDefining website content structureor more information. You can also reduce the amount of pages stored in the content tree by setting up archival for outdated pages.

Optimize how the system behaves when editing content

Page 120: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

The following settings can significantly affect performance when creating and updating pages under a parent page that already has a largeamount of descendant pages :(nested in all levels)

Settings -> Content -> Content management -> New page order - we recommend using the 'Last' option in this settings as it isthe least performance demanding.Settings -> URLs and SEO -> Use name path for URL path - automatically updates the page alias. Changes to page aliases forpages with a large amount of descendant pages can have huge performance impacts as the system has to update the paths for allthe descendant pages as well.

Minimize lookup for content in the default culture

The following settings make the system look for default culture content if it isn't found in the requested (current) culture. This affects readperformance.

Settings -> Content:

Combine with default culture - to achieve better performance, consider translating pages that are often requested in non-defaultculture into additional cultures. Combine files with default culture - this setting is useful when the same pages are used in all cultures. Replicating filesCMS.Fileinto the most requested languages can positively affect the performance of individual requests. 

Optimize your data source components (web parts and controls)

Check the configuration of all components ( and controls) that load data from the database or other sources. For best practices andweb parts examples, see .Loading data efficiently

Minimize compilation requirements for pages

If your pages have long initial load times (for example after application restarts), try to reduce the number of components that need to becompiled:

Switch to the type for that do not contain controls or inline code.HTML page layoutsUse the type for simple (if the code is pure HTML or only performs basic loading of field values). ForText / XML transformationscomplex transformations with method calls or other advanced logic, the transformation type generally provides betterASCXperformance.Consider of the entire project before deploying to the production environment.precompilation

Check custom code

If you integrated custom code into the application (including JavaScript), please make sure it works correctly.

Avoid excessive database operationsReuse objects whenever possibleUse when you load data through the APIcustom caching

Try to comment out your code and see if the performance improves.

Limit scheduled tasks

You can conserve system resources by limiting the execution of :scheduled tasks

Disable all unnecessary tasks

Tip - Optimizing dynamic compilation when developing web site projects

During the development of type projects, you may experience long compilation times and slow performance after makingweb sitechanges to top-level files (the file and all files in the and folders). By default, the application compilesGlobal.asax Bin App_Codethe entire site after such changes, which can be a demanding operation.

To optimize the dynamic compilation, set the attribute of the element in your web.config fileoptimizeCompilations <compilation>to true.

<compilation debug="true" numRecompilesBeforeAppRestart="100"targetFramework="4.5" optimizeCompilations="true">

The dynamic compilation then only includes the files that were changed instead of the entire site.

Note: Optimized dynamic compilation improves performance, but may cause compilation errors if you change an API or object thatis used elsewhere on the site. For more information, see .Understanding ASP.NET Dynamic Compilation

Page 121: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

1. 2. 3. 4.

1.

2. 3. 4.

Increase the execution intervals of tasksRun tasks using the if possibleexternal Windows service

Enable minification and compression of resources

Use to reduce the size of CSS and JavaScript resources. This helps limit the volume of traffic betweencode minification and compressionthe server and clients.

Configure caching for your website

Refer to:

Configuring caching for detailed information about the caching mechanisms available in Kentico.Caching best practices for typical projects - for typical scenarios and our recommendations on how configure caching for bestperformance on these websites.

The following basic settings work well for most websites:

Go to .Settings -> System -> PerformanceChoose your website in the selector.SiteSet the caching settings:

Cache page info (minutes): 10 or moreCache content (minutes): 10 or moreCache files (minutes): 10 or moreClient cache (minutes): 0Allow client cache revalidation: yes (checked)

Click .Save

Note: Caching only improves performance on the second and subsequent page loads.

Use output caching

Output caching is the best way to significantly increase the performance of pages. We recommend caching page output whenever possible,particularly for high-traffic pages.

See for detailed information.Caching page output

To enable output caching:

Go to .Settings -> System -> PerformanceCheck .Enable output cachingSave the settings.Set up output caching for individual pages in .Pages -> Edit -> Properties -> General -> Output cache

Note: You may need to take additional steps to ensure that cached pages do not display outdated content.

Configure Page info caching

Page info cache is a special content cache for URL rewriting. Configure according to the recommended intervals.page info caching

Increase the application pool Idle Time-out in IIS

If your website has periods of inactivity (no requests for over 20 minutes by default), users may experience long delays when first openingthe site. To prevent this, set the property of your IIS application pool to a higher value:Idle time-out (minutes)

Open your console (Internet Information Services (IIS) Manager Start -> Control Panel -> Administrative tools -> Internet).Information Services (IIS) Manager

Select .<machine>/Application PoolsRight-click the application pool used by the Kentico application and select .Advanced SettingsEnter the required value into the property in the section.Idle Time-out (minutes) Process Model

Scale the hosting environment

If performance is still not satisfactory after you have taken all possible steps to optimize your website, you may need to upgrade your hostingenvironment:

Scale out - add more servers hosting the same content, and set up a web farmScale up - upgrade the hardware of your server

Page 122: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Loading data efficientlyMany pages use components ( or controls) to load and display data from the Kentico database, or other external sources.web partsTransferring data between storage spaces and the application can be a performance bottleneck.

To maximize data loading efficiency, consider the following points when setting up data source components.

Only load the data columns that you need

When loading data, you usually do not need all columns available in the source. The less data you retrieve, the faster your pages will be.

You can limit which columns data sources load through the (or ) property. Enter a list of separat Columns Selected columns column namesed by commas. We recommend loading only the columns that your components need to display the required results:

Columns used in the code of transformationsColumns inside Where conditions, Order by clauses etc.

When loading Kentico pages, the behavior of the property depends on the type of the data source:Columns

Standard Standard page data sources load if you leave the all columns Coluproperty empty. The full list includes the columns of the mns View_

database view, the coupled data columns ofCMS_Tree_Joinedindividual page types, and the columns.COM_SKU

By setting the Columns property, you specify exactly which of thecolumns the data source retrieves.

Note: In addition to the columns that you specify in the Columnsproperty, the data source always loads a set of specific columnsthat allow the system to identify individual pages  (NodeID, Docume

etc.).ntCulture,

Navigation Data sources of always load a set of defaultnavigation components columns required to correctly display pages in menus.

The property only allows you to add extra columns. LeaveColumnsthe property empty unless your component requires a field that isnot included in the defaults.

Note: To find a full list of the default navigation columns, use the SQL queries debugging tool and inspect the query performed by yournavigation component.

To learn how Kentico stores pages in the database, refer to .Page database structure

  

Load only the necessary page types

By default, a data source queries for all the available page types. You can improve the performance of the page by specifying only the pagetypes you need. The most efficient use is to display one page type per web part whenever possible.

You can limit specify this limit using the property.Page types

Load data from sections with 100 000 pages at most

We recommend displaying data from content tree sections that contain 100 000 descendant pages at most. That is, if you're displaying datafrom an section, make sure the section doesn't contain more than 100 000 pages in all levels. See /Articles Defining website content

for more information on the limitations of storing large amounts of pages.structure

Disable unnecessary processing

Page data sources provide features for filtering data according to the settings and status of the website's pages. All such operations addsteps to the data retrieval process and use the system's resources. By disabling filtering options that you do not need, you can reduceprocessing overhead when loading uncached data.

Consider the following when configuring the properties of page data sources:

If you are not loading sensitive data ( ), disable the data source's property.secured pages Check permissionsIf the website's pages do not use (i.e. pages are always published immediately), disable the workflow or content scheduling Select

property.only published

One way to create an easily scalable website is to .deploy your instance to cloud hosting

Page 123: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

If the web part often queries for pages that aren't translated in the current culture, consider providing a translation and disabling the property. Disabling the property can significantly improve the page's performance.Combine with default culture

Disable view state for web parts

By default, store data in the page's . If view state contains a large amount of information, it can slow down pageweb parts view stateperformance.

You can turn off view state for web parts that do not need to preserve their state across postbacks:

Open the application.PagesSelect the page containing the web part.On the tab, configure the given web part instance (double-click).DesignEnable the property in the category.Disable view state Performance

Disabling view state reduces processing overhead and the size of the page output that clients need to download. As a result, page load timeimproves (depending on the size of the view state).

Example - Optimizing a news list

The following example demonstrates how to maximize the performance of a web part. Repeaters load data from pages in theRepeaterwebsite's content tree, and use to format the data into HTML output.transformations

In this sample scenario, the Repeater displays news pages with the following configuration and environment:

The website does not use , all pages are published.workflowAll of the website's pages are publicly available without security requirements.The Repeater web part:

loads pages as the dataCMS.Newsuses an : NewsReleaseDate DESCORDER BY expressionrenders the data using the following type :Text transformations

<div class="listBoxWithTeaser"> <div class="teaser"> {% GetImage(NewsTeaser, "", 90) %} </div> <div class="description"> <a class="header bold" href="{% GetDocumentUrl() %}"> {% HTMLEncode(NewsTitle) %} </a> <p> <span class="black bold"> By {% GetUserFullName(NodeOwner) %} </span><br /><br /> {% NewsSummary %}  </p> </div></div>

Note: Test your web parts carefully after disabling view state. Web parts may not work correctly without view state in somescenarios.

List item transformation Expand source

Page 124: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4. 5. 6. 7.

8.

<div class="listDetail"> <h1> {% HTMLEncode(NewsTitle) %} </h1> <div class="teaser"> {% GetImage(NewsTeaser, "", 230, 230, 500) %} </div> <div class="contentText contentTextTeaser"> <div class="summary"> <p>{% NewsSummary %}</p> </div> <div class="text"> <p>{% NewsText %}</p> </div> </div> </div>

To optimize how the Repeater loads data, perform the following steps:

Open the application.PagesConfigure the Repeater web part on the tab.DesignSet the following (in the category):Columns Content filter

, , , , , , , NewsReleaseDate NewsTeaser NewsTitle NewsSummary NewsText NodeOwner NodeAlias, DocumentURLPath NodeAliasPath

Disable ( category). Select only published Content filterDisable ( category).Check permissions System settingsCheck the property category).Disable view state (PerformanceConfigure for the web part:caching

Content caching (caches the data loaded by the web part)Partial output caching (caches the web part's output code, the best option for static lists)

Click .OK

The web part now loads only the required data columns, skips unnecessary processing, and uses caching. This Repeater does not usefiltering or paging, so it is safe to disable view state. 

Configuring cachingCache is a storage space that duplicates previously requested data, and allows faster access to the data in the future. Correctly usingcaching can significantly improve the performance of your website.

Caching the content of web pages provides two primary benefits:

Quicker loading of data (retrieving data from the cache avoids communication with slower storage spaces, such as the website'sSQL database and file system)Reduction of unnecessary page processing on repeated requests

The built-in caching mechanisms of Kentico work primarily on the server side, and utilize the application's memory to store data. The systemsaves data into the cache in the form of . Cache keys have unique names that exactly identify the cached content. Each keycache keysstores the cached data itself (depending on the type of the cache), as well as other information such as the expiration time or .dependencies

Cache types

Kentico provides the following types of caching:

Output cache (full page) - caches the full HTML output of pages.Partial output cache - caches the HTML output of individual page components (web parts).File cache - stores files and resources, such as images, CSS stylesheets or JavaScript files. Supports both server and client-side

Item detail transformation Expand source

Column used in the ORDER BY expressionColumns accessed  inside the transformationsdirectly Column required by the method in the transformationsGetImageColumns required by the transformation methodGetDocumentUrl()

Page 125: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

caching.Content cache - stores structured data loaded by web parts and controls (for data sources, repeaters, etc.).Page info cache - stores basic information about pages.Custom code cache - allows developers to cache data used in custom code.

The following diagram shows the order in which the cache types are checked when handling requests (from top to bottom). If the requiredcontent is found in one of the cache layers, the system stops processing the request and sends the response without executing the pagecode or accessing the database. The cache types shown at the top of the diagram provide the best performance — the page response timeand processing costs increase as the request progresses through the cache layers.

 

General recommendations for configuring caching

We recommended configuring caching based on the character of the website and amount of the content so that too much memory isn’t takenby the cache. 

Take the following recommendations of caching configuration as typical ones, but you should still consider altering them based on the projectspecifics.

Amount of data vs. cache duration

If the memory footprint of the application is generally high, the caching interval may be too high.

Combining of caching with the same interval doesn’t provide value. Higher (closer to client) levels of caching should use smallerall levelsintervals than the lower levels. This allows the lower levels to pick up and save at least some overhead when higher level cache is notavailable.

Using distributed cache providers

Kentico currently does not support distributed cache instead of its native in-memory cache. You can use distributed cache for your customobjects, but not for native Kentico objects.

You can also configure external caching approaches for your web application, such as  , Content deliveryIIS Output cachingnetwork or Proxy caching. These are completely separate from the caching mechanisms in Kentico and are applicable to any

 the application provides. See for more information on using external caching with Kentico.content Caching page output

Page 126: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

1. 2.

Debugging cache access

Kentico provides native that you can use to verify if the system works as expected with the current cachecache access debuggingconfiguration.

Progressive caching

Progressive caching is an automated feature of Kentico which helps to reduce load and contention of first loads even when caching isdisabled. It acts as a minimum possible period cache at the given moment. Keep it enabled unless you experience some issues with cachebehavior (which may be introduced by incorrectly using ).caching in custom code

Page info caching

When a visitor requests an uncached page, the system queries the database for basic information about the page, including the following:

alias pathID and namepage metadata and other propertiesSKU information (for products)workflow information

The stores the retrieved information in the application's memory, which allows quicker access on subsequent requests. ThePage info cachesystem reuses the information multiple times during the processing of a single page, so page info caching is an important factor in thewebsite's performance. Page info caching cannot cause sites to display outdated information. The system automatically clears the cache forpages that are modified.

You can change the expiration time of the page info cache:

Open the application.SettingsExpand the category.System -> PerformanceType a number of minutes into the setting. Do NOT set the value lower than 10 minutes.Cache page info (minutes)Recommended settings:

Smaller sites - 60 minutes to 1 day (1440 minutes).Larger sites - 10 to 60 minutes.

Save the settings.

When a user requests a page, the basic information stays in the cache for the specified number of minutes, or until someone modifies therelated page.

Clearing the cache

To delete all data from the application's cache:

Open the application.SystemOn the tab, click .General Clear cache

The system removes all cached content managed by Kentico. 

Caching page outputOutput caching is the most effective way to increase page performance. The output cache stores the full source code of pages, i.e. the HTMLand client script that the server sends to browsers for rendering. When a visitor views a page, the server caches the output code in theapplication's memory. Until the cache expires, the system displays the page using the cached output. As a result, the application can quicklyserve requests without running the page code or communicating with SQL servers.

The implementation is similar to native the ASP.NET output cache, with better performance and options. Also, the Kentico output cache hasbetter support for clearing the cache than .external caching approaches

, especially when there is a chance of high load on individual pages.We recommend using output caching for all possible pages Thedrawback is that cached output can become outdated on dynamic pages, or if the website's content is updated. Output caching is not suitablefor pages that need to refresh frequently (for example pages that update based on user input, or have randomly generated content). Youcannot disable output caching for parts of pages.

However, the system provides several solutions that allow you to cache output even for pages with dynamic content:

Set dependencies for the output cache (allows automatic clearing of the cache)Adjust how the system caches multiple versions of pagesUse to create dynamic content inside cached pagessubstitution macrosDisable full page output caching, but use for sections of the page (individual web parts)partial caching

Tip: You can view the cache keys that store page info through the . The names of page info cache keyscache debugging interfacebegin with or .pageinfo pageinfobyurl

Page 127: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

1. 2. 3. 4. 5.

6.

1. 2. 3. 4.

5.

Configuring full page output caching

To use output caching for your website's pages:

Allow output caching globally:

Open the application.SettingsSelect the category.System -> PerformanceCheck .Enable output cachingSave the settings.

Enable output caching for individual pages:

Open the application.PagesSelect the page in the content tree.Open the tab.Properties -> GeneralSet the property to (in the section).Use output cache Yes Output cacheSpecify the number of . The value must be greater than 0, and determines the expiration time of the page's outputCache minutescache.Recommendations:

When used as the top-most level of caching ( ) - 1 minute to 1 hour.no external cachingWhen used with - 10 minutes to 1 hour. Generally, 10 times the value of the external cache.external cachingFor almost completely static sections of the site - up to 1 day.

Save the page.

When a visitor requests the page, the system saves the full output code into the cache. Until the cache expires, the system displays thecached output without processing the page. 

Setting output cache dependencies

The output cache of pages can become outdated when users update the website's pages and objects. Dependencies allow the system toautomatically delete cached content whenever related objects are modified. The output cache provides that clear thedefault dependenciescache for pages:

When a user modifies the given page's content, properties or page templateWhenever a postback occurs on the page

By default, pages do NOT delete their output cache when you modify other pages or objects whose data is displayed on the page. Forexample, if a page contains a list of news articles and you update one of the news pages, the page displays the old content until the outputcache expires.

To ensure that pages are always up-to-date, you need to set your own output cache dependencies:

Edit the page in the application.PagesSwitch to the tab.DesignAdd the anywhere on the page.Output cache dependencies web partDefine the dependencies in the web part's property. For more information and examples, refer to Cache dependencies Setting

.cache dependenciesClick .OK

The system clears the page's output cache whenever an object specified by the dependencies is modified. With the cache cleared, thesystem fully processes the page on the next request, and caches the new output.

Note: If the page uses a shared , the dependencies apply to all pages with the given template.page template

Using persistent storage for the output cache

By default, the application stores the output cache of pages only in the memory. Websites lose all cached content if the application restarts.You can configure the system to save the output cache in the server's file system, which provides more persistent storage. The output cachethen stores the content of the selected pages in both the application's memory and file system. The file system cache is used if the output ofa requested page is not found in the memory cache.

Use persistent caching to reduce memory footprint for sites that contain a large amount of contenttogether with regular output cachingthat you need to serve fast at any time.

We recommend enabling persistent storage if the application recycles often, or there is a possibility that it recycles during peaks.

To enable output caching for all pages on your site, edit the properties of the root page. The underlying pages need to have the Us property set to (this is the default state).e output cache Inherit

To apply different intervals to different sections - inherit the Use output cache property from different parent pages in the specificsections of the site. This allows you to set longer intervals for site sections with more static content.

Warning: Enabling the file system output cache may cause your website to serve outdated content. When clearing invalid outputcache due to changes made to pages or other dependencies, the system can only remove cache files if the corresponding cacheitem also exists in the memory. The file system cache remains outdated if the memory cache is not available when the invalidation

Page 128: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3.

1. 2. 3. 4.

1. 2. 3. 4.

1. 2. 3. 4.

1. 2. 3.

4.

To allow storage of output cache in the file system:

Go to .Settings -> System -> PerformanceType a number of minutes into the setting. The value must be greater than 0, andCache output in file system (minutes)determines the expiration time of the output cache files.We recommend setting the interval to a value between 1 day (1440 minutes) and 1 week (10080 minutes).

if your website contains many pages and is under heavy load, you can reduce the memory footprint and still keep theExample:cache available by configuring the interval to 1 day and configuring to 10 minutes.output cache Save the settings.

To enable persistent output caching for pages:

Open the application.PagesEdit individual pages on the tab.Properties -> GeneralSet the property to (in the section).Allow file system cache Yes Output cacheSave the page.

Deleting the output cache of pages

To manually clear the output cache of a page:

Open the application.PagesSelect the page in the content tree.Open the tab.Properties -> GeneralClick in the section.Clear output cache Output cache

The page's output is removed from the cache in the server's memory. The next time a visitor opens the page, the system runs the page'scode and saves the output into the cache again.

Note: The action does not delete the file system output cache. To manually clear the file system output cache, you needClear output cacheto delete all data cached by the application – open the application and click on the tab.System Clear cache General

Caching portions of the page output

If you cannot use full output caching on a page, consider enabling for sections of the page. The partial cache stores thePartial cachingHTML output of individual (components that make up the content of pages). Partial caching allows the system to refresh pages onweb partsevery request, but still improves performance by caching at least portions of the page output. You can set up partial caching for any numberof web parts on a single page.

Note: Partial caching is not available on .precompiled websites

Web parts do not use partial caching by default. You need to allow partial caching globally for your website, and then enable it for individualweb part instances.

Using partial caching

Use partial caching:

When individual parts of the page need different cache intervals or segments of the page have rich output that cannot be easilyhandled by .output substitutionsIf you have web parts that contain a lot of presentation code (for example, with nested API calls in transformations) then use partialcaching over .content cachingFor most of the master page content and any other content that is considered mainly static but is on pages where you cannot use full

.output cache

To allow partial caching:

Open the application.SettingsSelect the category.System -> PerformanceCheck the setting.Enable partial cachingSave the settings.

To enable partial caching for web part instances:

Open the application.PagesEdit the page containing the web part on the tab.DesignConfigure the web part instance (double-click).

occurs (for example after an application restart or if you have different expiration times set for the two caching types).

As a workaround, you can manually clear the file system output cache by clicking on the tab of the aClear cache General Systempplication.

To enable file system output caching for all pages on your site, edit the properties of the root page. The underlying pages need tohave the property set to (this is the default state).Allow file system cache Inherit

Page 129: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

5.

1. 2. 3. 4.

Expand the category, and type a number of minutes into the property. The value must bePerformance Partial cache minutesgreater than 0, and determines the expiration time of the web part's partial cache.Recommended settings:

Content changes often - 1 to 10 minutes.Mostly static content - 60 minutes to 1 day (1440 minutes).In combination with on the same page, the interval should be about 10 times the interval set for the outputoutput cachingcache. 

Click .OK

When a visitor opens the page, the system saves the HTML output generated by the web part into the cache. Until the cache expires, thesystem renders the page without processing the web part, and displays the cached output instead.

Caching multiple output versions of pages

Web pages often display different content based on variable parameters, such as user permissions, language preferences, or the device andbrowser used to view the page. To compensate, the output cache stores multiple versions of pages. The system then automatically servesthe appropriate cache version to visitors.

You can configure the conditions that determine when the system uses separate or shared output cache:

Open the application.SettingsSelect the category.System -> PerformanceClick next to the setting.Edit Output cache variablesEnable or disable the following output cache variables:

Cache key variable Ensures separate output cache for

username Every logged in user. Public users share the same outputcache.

sitename_____________________

Every site in the system.

Important: Leave the variable checked unless yoursitenamesites all have identical content on pages with the same path.

lang Each of pages.language version

browser Different types of web browsers.

cookielevel Different preferences of visitors.cookie level

deviceprofile Different detected for visitors.device profiles

domain Website domain names. Check to disable output cache sharingbetween of sites.domain aliases

Clearing of partial cache

By default, the system deletes the partial cache of web part instances:

When you modify the property configuration of the given web part instance. Whenever a postback occurs on the page containing the web part. Editable web parts ( , ) automatically clear their partial cache when the content of the parentEditable text Editable imagepage is updated.

Partial cache also clears whenever the application recycles and the cache doesn't support for .persistent storage

We recommend that you for web parts through the property (inset additional cache dependencies Partial cache dependenciesthe category). The system uses the dependencies to automatically clear the partial cache when the related objectsPerformanceare modified. Note that most web parts don't pick up the dependencies from their data sources, so you need to set theexplicitly property.

To disable the default dependencies listed above, uncheck and enable the Use default cache dependencies Preserve partial property.cache on postback

Tip: If you wish to use partial caching on pages that are not based on the , you can leverage standard portal engine ASP.NET.output caching for controls

The output cache creates separate cache items for pages according to the following variables:always

The page path (including the virtual directory and extension)The protocol in the request URL

Page 130: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

5.

viewmode The page view modes used by Kentico, such as , , design edit pr or . Currently, the system only uses caching foreview live site

the view mode.live site

Click .Save

The system adds the selected variables and their values into the names of output cache keys. As a result, the cache keys are unique for allcombinations of the required conditions.

For example, the variable ensures that the system stores a separate version of each page's output cache for every logged in user.usernameIf you disable the option, the output cache does not distinguish between users — if a page's output is cached for one user, theusernamesystem may load the same content for all other users (depending on the remaining output cache variables).

Using external caching approaches

You can also configure external caching approaches for your web application, such as , Content delivery network or ProxyIIS Output cachingcaching. These are completely separate from the caching mechanisms in Kentico and are the applicationapplicable to any contentprovides. When clients request a page whose valid output is cached on by the external cache, the server returns the response withoutrequiring any processing from Kentico.

As these approaches do not support automatic cache clearing, their caching intervals define the largest amount of time for which the data onyour may remain outdated.

Recommendations:

Configure very short intervals (30 seconds to 5 minutes) for sites experiencing very high peak loads.If your site mainly consists of static content, you can use longer intervals.Do not use floating intervals (intervals which extend when an item is accessed), as the cache isn’t controlled by Kentico andtherefore it could be hard to flush.

 

Using output cache substitutionsOutput caching is a powerful tool for improving page performance. However, some pages have sections of content that need to be dynamic.Substitution macros allow you to add variables onto pages, which the system dynamically resolves even when loading the content from theoutput cache. By using substitutions, you can cache the output of pages, but still keep pieces of content that update according to the currenttime or other context information.

By default, the system does not provide any substitution macros. Developers need to define the substitutions according to the requirementsof your website.

To insert output cache substitutions into page content, write expressions in format: {~SubstitutionName~}

 

Defining substitution macros

The system resolves substitution macros by calling the methods registered as handlers for the ResponseOutputFilter.OnResolveSubstitut event. To define substitutions, implement a handler method that converts individual substitution expressions into the appropriate results.ion

Tip: You can configure how the system shares through the setting. The variablespartial output cache Partial cache variablesapply globally to the partial cache of all web parts.

Note:

External caches don't support , or , as they are usually very basic and can’tA/B testing MVT testing content personalizationtell one client context from another for the same URL.When using external static cache or output cache and your website uses postbacks, you should disable using of ViewStat

to avoid ViewState inconsistencies introduced by output cached originally for other session.eUserKeyKentico only supports the  policy for IIS output caching. You cannot use Kernel-mode caching.User-mode

Note: Substitution macros work even on pages that do not use output caching.

Tip: You do not need to create substitution macros for all types of dynamic content. By default, the output cache stores multipleversions of pages based on variables such as the user name, language and browser type. The system serves the appropriatecache version to visitors according to these variables.

See the section for more information.Caching multiple output versions of pages

Page 131: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4. 5. 6. 7.

You need to register the event handlers at the beginning of the application's life cycle. Choose one of the following options:

During the initialization process of the application itself — use the partial class in the folder.CMSModuleLoader App_CodeWhen initializing  — override the method of the module class.custom modules OnInit

Example

The following example demonstrates how to create a substitution macro that displays the current time:

Open your project in Visual Studio.Create a class in the folder (or on web application projects).App_Code CMSApp_AppCode -> Old_App_CodeEdit the class and add the following references:

using CMS.Base;using CMS.OutputFilter;

Extend the .CMSModuleLoader partial classCreate a new class inside that inherits from .CMSModuleLoader CMSLoaderAttributeAdd the attribute defined by the internal class before the definition of the partial class.CMSModuleLoaderOverride the method inside the attribute class and assign a handler method to the Init ResponseOutputFilter.OnResolveSubstitut

event.ion

Page 132: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

7.

8.

[SubstitutionLoader]public partial class CMSModuleLoader{ /// <summary> /// Attribute class that registers substitution handlers. /// </summary> private class SubstitutionLoader : CMSLoaderAttribute { /// <summary> /// Called automatically when the application starts. /// </summary> public override void Init() { // Assigns a handler method to the event that the system triggers whenresolving substitution macros ResponseOutputFilter.OnResolveSubstitution +=ResolveCustomOutputSubstitutions; }

/// <summary> /// Resolves output substitutions. /// </summary> /// <param name="sender">Sender object</param> /// <param name="e">Event argument object representing the substitutionexpression that is being resolved</param> private void ResolveCustomOutputSubstitutions(object sender,SubstitutionEventArgs e) { // Checks that the substitution expression is not resolved yet if (!e.Match) { // Branches according to the expression text of the substitution macro // You can define any number of substitution macros by adding furthercases switch (e.Expression.ToLower()) { // Handles the {~TimeStamp~} substitution macro case "timestamp":

// Flags the substitution expression as resolved e.Match = true;

// Returns the current time as the result of the substitution e.Result = DateTime.Now.ToString(); break; } } }

}}

Save the class file. the solution on web application installations.Build

The system now recognizes the expression, and resolves it into the current time. You can place the expression directly into{~TimeStamp~}the text content of pages, or anywhere within the output code.

Output substitutions vs. Macro expressions

The functionality of output substitutions is similar to Kentico . The main difference is that the system resolvesmacro expressionssubstitutions even when loading pages from the .output cache

Page 133: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

 

Caching files and resourcesFiles represent a significant part of the data that browsers load when rendering web pages. Common examples of files are images, and webresources such as CSS stylesheets, JavaScript code files or page attachments. The system provides two types of file caching mechanisms:

Client-sideServer-side

Client-side file caching

Client-side caching duplicates the data of previously requested files directly within browser applications or other clients (such as intermediatenetwork caches). Client cache is the most efficient type of caching, because it allows browsers to access files without communicating with theweb server. The system controls client caching by modifying the HTTP headers of file request responses.

To configure client-side file caching:

Open the application.SettingsSelect the category.System -> PerformanceEdit the settings in the category:Client-side file caching

Setting Description

Client cache (minutes) Sets the number of minutes for which clients consider cachedfiles to be valid and up-to-date (i.e. the length of the clientcache expiration time). Specifically, the setting determines howthe server sets the response header for file requests.Expires

The following values are possible:

0 - cached files are always flagged as expired, so clientsrevalidate files on each request. Does NOT disable clientcaching for files.More than 0 - until a cached file expires, clients load thefile's data from the cache without sending any requests tothe server. Provides the best file performance, but maycause browsers to display outdated content (if cached filesare modified before the expiration interval ends).

This setting only applies to dynamic files that are managed bythe Kentico application, for example stylesheets in the CSS

application. Physical files stored on the file systemstylesheetsmay use a different client cache expiration time:

Physical files served by the Kentico application through the handler use the GetResource.ashx CMSPhysicalFilesCac

web.config key. The default value is one week.heMinutesFiles that are requested directly use the IIS client cacheconfiguration.

Allow client cache revalidation If enabled, the server adds the directive to the must-revalidate response header of file requests. Ensures thatCache-control

caching clients always perform revalidation when requestingexpired files (most clients revalidate by default even without the

directive).must-revalidate

We only recommend disabling revalidation if you don't need thesite visitors to receive updated version of the content they haveloaded before.

Save the settings.

Clients (browsers) store files in their cache after requesting them for the first time (with an expiration time specified by the settings). Once the

For example, the macro also displays the current time. If you place both the macro and the sample {% DateTime.Now %} {~TimeSt substitution onto a page that uses , you get the following results:amp~} output caching

Macro - displays the time when the page was loaded for the first time and saved into the output cache.Substitution - updates the time whenever the visitor refreshes the page, even if the system loads the content from theoutput cache.

File caching works for the objects used in Kentico, even if they are not stored as physical files.CSS stylesheet

We also recommend using using code minification and compression.

Page 134: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

file expires, the client sends a request to the server, which can have the following results:revalidation

If the server contains a newer version of the file than the client cache, the revalidation fails and the server returns the full file(standard 200 HTTP response).If the file is unchanged, the server returns a 304 Not Modified response. The client cache keeps the file and refreshes the expirationtime. The client and server only exchange HTTP header information, which is significantly faster than fully reloading files.

 

Server-side file caching

When a client requests an image or other file, Kentico stores the file's data in the application memory.

For files stored in the , the cache holds the entire file, including binary data.databaseFor files stored in the , the cache stores only the main file records. Binary data is streamed directly from the file system.file system

The system can then serve subsequent requests for the file without needing to access the database or file system.

To set how long the server-side cache retains files:

Open the application.SettingsSelect the category.System -> PerformanceType a number of minutes into the setting. We recommend a value between 1 and 60 minutes (depending onCache files (minutes)the size of the files used on your website and the server's available memory).Save the settings.

Files stay in the cache for the specified number of minutes.

 

Caching the data of page componentsMany pages contain components ( or controls) that load and display data from the Kentico database, or other external sources. Forweb partsexample, when displaying a page with a list of news articles, the system retrieves text from the fields of news pages stored in the database,and then formats the data on the page.

Communication with storage spaces and processing of data are common weak points in the performance of pages.  helpsContent cachingthe system maximize the efficiency of data. The content cache saves data loaded by page components into the application's memory.Components then re-use the cached data on future requests.

The following types of web parts and controls support content caching:

Dedicated data sourcesRepeaters and viewers with built-in data sourcesNavigation components

Configuring content caching

You can set up content caching on two levels:

Globally for entire sites (all data components on the given site)For individual instances of web parts or controls

Note

The system always caches files for to prevent the application from overloading in case of at least one minute DoS attacks.

File caching cannot cause the website to display outdated content in most scenarios. The cache automatically removesfiles when they are modified.

If your project uses external file storage (such as or ), you need to clear the cacheAzure Blob Storage Amazon S3manually after making changes to files or wait for the cache to expire. The automatic clearing of the server-side file cachedoes not work for files in external storage.

If your website stores large files in the database, you can limit the maximum size of files allowed in the cache. Setting a limit stopsthe file cache from using an excessive amount of memory.

Type the allowed number of kilobytes into the setting. We recommend setting a limit between 100 kBMaximum file size to cacheand 1 MB (depending on the size of the files used on your website and the server's available memory).

We recommend caching all possible content.

You can ensure that components do not display outdated content by setting . Most non-custom data sourcescache dependencieshave default dependencies that automatically clear the content cache whenever the stored data is modified.

The cache is shared between web parts with the same setup on different pages. For example, featured products listings. This canimprove the performance of first page loads even when is used.higher-level cache

Page 135: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

1. 2. 3. 4.

5.

6.

1. 2. 3.

1. 2. 3. 4.

5.

1. 2. 3. 4.

To enable content caching globally:

Open the application.SettingsSelect the category. System -> PerformanceType a number of minutes into the setting. The value determines how long the content cache retainsCache content (minutes)data, and must be greater than 0.Save the settings.

With content caching enabled globally, the system caches the structured data of all page components by default.

To enable content caching for individual web part instances:

Open the application.PagesEdit the page containing the web part on the tab.DesignConfigure the web part instance (double-click).Type a number of minutes into the property (in the category). The value determines how long theCache minutes System settingscache stores the web part's data, and must be greater than 0.Recommended settings:

1 to 60 minutes, depending on the nature of the content.In combination with   on the same page, the interval should be about 10 times the interval set for the outputpartial cachingcache.

 (Optional) via the property. This allows you to ensure that the cash is cleared only inAdd dependencies Cache dependenciesrelevant cases.Click to save the web part's properties.OK

The system caches the data loaded by the given web part instance.

To disable content caching for specific web parts when content caching is enabled globally:

Configure the web part instance on the tab.DesignType (zero) into the property.0 Cache minutesClick to save the web part's properties.OK

The web part instance reloads data from the data source without caching. 

Setting dependencies for content cache

Cache dependencies allow the system to automatically clear cached data when related objects are modified. Web parts with data sourcesprovide default dependencies for the content cache, and you can also add your own custom dependencies for individual instances:

Open the application.PagesEdit the page containing the web part on the tab.DesignConfigure the web part instance (double-click).Add the dependencies into the property (in the category). For more information andCache dependencies System settingsexamples, see .Setting cache dependencies

Click .OK

The system deletes the web part's content cache whenever the specified objects change. With the cache cleared, the web part reloads thedata from the source the next time a visitor opens the page.

Sharing the content cache between components

The content cache stores the data loaded by page components (web parts or controls) under cache keys. By default, the system generates aunique cache key name for each component. The default name contains variables such as the web part ID, the name of the user viewing thepage, or the code name of the language selected for the page.

If you have multiple web part instances that load exactly the same data, you can share the cached content:

Open the application.PagesConfigure one of the web parts on the tab.DesignEnter a custom key name into the property (in the category).Cache item name System settingsCopy the key name into the property of all web part instances that load the same data.Cache item name

If you leave the box checked, the system automatically clears the web part's contentUse default cache dependenciescache:

Whenever the loaded data changes (depends on the web part)When you modify the property configuration of the given web part instance

Default dependencies do NOT cover data loaded via external or custom data sources. For example, custom query data only clear the content cache when the query itself changes, not the loaded data.sources

Page 136: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

When a visitor opens a page containing one of the web parts, the system loads the data and saves it into the cache under the specified key.While the cached content is valid, other web parts to which you assigned the same retrieve the data directly from theCache item namecache. This setup optimizes loading of content from the database (or other source) and avoids redundant keys in the cache.

Caching the page output of web parts

In addition to content caching, also support . The partial cache stores the full HTML output code of web partweb parts Partial output cachinginstances.

See for more information.Caching portions of the page output

 

Setting cache dependenciesCache dependencies allow the application to automatically clear cached data when related objects are modified.

The system uses to create dependencies between cached data and other objects. Dummy keys are cache itemsdummy cache keyswithout any data that represent objects or groups of objects. When an object is modified, the system "touches" the corresponding dummykeys, which causes the cache to delete all items that depend on the given dummy keys.

The following table shows which dummy cache keys are touched when objects are modified:

Object type Touched dummy keys Sample dummy key values

Pages(content tree nodes)

node|<site name>|<alias path>|<culture>node|<site name>|<alias path>nodeid|<node id>nodeid|<linked node id>documentid|<document id>documentid|<document id>|attachmentsnodes|<site name>|<page type codename>|allnodeguid|<site name>|<node guid>

+ for all ancestors of the modified page:node|<site name>|<alias path>|childnodes

node|corporatesite|/home|en-usnode|corporatesite|/homenodeid|12nodeid|34documentid|39documentid|39|attachmentsnodes|corporatesite|cms.menuitem|allnodeguid|corporatesite|a58ed488-5545-48d0- ...

node|corporatesite|/|childnodes

Objects(not pages)

<object type name>|all<object type name>|byid|<id><object type name>|byname|<code name><object type name>|byguid|<guid>

cms.user|allcms.user|byid|53cms.user|byname|administratorcms.user|byguid|1ced44f3-f2fc- ...

Metafiles metafile|<guid> metafile|1ced44f3-f2fc- ...

Page attachments cms.attachment|alldocumentid|<attachment document id>documentid|<attachment documentid>|attachmentsattachment|<guid>

cms.attachment|alldocumentid|32documentid|32|attachmentsattachment|1ced44f3-f2fc- ...

Tip: You can use to create dynamic cache item names based on variables such as query string parameters, ormacro expressionsother context data.

Partial caching has the following advantages and disadvantages when compared with content caching:

Better efficiency — the partial cache allows the system to directly send the web part's HTML output to the browser,without loading data or processing the web part at all

Usable by all web parts with visible output, not just web parts that load structured data

Not suitable for web parts whose output changes very frequently (for example lists with filtering)

No default dependencies on the data loaded by web parts — you need to set custom partial cache dependencies toensure that the content of web parts is up-to-date

Note: Set up partial caching for the web part that actually renders the content on the page (this may not always be the same webpart as the data source).

Sample scenario

A page with the alias path contains a Repeater web part with enabled. The repeater displays a list of/Products content cachingproducts (pages) placed under the Products page. When a visitor requests the Products page, the repeater loads the list ofproducts from the database, and stores the data in the content cache. The cached data has a dependency on the node|corporate

dummy key, which the system automatically creates. If a child page of the Products page is modified,site|/products|childnodesthe dummy key is touched, and the cache deletes the dependent data.

Page 137: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Page relationships nodeid|<node id>|relationships nodeid|5|relationships

Forum attachments forumattachment|<guid> forumattachment|1ced44f3-f2fc- ...

Avatars avatarfile|<guid> avatarfile|1ced44f3-f2fc- ...

Media files mediafile|<guid>mediafile|preview|<guid>

mediafile|1ced44f3-f2fc- ...mediafile|preview|1ced44f3-f2fc- ...

Page templates template|<id> template|12

Custom table data records customtableitem.<custom table codename>|allcustomtableitem.<custom table codename>|byid|<id>

customtableitem.customtable.sampletable|allcustomtableitem.customtable.sampletable|byid|2

 

Adding custom cache dependencies

You can set custom cache dependencies for the following types of cache:

Full output cache of pages (add the web part onto the page)Output cache dependenciesPartial output cache of web parts or controls ( property)Partial cache dependenciesContent cache of web parts or controls ( property)Cache dependenciesCached data in custom code

Create the dependencies by typing the names of into the appropriate property. Each dummy keydummy cache keys Cache dependenciesmust be on a separate line when entering dependencies in the web part properties dialog. The system automatically clears the related cachewhen the specified dummy keys are touched (i.e. when the corresponding objects are modified).

Examples

 

Debugging cacheIf you encounter unexpected caching behavior or any problems related to the cache, you can use the system's debugging functionality to:

Check the exact content of the application's cacheMonitor caching operations for web requests

You can access the system's debugging interface through the application.Debug

Viewing the stored cache items

On the tab, you can see which and ( ) are currently stored in the system'sCache items Data items Dummy keys cache dependenciesserver-side cache.

Scenario: You have a web part displaying information about users. You need to clear the web part's whenever onepartial output cacheof the user's data is modified.

Solution: Add the dummy key into the web part's property. The system touches this dummycms.user|all Partial cache dependencieskey whenever the data of a user in the system changes.

Scenario: You have a web part displaying information about one specific user — the administrator (UserID is , UserGuid is 53 849711D0). You need to clear the web part's when the administrator's user account data-739D-412E-92B6-FE40EDCADC4A partial output cache

is modified.

Solution: Add any of the following dummy keys into the web part's property:Partial cache dependencies

cms.user|byid|53cms.user|byname|administratorcms.user|byguid|849711D0-739D-412E-92B6-FE40EDCADC4A

Scenario: You have a web part displaying a list of news articles. The web part loads the data from all  pages on the website.CMS.NewsThe site's code name is . You need to clear the web part's when any of the news pages is updated.NewsSite partial output cache

Solution: Add the dummy key into the web part's property.nodes|newssite|cms.news|all Partial cache dependencies

Page 138: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

You can delete individual cache keys by clicking ( ) next to the corresponding items. To remove all items from the cache, click Delete Cle.ar cache

Clicking ( ) next to a cache key opens a new window showing detailed information about the cached object:View

Key - the key under which the object is stored in the cache.Expiration - date and time when the cache item will expire (i.e. will be removed from the cache).Priority - Kentico uses two priorities for cache items: and (will not be deleted from the cache as the server freesHigh NotRemovablesystem memory).Dependencies - list of on which the cache item depends. The system removes the cache item if any of the dummydummy keyskeys are touched (modified).Object type - the type of the cached item.Fields - the fields storing the actual data of the cached item (depend on the item's object type).

Page 139: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

If you need even more information about a cached object, click ( ) next to the item in the list of cache keys. Debugging cache keysDebugallows you to browse the full system data of the given object, including all properties, variables and related objects.

 

Debugging cache access

The cache access debug allows you to view the cache operations that the system performs for individual web requests (adding items to thecache, loading data from the cache).

Enabling the cache access debug

To use cache access debugging, you need to adjust the settings in :Settings -> System -> Debug

Setting Description

Enable cache access debug Enables cache access debugging and the tab in theCache access application.Debug

Display cache access debug on live site If enabled, cache access debug information is also displayed at thebottom of each page on the live site. Requires cache accessdebugging to be enabled.

Debug cache access of UI pages If enabled, the cache access debug also covers requests for pagesof the administration interface. Requires cache access debugging tobe enabled.

Cache access debug log length Sets the maximum length of the cache access debug log on the Ca tab of the debugging interface, i.e. the number ofche access

requests for which debug information is preserved and displayed.

If empty, the value of the setting is used.Default log length

Display stack information If enabled, the system tracks the code stack when debugging cacheaccess and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logcache.log

Log cache access to file If enabled, the system saves the cache access debug log into the lo file in the folder. This option does notgcache.log ~\App_Data

require cache access debugging to be enabled.

Monitoring cache access

To view which cache operations the system performed for recent web requests:

Open the application.DebugSelect the tab.Cache access

You can see the URLs of web requests and the time when the system processed the requests. The table below each request contains thecache items that the system accessed during the request. The table provides the following information for each cache item:

The type of (Get, Add)AccessThe name of the accessed Cache keyThe cache item's dependenciesThe object type and size of the cached DataThe in which the cache item was accessed (API method)Context

Click on the method to see the stack trace of the cache accessIf you enable the option at the top of the interface, the stack trace is displayed for all cache items.Show complete context

Click to remove all records in the cache access debug. To remove the actual data from the system's cache, click Clear debug log Clear.cache

Note: The list of cache items does not display the stored for page components.partial output cache

Tip: You can also enable cache access debugging through the "debug everything" settings in the section of the settingsAll Debugcategory.

Page 140: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Clicking ( ) next to a cache key opens a new window showing detailed information about the cached object:View

Key - the key under which the object is stored in the cacheExpiration - date and time when the cache item will expire (i.e. will be removed from the cache)Priority - Kentico uses two priorities for cache items: and (will not be deleted from the cache as the server freesHigh NotRemovablesystem memory)Dependencies - list of on which the cache item depends. The system removes the cache item if any of the dummydummy keyskeys are touched (modified).Object type - the type of the cached itemFields - the fields storing the actual cached data (different for each object type)

 

Caching best practices for typical projectsThe following examples cover some typical cache configurations. Note that for your individual projects, you may (and mostly will) need toalter them to some extent.

You can use similar configuration also for smaller projects or projects with lower load, in general:

The more content the site has, the shorter caching period should be used to reduce load on the system's memory.The higher load you expect on the site, the and longer caching intervals you should use.higher levels of cachingWhen there is a higher load to a specific part of the site, the section should use longer cache intervals. Balance this well with the firstpoint.Configure shorter cache intervals if the process has less memory available.When you need to keep the content updatable, use either short enough caching intervals or with properly levels of cache configured

(cache dependencies).flushing

Heavily accessed corporate sites

Websites of this type are mostly static, with lower amount of content, but a heavy load.

Use static or based on the amount of load to handle.external cache output cacheUse with large intervals.persistent output cacheUse larger cache intervals on all the enabled caches as the content is mostly static.Simulate first loads to identify weak spots, use and bulks loads to provide efficient first load times when cache is notAPI cachingavailable.Use client caching with larger interval, revalidation is usually not necessary.Use with larger file size and larger cache interval.file cachingIf possible, disable .per user and other contextual caching

Heavily accessed news sites

News sites are an example of frequently updated websites with heavy load.

Use static external cache, preferably a Content delivery network (CDN) with shorter time interval (for example, 1 minute), make sureyou use it for both pages and files.

Page 141: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Use and carefully set up to allow efficient flushing of the cache. Use shorter time intervalsoutput cache output cache dependenciesas there is a large number of pages (for example, 10 minutes).Use client if you expect images and files to update, or without revalidation if you don’t expect thefile caching with revalidationpublished content to change. Use with shorter interval and file size to not spam the server memory too much.file server cachingSimulate first loads to identify weak spots. It is likely that a such site will share content between multiple sections. This means thatyou may need to configure content caching with some meaningful time interval so that you don’t spam memory too much (forexample, 1 hour). The assumption is that the shared content won’t have many unique instances.If possible, disable .per user and other contextual caching

  

Heavily accessed sites with login

For example, websites with member-only areas.

If the only information which changes based on login is the username in header, configure output caching to anNOT cache per userd leverage to populate user name.output substitutionsIf login influences the availability of content, use output caching configured to with shorter time period (morestore content per userusers = more similar cache items).If only smaller portions of an otherwise large website are influenced by login, consider using to lower the memorypartial cachingfootprint.

Heavily accessed e-commerce sites

Use with shorter time interval (for example, 1 minute). Product prices may change based on factors other thanoutput cachediscounts, and this helps you keep the customer updated.Use output as the content may vary by user.caching per userDo not use caching for checkout process pages, these need to be loaded with new information every time.Use on master page components and static components of checkout process to make it as efficient as possible (evenpartial cachingwhen its internals do not use caching). Use larger time interval on the components as they will be static most of the time.Use without revalidation, as customers will probably visit same listings/products several times during their session.file client cachingUse with longer time interval (this assumes that images used on the site won’t change that much) and lower filefile server cachingsize limit (most of the files will be product images).When there are a lot of products in the E-shop, lower the caching intervals to reduce load on the system's memory.

 

Reference - Cache settings

Global settings

You can configure the following cache settings through the application, in the category:Settings System -> Performance

Server content caching

Cache page info (minutes) Sets the number of minutes for which the system caches pageinformation (basic page properties and metadata). Kentico retrievespage information many times during the processing of a singlepage, so always set this value to .at least 10 minutes

When a page is modified, the system automatically clears thecorresponding part of the page info cache. This type of cachingcannot cause the website to display outdated information.

Cache content (minutes) Sets the number of minutes for which web parts/controls with datasources cache their content (typically retrieved from the Kenticodatabase).

You can override this value for specific web part instances bysetting their property. Using 0 as the value disablesCache minutescontent caching for the given web part instance.

It is recommended to cache all possible content. You can use cach to clear the cache on content changes. For moste dependencies

non-custom data sources, the default dependencies automaticallyensure that web parts reload the cached content whenever the datais modified.

See also: Caching the data of page components

Use progressive caching If checked, the system optimizes access to uncached data so thatconcurrent threads only use a single data access operation andshare the results. This leads to better performance if the website isunder a heavy load, without the drawback of not having the latestdata available.

Server file caching

Page 142: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Cache files (minutes) Sets the number of minutes for which the system caches imagesand other files on the server. Includes images, and web resourcessuch as CSS stylesheets and JavaScript files.

The system always caches files for to protectat least one minuteagainst brute force attacks. Kentico automatically removes filesfrom the cache if they are modified, so file caching cannot cause thewebsite to display outdated content.

This setting also specifies the caching interval for Azure CDN,unless overwritten by the web.config CMSAzureCDNCacheMinuteskey (see for details).Reference - Web.config application keys

See also: Caching files and resources

Maximum file size to cache Specifies the maximum file size in kilobytes that is allowed to becached. Setting a limit stops the file cache from using an excessiveamount of memory.

Redirect files to disk If enabled, the system redirects file requests for apage attachmentsnd to the corresponding physical file (if thecontent tree filesrequested file is stored in the file system).

Warning: The system stores files on the file system with GUIDidentifiers instead of names (to avoid conflicts). If you enable the Re

setting, files downloaded by users have names indirect files to diskthe GUID identifier format instead of the original file name.

Client-side file caching

Client cache (minutes) Sets the number of minutes for which clients consider cached filesto be valid and up-to-date (i.e. the length of the client cacheexpiration time). Specifically, the setting determines how the serversets the response header for file requests. Client fileExpirescaching includes images and web resources such as CSSstylesheets.

The following values are possible:

0 - cached files are always flagged as expired, so clientsrevalidate files on each request. Does NOT disable clientcaching for files.More than 0 - until a cached file expires, clients load the file'sdata from the cache without sending any requests to theserver. Provides the best file performance, but may causebrowsers to display outdated content (if cached files aremodified before the expiration interval ends).

This setting only applies to dynamic files that are managed by theKentico application, such as stylesheets in the appCSS stylesheetslication. Files stored on the file system may use a different clientcache expiration time. For example, physical files served by theKentico application through the handler use the GetResource.ashx

web.config key (the defaultCMSPhysicalFilesCacheMinutesvalue is one week) and directly requested files use the IIS clientcache configuration.

See also: Caching files and resources

Allow client cache revalidation If enabled, the server adds the directive to the must-revalidate Cac response header of file requests. Ensures that cachinghe-control

clients always perform revalidation when requesting expired files(most clients revalidate by default even without the must-revalidatedirective).

Output caching

Enable output caching If enabled, the system allows output caching. Output cache storesthe full HTML source of pages. If disabled, output caching is off onthe whole website.

To enable output caching for pages, configure the prOutput cacheoperties of individual pages in the application on the Pages Propert

tab. Both the main website setting and page settingsies -> Generalmust be enabled to use output caching.

See also: Caching page output

Page 143: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Cache output in file system (minutes) Specifies the number of minutes for which the system stores outputcache in the file system. This provides persistent cache storage incase of application restarts.

If not set, only the standard caching mechanism (in memory) isused. If you enter a value, the system loads the output data ofrequested pages from the file system cache when it is not found inthe memory cache.

To enable output caching in the file system for pages, configure the property of individual pages in the Allow file system cache Pages

application on the tab.Properties -> General

Warning: Enabling the file system output cache may cause yourwebsite to serve outdated content. When clearing invalid outputcache due to changes made to pages or other dependencies, thesystem only removes cache files if the corresponding cache itemalso exists in the memory. The file system cache remains outdatedif the memory cache is not available when the invalidation occurs(for example after an application restart or if you have differentexpiration times set for the two caching types).

Output cache variables Determines under which conditions the system stores multipleversions of the output cache for pages. Click to change theEditdefault settings.

For example, the variable ensures that the systemusernamestores a separate version of each page's output cache for everylogged in user. If disabled, the output cache does not distinguishbetween users — if a page's output is cached for one user, thesystem may load the same content for all other users (depending onthe remaining output cache variables).

You can enable or disable separate output cache for:

username - every logged in user (public users share the sameoutput cache).sitename - every site in the system (leave checked unless yoursites all have identical content on pages with the same path).lang - each of pages.language versionbrowser - different types of web browsers.cookielevel - the preferences of visitors.cookie leveldeviceprofile - the detected for visitors.device profilesdomain - the website domain name (check to disable outputcache sharing between different of sites).domain aliasesviewmode - the page view modes used by Kentico, such as de

, , or . Currently, the system only usessign edit preview live sitecaching for the view mode.live site

The output cache creates separate cache items based onalwaysthe:

Page path (including the virtual directory and extension)Protocol in the request URL

Enable partial caching If enabled, the system allows partial caching of web parts. Thepartial cache stores the HTML output of individual web partinstances. If not checked, partial caching is disabled on the wholewebsite for all web parts.

By default, web parts do not use partial caching. You need toenable partial caching for individual web part instances using the Pa

property.rtial cache minutes

See also: Caching portions of the page output

Page 144: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Partial cache variables_______________________________

Determines under which conditions the system stores multipleversions of the partial cache for web parts. Applies globally to thepartial cache of all web parts.

Click to change the default settings.Edit

For example, the variable ensures that each web part instancelanghas a separate version of the partial cache for every language. Ifdisabled, the partial cache does not distinguish between languages— if a web part's output is cached for one language, the systemloads the same content for all languages (depending on theremaining partial cache variables).

You can enable or disable separate partial cache for:

username - every logged in user (public users always sharethe same partial cache).sitename - every site in the system (leave checked unless yoursites have identical content).lang - each of pages.language versionbrowser - different types of web browsers.viewmode - the page view modes used by Kentico, such asdesign, edit, preview or live site. Currently, the system onlyuses caching for the live site view mode.

Page settings

You can configure the following output cache settings for individual pages in the application on the tab:Pages Properties -> General

Output cache

Use output cache_______________________________

Indicates if the system caches the full HTML output of the page.Output caching can greatly improve the performance of the page,but is not suitable for pages with dynamic content.

You can inherit the output cache settings from the parent page.

Important: Output caching must also be allowed in the website'ssettings. Administrators can enable output caching in Settings ->

.System -> Performance

See also: Caching page output

Cache minutes Determines how long the system keeps the output code of the pagein the cache (if output caching is enabled).

By default, the system automatically clears the output cache of thepage if you update the page's content, properties or page template.You can manually remove the page from the output cache byclicking .Clear output cache

Allow file system cache Indicates if the system stores the page's output cache on theserver's file system. This provides persistent caching in case ofapplication restarts.

If disabled, the application only caches the page output in itsmemory. If enabled, the system checks both types of cache.

You can inherit the setting from the parent page.

The file system cache is stored for the number of minutes specifiedin the setting in Cache output in file system (minutes) Settings

.-> System -> Performance

Web part settings

Instances of web parts provide the following properties for configuring content caching and partial output caching:

System settings

Page 145: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Cache item name_______________________________

Sets the name of the cache key used for the content of the webpart. If not specified, this name is generated automatically based onthe site, page path, and current user.Web part control ID

Cache keys can be shared between multiple web parts displayingthe same content on different pages in order to avoid keepingredundant data in the memory.

See also: Caching the data of page components

Cache minutes Sets the number of minutes for which the content of the web partremains cached before the latest version is reloaded from thedatabase.

If empty, the web part uses the value entered into the Settings ->System -> Performance -> Server content caching -> Cache

setting.content (minutes)

If set to , the web part does not use content caching.0

Cache dependencies Allows you to specify a list of cache keys on which the contentcache of the web part depends. When the specified cache itemschange, the system deletes the content cache of the web part. Addone cache key per line.

If you check , the web part usesUse default cache dependenciesdependencies that include all possible object changes that couldaffect the content of the given web part.

See also: Setting cache dependencies

Performance

Partial cache (minutes) Sets the number of minutes for which system caches the outputHTML code of the web part. Partial caching is similar to to full-pagecaching, but only for the code of the web part specifically.

If left empty or set to 0, partial caching is not used for the web part.

Important: Partial caching must also be allowed in the website'ssettings. Administrators can enable partial caching in Settings ->

.System -> Performance

See also: Caching portions of the page output

Partial cache dependencies Allows you to specify a list of cache keys on which the partial cacheof the web part depends. When the specified cache items change,the system clears the partial cache of the web part. Add one cachekey per line.

If you check , the web part usesUse default cache dependenciesdependencies that include all possible object changes that couldaffect the given web part.

Preserve partial cache on postback By default, the system clears the partial cache of web partswhenever a postback occurs on the page. If you enable thisproperty, the partial cache of the given web part instance persiststhrough postbacks.

 

Using code minification and compressionAn important factor that influences the performance of a website is the size of code resources, which are requested by client browsers whenrendering pages. The most significant among these are CSS stylesheets and JavaScript source files, which can in some cases reach sizesthat considerably impact page load time.

Kentico provides two types of builtin functionality that help optimize the performance of requests for CSS and JavaScript resources:

Code minification Removes all unnecessary characters from the code that are notrequired by the browser to correctly process the resource. Thisincludes white spaces, line break characters, comments,bookmarks etc.

Minified resources behave in exactly the same way as the original.Browsers can immediately handle minified resources without anyadditional steps.

Note: Minified code is difficult to read (for humans) and is thereforeunsuitable for debugging.

Page 146: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Resource compression Reduces the size of resources by encoding their data. To applycompression, you must also enable minification for resources of thegiven type.

When a client browser receives a compressed resource, it must firstdecompress the data. All browsers officially supported by Kenticoshould be able to correctly decompress files. In cases where theclient cannot process compressed data, the system automaticallysends the unmodified resource instead.

You can enable or disable code minification and compression globally for all sites in , through theSettings -> System -> Performancesettings in the category.Resources

Reducing the size of requested resources saves bandwidth and improves the response time of your website. Minification can decrease thesize of a resource by approximately 20–40%, depending on the code of the given object. If compression is also used, resources can bereduced to roughly 30% of their original size.

The minification and compression process slightly increases the server CPU load and adds a short delay to resource requests. To counterthis issue, the system uses server-side caching for resource files:

Minification/compression only occurs once when a resource is requested for the first time (the cache stores the result).On subsequent client requests, the system provides the transformed version of the resource from the cache.The cache stores both compressed and uncompressed versions of resources, so the data is readily available even for clients withoutcompression support.The duration of the server-side caching is . You can change the number of minutes through the always at least one minute Cache

setting in .files (minutes) Settings -> System -> Performance

Additionally, you can use clientside browser caching for resources (enabled by default). With client caching, browsers only reload resourcesfrom the server if the cached data expires or the content of the resource becomes outdated. See to learn how toCaching files and resourcesconfigure the client-side file caching.

 

 

Requesting minified resources

Compression and minification is automatically ensured by the handler, which manages resource requests~/CMSPages/GetResource.ashxaccording to the specified settings. If minification is enabled, CSS and JavaScript requests generated by the system use this handler.

You can manually load resources in your code by using the following URL parameters with the handler:

stylesheetname - used to request a from the database. The code name of the requested stylesheet must beCSS stylesheetentered as the value of the parameter.Link example:<link href="/Kentico/CMSPages/GetResource.ashx?stylesheetname=CorporateSite" type="text/css" rel="stylesheet">

_transformations, _layouts, _templates, _devicelayouts, _webparts, _webpartlayouts, _containers - used to request theinternal stylesheets of the corresponding type of page component. The object ID values of the given components must be entered asthe value of the parameter, separated by semicolons (if multiple component stylesheets are requested). See Adding CSS to page

.componentsLink examples:<link href="/Kentico/CMSPages/GetResource.ashx?_containers=1;14" type="text/css" rel="stylesheet"/><link href="/Kentico/CMSPages/GetResource.ashx?_transformations=3511" type="text/css" rel="stylesheet">

stylesheetfile - used to request static CSS resources from the file system. The relative path of the requested .css file must beentered into the parameter.Lnk example:<link href="/Kentico/CMSPages/GetResource.ashx?stylesheetfile=/Kentico/App_Themes/Design/OnSiteEdit.css" type="text/css"rel="stylesheet">

scriptfile - used to request static JavaScript resources from the file system. The relative path of the requested .js file must beentered into the parameter.Link example:<script src="/Kentico/CMSPages/GetResource.ashx?scriptfile=%7e%2fCMSScripts%2fmootools.js" type="text/javascript"></script>

Note: The reductions only apply to resources stored individually in the file system or database. Inline code inserted into the HTMLmarkup of pages is not affected.

Using external preprocessing toolsYou can also use external preprocessing tools (LESS, Grunt tasks, ...) and store your CSS and JS files as static physical files. Youlose the ability to edit the files within Kentico UI, but avoid having the system to compile the resources with the first request eachtime the cache expires.

Resource requests with minification disabled

Page 147: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

Enabling compression of page output

You can configure the system to compress the HTML output code of all pages rendered by Kentico.

Go to .Settings -> System -> PerformanceCheck .Enable output compressionClick .Save

The setting applies globally for all sites in the system. 

Setting up web farmsWeb farms among multiple web servers that all provide the same content. Each server increases the number ofdistribute computingrequests that the web farm can serve, which allows you to scale the performance of the website. You can also use web farms to achieve highavailability – if one of the servers in the web farm stops working, the other servers continue to run the site.

Native web farm support in Kentico provides the following features:

Synchronization of cache and content from a database to all web farm servers.Synchronization of changes made to the site settings on one of the servers to all other servers.Synchronization of files uploaded to the site between all servers. This is used only if you or on bothstore uploaded files on the diskdisk and in the database.

The following image shows the structure of a web farm and how the synchronization works:

If you change some settings or content or upload a file using server 192.168.1.2, the other servers do not know about this change in a

If minification is disabled, the system generates requests with a direct URL (for JavaScript files) or using the ~/CMSPages/GetCSS system page (for CSS stylesheets)..aspx

Requests in this URL format are always supported, but they do not perform minification or compression of resources.

Note: Output compression requires compliance from client browsers. Browsers that do not support compression always downloaduncompressed page output.

Page 148: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

1. 2. 3. 4.

1. 2. 3. 4.

1. 2. 3.

4. 5.

standard scenario. However, if you are using web farm synchronization, the system automatically logs the changes into the database as web.farm tasks

The system uses the database table to find tasks created for the current server. On the application side, aCMS_WebFarmServerTaskroutine runs in a separate long running which continuously polls the database to find the tasks.thread

Before you can start using web farm synchronization, you need to make sure that all servers that make up a web farm are configured in. See .the system Configuring web farm servers

   

Configuring web farm serversTo utilize web farm synchronization, the system requires that all servers that make up a web farm are registered and configured in thesystem. To start using the web farm synchronization:

Choose a web farm mode:Automatic web farmManually configured web farm

Perform further configurations.

You can also perform additional low-level settings for web farm synchronization by adding the keys listed in  into the Web.config file settings /section of your file.configuration/appSettings  web.config

Configuring web farms automatically

For most web farm environments, we recommend the automatic web farm mode. This mode dynamically adds and removes web farmservers from the system.

To set the automatic mode, we recommend that you first enable the automatic web farm on and after that you start adding otherone serverservers to the web farm (connect them to the database).

Open the application.SettingsSelect the category.Versioning & Synchronization -> Web farmSelect as the .Automatic Web farm modeClick Save.

Now you can start adding other servers to the web farm (connect the servers to the database). The system will register them automatically.

  

Configuring web farms manually

If you need to have a complete control over your web farm or you are running a web farm with a static number of web farm servers, whichyou do not plan to change, configure the web farm servers manually in your system.

First, enable the manual web farm mode.

Open the application.SettingsSelect the category.Versioning & Synchronization -> Web farmSelect as the .Manual Web farm modeClick Save.

Now you must configure the web farm servers in the system.

Open the application.Web farmClick .New serverFill in the following fields:

Server display name - a descriptive name for the server displayed in the administration interface.Server enabled - allows you to manually enable or disable web farm synchronization for the particular server.

Click to register the server.SaveOpen the web.config file on the particular server and add the key into the section:CMSWebFarmServerName appSettings

<add key="CMSWebFarmServerName" value="ServerCodeName"/>

Note: The web farm support doesn't replace load-balancing or web farm management tools.

When you are running Kentico on , the automatic web farm mode is enabled by default.Azure

Page 149: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

5.

Replace  with the server code name that the system created for the server (or the code name that you manuallyServerCodeNameentered). Every server must contain only one such key with its own name.

Repeat the process for every server in your web farm.

Keep in mind that if you remove a machine from a web farm, you also need to disable or remove the corresponding server from the system.

Further configurations of web farm servers

When you have defined the web farm servers and enabled the web farm, go through the following configurations to ensure that your webfarm is working properly.

Storing session state on a web farm

The default session state mode for ASP.NET applications is the mode, which stores session state in the memory of the server.InProcHowever, this mode is not supported on web farms, because requests for the same session can be served by different servers. This cancause unexpected behavior and data loss. For example, items stored in a shopping cart can disappear after making another request on thewebsite.

To configure an Azure project to store session data, see .Configuring an Azure project

To configure your web farm to store session state data correctly, use one of the following modes:

mode - stores session state in a separate process.StateServer mode - stores session state in a SQL server database.SQLServer

To use one of these modes, adjust the element and its attributes in the file. See more information in the <sessionState> web.config Session- article.State Modes

Configuring servers for synchronizing macros

The system uses signatures to ensure the security of . Macro signatures contain the user name of the macro's author andmacro expressionsa hash of the given expression.

The hash function used to create the signatures appends a to the input. To ensure that macro expressions work correctly in a web farmsaltenvironment, you need to configure all servers to use the same hash salt:

Set the key in the section of the web.config file to the same value on all web farm servers. ForCMSHashStringSalt appSettingsexample:

<add key="CMSHashStringSalt" value="e68b9ad6-a461-4707-8e3e-ece73f03dd02" />

The best option is to set the hash salt value before you start creating content for your website. Changing the salt causes all current hashvalues to become invalid. To fix existing macro expressions in the system after changing the hash salt, you need to re-sign the macros. See

for more information.Working with macro signatures

Setting up a shared file storage for a web farm

The web farm synchronization mechanism synchronizes files reliably up to the size of 250 MB. Larger files take a long time to synchronize.Even though the synchronization for larger files may work without problems in your environment, we recommend that you configure a shared

for you web farm in such case.storage

You can configure the following shared file storages for your web farm:

Azure Blob StorageAmazon S3 storageCustom network storage - you need to .configure a file system provider

When you configure a shared storage for you web farm, the system automatically recognizes this setup and stops creating synchronizationtasks for these files.

Configuring scheduled tasks to be executed on every server of a web farm

If you are using a web farm, will be executed randomly by one of the servers. However, certain scheduled tasks, which workscheduled taskswith the application file system, should be executed by each server in the web farm.

The following scheduled tasks must be in a web farm, if you are NOT using a shared file storage (Azure Blobexecuted by each serverStorage or Amazon S3 storage):

Execute taskssearchOptimize search indexesProcess loganalyticsDelete image editor historyDelete old file system cache filesDelete old temporary upload files

Page 150: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4. 5. 6. 7. 8. 9.

Delete old temporary attachments

The following scheduled task must be executed by each server in a web farm regardless of the used file storage:

Clean unused memory

To configure these tasks to be executed by each server in a web farm, clone the original tasks and configure them to be executed on specificservers:

Open the application.Scheduled tasksEdit the scheduled task.Type the according to the name of one of the servers in the web farm and click .Server name SaveReturn to the main page of the application.Scheduled tasksClick ( ) next to the scheduled task and select .Other actions ... CloneChoose a name for the cloned task and click .CloneEdit the cloned scheduled task.Change the to the name of a different server in the web farm and click .Server name SaveRepeat for each server in your web farm.

Perform this procedure for all scheduled tasks listed above.

When creating new scheduled tasks, you can ensure that the task is created for all web farm servers by selecting the Create tasks for all check-box.web farm servers

SSL in a web farm environment

If you use an SSL offload device or accelerator as part of your web farm and your website is configured to require SSL for the administrationinterface or on specific pages, you may encounter problems with redirection loops.

For this type of scenario, you need to add some custom code to your website according to the instructions in .SSL accelerator support

Using port numbers to identify web farm servers

If your environment uses unique port numbers to identify web farm servers (for example with a load balancer that internally maps URLs toports), the system generates certain types of URLs with the internal port number. Such URLs may not be processed correctly, leading toproblems with related features (for example requests for files).GetResource

To resolve these problems, add the following key into the section of the web.config file on all servers:appSettings

<add key="CMSURLPort" value="80" />

The key ensures that the system generates all URLs without the port number (the default HTTP port is used). 

Troubleshooting web farms

Monitoring web farm servers

You can monitor web farm servers in the application on the tab. Each server registered in the system can display one ofWeb farm Serversthe following statuses.

The statuses report on the ability of individual servers registered in the web farm to connect to the database.

Status Description Recommended action

Healthy The web farm server is reporting to thesystem at expected intervals, regularly,without any significant delays.

The server is working properly. No action isneeded.

Transitioning The web farm server is initializing or it stopsresponding.

We recommend waiting for about 3 minutesbefore looking for the source of the issues,as the status will probably change duringthis time.

Page 151: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Not responding The web farm server is not responding atall.

Details for web farms:manual

After 24 hours in this state, the systemstops generating memory tasks for theserver (if the server is started again, itobtains the data from the database)and deletes already generated memorytasks. But the system keeps generatingall other tasks (for example file tasks)for the server.The server stays in the system until youremove it manually.

Details for web farms:automatic

After 24 hours in this state, the systemremoves the server from the systemalong with all its web farms tasks.

The server is down. Check the serverphysically and check whether it is able toconnect to the database.

 

In case of Azure, check the server statusthrough .Azure Management Portal

When a server switches to the status, the system logs an error to the event log.Not responding

 

Monitoring web farm synchronization tasks

You can monitor web farm tasks in the application on the tab. The tab shows all synchronization tasks that are currentlyWeb farm Tasksactive (waiting to be processed).

In an ideal situation, this tab should not contain any tasks – this means that the web farm tasks are processed soon after they are created.The system automatically removes successfully processed tasks.

The tab displays a list of currently active (waiting to be processed) anonymous synchronization tasks. These tasks areAnonymous taskslogged by external applications (e.g. Windows services) to ensure that changes made by the external application are reflected in the webapplication cache. Tasks are logged as anonymous only if the application is NOT configured to run in a web farm. If it is configured to run in aweb farm, these tasks are logged as standard synchronization tasks on the tab.Tasks

See also: Debugging web farms

Troubleshooting web farms

Incorrect number of web farm servers in the system

If you have configured an automatic web farm and the number of your web farm servers connected to the database does not correspond tothe number of servers registered in the system, the web farm will not work properly. This can happen for various reasons. For example if youhave tampered with the system time, the system can consider the servers to be down and delete them.

Solution

The solution to most of such problems is to that is missing in the system or all web farm servers (or at leastrestart the web farm servertheir IIS). After the restart of the IIS, Kentico will be able to register the web farm server properly. If you are running your project on MicrosoftAzure, you can reboot the instances of your project.

If the system shows more web farm servers than there should be, automatic web farm will delete them automatically after some time.

Outdated servers error

Error: [DataConnection.HandleError]: Query: Proc_CMS_WebFarmSync_SetServerTasks Caused exception: The INSERT statementconflicted with the FOREIGN KEY constraint "FK_CMS_WebFarmServerTask_ServerID_CMS_WebFarmServer".

This error occurs if automatic web farm server generation is enabled and some servers become outdated or new servers are missing in thesystem.

Event log email notifications

You can configure the system to automatically send email notifications whenever errors occur in the system, as described in Settin.g up e-mail notifications for errors

If you configure the system to send email notifications, the following notifications related to web farms will be sent:

When a server switches to the status.Not respondingWhen a server switches to the status.Healthy

A notification will be sent once for each switch that happens.

Page 152: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Solution

Restart the faulty web farm server or all web farm servers (or at least their IIS).

Web farm tasks are not being processed

If the tab in the application contains web farm tasks that fail to be processed, the cause can be one of the following:Tasks Web farm

The system is configured for more web farm servers than there really are.The thread processing the tasks is not running.

Check if the thread is running in . See CMS.WebFarmSync.DbWebFarmUpdater Debug -> Worker threads Debugging web for more information.farms

Solution

Check the application tab and make sure that the number of configured web farm servers corresponds to reality.Web farm -> Servers

Restart the web farm servers that are missing from the list or all web farm servers (or at least their IIS). The restart of the IISregisters the servers back into the web farm and also runs the thread that is processing the tasks.If there are more servers than there should be, wait for the system to automatically delete them together with their tasks.

 

Debugging web farmsThe system provides a debugging tool that shows the synchronization activity of . Web farm debugging allows you toweb farm serverstroubleshoot web-farm-related issues and find out if the synchronization works correctly.

Enabling the web farm debug

To use web farm debugging, open the application and adjust the settings in the category:Settings System -> Debug

Setting Description

Enable web farm debug Enables web farm debugging and the tab in the interfaceWeb farmof the application.Debug

Debug web farm operations of UI pages If enabled, the web farm debug includes operations performed viathe administration interface. Web farm debugging must also beenabled.

Web farm debug log length Sets the maximum length of the web farm debug log, i.e. thenumber of requests for which the debug stores information. Ifempty, the value of the setting is used.Default log length

Display stack information If enabled, the system tracks the code stack when debugging webfarm tasks and displays the information in the column.Context

This information is only available in the debugging UI and on thelive site, not in the debug log written into the file.logwebfarm.log

Log web farm operations to file If enabled, the system saves the web farm debug log into the logwe file in the folder. This option does not requirebfarm.log ~/App_Data

web farm debugging to be enabled.

 

  

Viewing the web farm debug

To access the web farm debug, open the application and select the tab.Debug Web farm

The log displays the following information for the current web farm server:

Synchronization tasks created by the server for recent web requestsNotifications sent to other web farm servers ( Task type)NOTIFYTasks processed as a result of notification requests from other servers in the web farm ( prefix in the Task type)DO:

Note: Web farm debugging is only functional if at least one .web farm server is defined

Tip: You can also enable web farm debugging through the "debug everything" settings in the section of the settingsAll Debugcategory.

Page 153: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

For example, when a web farm server handles a request that adds a new role object, the debug log shows:

The creation of a synchronization task (clears cached role objects)TOUCHCACHEITEMNOTIFY tasks for other servers in the web farm

On the target web farm servers, the debug shows the processing of the synchronization task:

To remove all records previously logged in the web farm debug, click .Clear debug log 

Selecting content archival approachStoring a in the content tree can have a significant impact on website performance. You can set up archival oflarge amount of contentoutdated pages in your system so that you reduce the number of pages in the content tree.

We recommend the approach for most projects, including projects with large amounts of pages (hundredsArchival section in the content treeof thousands). For extremely content-heavy projects, consider using or .module classes custom storage

Archival section in the content tree

You can create a special section in the content tree into which you'll move outdated pages. An even better approach is to keep the archivedpages in the same section and creating new sections for new content — structured by years, for example.

When using this approach, the you use to display published pages need be configured to only to load data only from specificlistingssub-sections of the content tree. For example, in the following structure:

Articles2015

MonthsArticles1Article 2...

...20142013

Instead of displaying all the years in a single listing, individual web parts could be configured to cover only the pages stored under a specificyear. You can configure this using the property.Path

Advantages

You can easily display the archived pages on the live site.The archived pages can retain all their data, including the editing history.You can easily restore archived pages.

Disadvantages

The archived pages are still part of the content tree. This approach can still have a performance impact.

Note: moving large sections of pages in the content tree is a performance demanding task. Make sure you don't perform the operation inpeak hours.

Page 154: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

  

Module classes

You can move the main data stored in the archived pages into .module classes

Advantages

The archived pages are completely separated from the content tree.You can view the archived data via the administration UI.

Disadvantages

To be able to store all the related objects, you have replicate their structure in module classes as well.You can only display the archived pages on the live site using a Repeater with custom query or by a of ayour own implementationdata source web part.Editing history is lost.The archived pages cannot be easily restored from the archive.

Custom storage

You can use the API to retrieve outdated pages and their related objects and store them in a custom storage. For example, you can serializethe data into an XML file.

Advantages

The archived pages are completely separated from the content tree.The archived pages can retain all their data, including the editing history.You can restore the archived pages.

Disadvantages

You cannot, by default, view the archived data via the administration UI.You cannot easily display the archived pages on the live site.

 

Setting up search on your websiteKentico provides an index-based search engine (Smart search), which allows users to search through the content of websites and varioustypes of data within the system. The smart search is based on (version 3.0.3) — a source code, class-per-class, API-per-APILucene.Netport of the Java search engine to C# and the .NET platform. Lucene

The smart search uses to store information about the website content. When a user sends a search request, the system searchesindexes through the appropriate indexes, which results in compared to linear SQL query search.significantly better performance

To set up the smart search functionality on your website, you need to perform the following steps:

Enable smart search indexing in the system.Create search indexes. Assign the indexes to your site and define their exact content.Add smart search web parts onto the pages of your website. To learn more about the web parts, see Adding search functionality to

and .pages Using search filters

How the smart search works

The system stores the content of smart search indexes in physical on the server's disk. The index files are located in the index files ~/App_ folder within your web project directory.Data/CMSModules/SmartSearch/<Index code name>

Pages, forums and other Kentico objects are reflected in the index file as . The data structure of the index pages is suitable forindex pagesbeing searched, resulting in significantly higher search performance compared to linear SQL search.

The index pages contain the same fields as the corresponding Kentico objects, based on the .search settings of individual object typesDepending on these settings, the creates representations of objects in the index files. When an object included in the index isIndex writercreated, removed or has one of its fields modified, the system automatically schedules an , which updates the correspondingIndexing taskindex page. The searches through the index file and returns relevant results.Index searcher

Tip

You can find a list of all indexing tasks that are waiting to be processed in . Here you can:Smart search -> Tasks

Look for information if you encounter problems with new content not being indexed correctly

Page 155: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

5. 6.

1. 2. 3. 4.

Example

The following model scenario explains the life cycle of a page in a search index file:

A user creates a new page.Upon the page's creation, the system logs a new indexing task in the database.The Smart search either runs the indexing task immediately or processes it later using a scheduled task.When executed, the indexing task adds the new page to the appropriate search indexes. The system indexes the page's contentbased on the search field settings defined for the given page type.A user arrives on the website and sends a search request via a Smart search web part.The web part searches through the assigned indexes and returns results based on the found data.

 

Enabling search indexingTo enable Smart search indexing for all websites in the system:

Open the application.SettingsSelect the category.System -> SearchCheck .Enable smart search indexingClick .Save

Scheduling the search indexing process

By default, the smart search creates and executes indexing tasks immediately whenever content covered by a is created,search indexmodified or deleted.

You can disable automatic running of indexing tasks upon creation by adding the key to the CMSProcessSearchTasksByScheduler /config section of your application's web.config file:uration/appSettings

<add key="CMSProcessSearchTasksByScheduler" value="true" />

When you set this key to :true

The system only logs the search indexing tasks into the database without running them. You need to process the tasks periodically,for example using the (runs every 4 hours by default).Execute search tasks scheduled taskYou cannot manually indexes unless you also run the process that executes the indexing tasks.Rebuild

 

Delete ( ) tasks from the indexing queue to stop unnecessary or problematic indexing

See also: Monitoring search indexing tasks

Executing search tasks via the scheduler on a web farm

If your environment runs in a web farm, you need to configure the scheduled task to be executed on eachExecute search tasks of the web farm servers individually. See .Configuring scheduled tasks to be executed on every server of a web farm

Note: Your application must have the for the folder on the server's file system. This folder storeswrite permission ~/App_Datathe search index files, so the system cannot create and update indexes without the required permissions.

See to learn how to grant the write permission for the folder.Disk permission problems

Tip

You can find a list of all indexing tasks that are waiting to be processed in . Here you can:Smart search -> Tasks

Look for information if you encounter problems with new content not being indexed correctly

Delete ( ) tasks from the indexing queue to stop unnecessary or problematic indexing

See also: Monitoring search indexing tasks

Executing search tasks via the scheduler on a web farm

If your environment runs in a web farm, you need to configure the scheduled task to be executed on eachExecute search tasks of the web farm servers individually. See .Configuring scheduled tasks to be executed on every server of a web farm

Page 156: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

5.

6.

Creating search indexesIndexes are the core of the smart search functionality. They store information about the searchable content and define the scope ofsearches. When a visitor submits a search request, the system looks through the appropriate indexes instead of the actual records in thedatabase. Indexes organize data in a way that is suitable for searching, so the smart search retrieves results faster than linear searches,particularly for large volumes of data.

The following types of search indexes are available:

Index type Description

Pages Stores information about pages in the content tree

Pages crawler Directly indexes the HTML output of pages.

Forums Stores information about the content of discussion .forums

Custom tables Indexes records stored in .custom tables

On-line forms Indexes data that the website's visitors submit through .forms

Users Stores information about in the system.users

General Stores information about system objects of a specified type.

Custom Allows you to use your own customcoded search index. Stores anykind of data depending on the implementation.

Before you can start searching content, you need to create search indexes for your website:

Open the application.Smart searchClick .New indexFill in the . Most importantly, you need to select the:index properties

Index type - determines what type of content the search index storesAnalyzer type - determines how the index breaks text into searchable tokens

Click to create the search index.SaveThe tab of the index's editing interface opens. Here you can edit the same that you configured whenGeneral propertiescreating the index.

Open the tab and select the websites where you wish to use the index. You can implement multi-site search functionality bySitesassigning the index to more than one website.

If you are creating a or type index, switch to the tab. Here you need to select which languagePages Pages crawler Culturesversions of the website's pages are indexed.

Note: If the index includes global objects that are not site-specific, the selection made on the Sites tab does not affect theindex's content. However, you can only use the index (through ) on the assigned sites.Smart search web parts

Page 157: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

6.

7.

8.

You must assign at least one culture in order for the index to be functional.If you have a multi-site index, you can select the cultures separately for each site.

 Switch to the tab and define the content covered by the index. The available options depend on the type of theIndexed contentindex:

Defining page indexesDefining forum indexesDefining custom table indexesDefining on-line form indexesDefining user indexesDefining general indexesCreating custom smart search indexes

Go back to the tab and the index.General RebuildThe section displays information about the current status and parameters of the index.Index info

Once the system finishes building the index, you can start using the index on your website.

 

  

Maintaining search indexes

You can manage existing search indexes using the actions available on the tab of the index editing interface.General

The system automatically updates search indexes to reflect all changes made to the indexed content. Over time, these updates can makeindexes less efficient, particularly in the case of large indexes.

To restore optimal search performance for an index, defragment the index by clicking . You can enable the Optimize Optimize search to have the system automatically optimize all smart search indexes once per week.indexes scheduled task

The action deletes the current index file and indexes all specified content again.Rebuild

Use the rebuild action to apply changes made to the index's configuration. This includes modifications of the analyzer settings (Analy, ), all options on the , or tabs, and adjustments of the for thezer type Stop words Indexed content Sites Cultures search field settings

indexed objects.The system automatically optimizes the index after a successful rebuild.

Reference - Search index properties

You can configure the following options when creating new search indexes or editing existing indexes on the tab:General

Index property Description

The tab allows you to test the functionality of the index.Search preview

Clicking the action does not always guarantee that the index starts rebuilding immediately. The process may be delayed ifRebuildanother index is already being rebuilt or if the rebuilding tasks are configured to be handled by the scheduler.

Page 158: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Display name Name of the index displayed in the administration interface.

Code name Serves as a unique identifier for the index (used internally in webpart property values or the API). You can leave the default (automat

option to have the system generate a code name based on theic)display name.

Warning: The system also uses the code name for the physicalindex file. The fully qualified name of the file must be less than 260characters long, including the directory path.

Index type Determines what type of content the search index stores:

Custom index - indexes any kind of data depending on theimplementation.Custom tables - indexes records in .custom tablesPages - indexes the content of the pages in the content treePages crawler - indexes the HTML output of the website'spages.Forums - indexes the content of .forumsGeneral - indexes system objects of a specified type. Generalindexes allow you to search through any objects within thesystem.On-line forms - indexes data submitted by the website'svisitors through .formsUsers - indexes the data of in the system.users

Analyzer type______________

Sets the type of analyzer that the index uses to tokenize text (dividetext into searchable tokens). The analyzer processes both theindexed content and the search expressions entered by users.When running searches using the index, the system returns resultsfor items that have at least one token matching the searchexpression.

The following analyzers are available:

Simple - divides text at non-letter characters (includingnumbers).Stop - divides text at non-letter characters (including numbers)and excludes all words in the selected dictionary.Stop wordsWhite space - divides text at whitespace characters.Standard - divides text based on language grammar (usesstop words, shortcuts, ...). Very efficient for English, but maynot produce satisfactory results with other languages.Keyword - returns the entire text stream of indexed data fieldsas a single token. Useful for structured data fields like zipcodes or IDs.Custom - allows you to assign a customwritten analyzer. Thisprovides a way to perform text tokenization according to yourown requirements. You need to specify the names of theassembly and class where the custom analyzer isimplemented. See  forCreating custom smart search analyzersmore information.Subset - creates tokens for all possible substrings in words.Indexes with subset analyzers return results for all words thatcontain the search term. For example, searching for matchnetes words such as , , etc.net Internet network, kinetic,Starts with - creates tokens for all prefixes contained in words,including the whole word. Allows searching for all words thatstart with the search term. For example, searching for matctesthes words such as , , , etc.test tests tester Simple / Stop words / White space with stemming - dividetext using the , or analyzer, and thenSimple Stop White spacereduce the tokens to word stems. Allows users to find wordsthat have the same basic meaning as the search term, butdifferent inflection (suffixes). Only works for English.

See also: Configuring search assistance features

Stop words Selects the stop word dictionary for or analyzers.Stop Standard

Stop words (such as 'and', 'or') are excluded from the index contentand the analyzer uses them to divide text into tokens.

Note: The application stores the stop word dictionaries as text filesin the folder.~\App_Data\CMSModules\SmartSearch\_StopWordsYou can edit the content of the dictionaries or add new ones. Eachstop word must be entered on a new line and written in lower case.

Page 159: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

3.

Batch size Sets the maximum amount of records that the system retrieves in asingle database query when rebuilding (or creating) the index. Thisproperty allows you to optimize indexing performance.

The default value is 10. Increasing the value reduces the amount ofqueries required for large numbers of records, which may improveperformance, but also increases memory consumption.

The optimal value depends on the type (size) of the indexed objectsand on the resources available in your hosting environment. Whenindexing large objects (e.g. pages), it is recommended to set areasonably small batch size.

Crawler settings

When editing type indexes, you can configure the user account and domain name that the crawler uses to read pages:Pages crawler

Index property Description

User______________

Sets the user account that the crawler uses to index pages.Reading pages under a user allows the crawler to:

Load user-personalized content for the given userAvoid indexing of pages that the user is not allowed to access

If empty, the index uses the user account specified in Settings -> (or the default userSystem -> Default user ID administrator

account if the setting is empty).

On websites that use , you need to type theWindows authenticationuser name (including the Active Directory domain in format domain\

) and password. To guarantee that the crawler indexesusernameunder the specified Active Directory user, the covered pages cannotbe accessible by public users (i.e. Windows authentication must berequired).

Domain Sets the domain that the crawler uses when indexing sites. Enterthe domain name without the protocol, for example: www.domain.com

If empty, the crawler automatically uses the of the sitemain domainwhere the indexed pages belong.

For example, you can set a custom domain for thweb farm serversat do not have access to the main domain.

 

Defining page indexesYou can use two types of search indexes for the pages of websites (i.e. pages in the content tree):

Pages Index the following page data:

The content of text web parts placed on pages ( , Editable text S and similar)tatic text

Page metadataSelected fields of individual page types (see Configuring

)search settings for page fields

Note: Pages indexes do NOT include the text of other pages orobjects displayed through web parts (such as the content of Newspage displayed through a web part).Repeater

Pages crawler Directly parse the HTML output generated by pages, which allowsthe search to find any text located on pages. Crawler indexesprovide more accurate searches of page content than standard Pag

indexes. However, building and updating crawler indexes mayes require more time and resources, particularly in the case of largeindexes and complex pages.

See also: Configuring page crawler indexes

To define which pages an index covers, specify allowed or excluded content:

Open the application.Smart search

Edit ( ) the index.

Page 160: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3. 4. 5. 6.

Select the tab.Indexed contentClick or .Add allowed content Add excluded contentOpen the tab and assign the websites where you wish to use the index.SitesSwitch to the tab and select which language versions of the website's pages are indexed.Cultures

You must assign at least one culture in order for the index to be functional.If you have a multi-site index, you can select the cultures separately for each site.

 

Adding allowed content

Allowed content defines which of the website's pages are included in the index. Specify pages using a combination of the following options:

Path - identifying the pages that should be indexed.path expressionPage types - allows you to limit which are included in the index.page types

The following properties define types of additional content that you can include in search indexes. The settings are not available for Page Pa indexes:ges crawler

Include ad-hoc forums - includes the content of ad-hoc placed on the specified pages (if there are any).forumsInclude blog comments - includes blog comments posted for blog post pages.Include message boards - includes message boards placed on the specified pages.

Include attachment content - if checked, the index includes the text content of files attached to the specified pages. See Searching for more information.attachment files

Include categories - if checked, the index stores the display names of assigned to the specified pages. This allowsCategoriesusers to find pages that belong to categories whose name matches the search expression.

Examples

Allowed content settings Result

Path: /%Page types: empty

Indexes all pages on the site.

Path: /PartnersPage types: empty

Only indexes the page, without the child pages placed/Partnersunder it.

Path: emptyPage types: CMS.News

Indexes all pages of the page type on the entire site.CMS.News

In this case, an empty path field value is equal the expression./%

Path: /Products/%Page types: CMS.Smartphone;CMS.Laptop

Indexes all pages of the and pageCMS.Smartphone CMS.Laptoptypes found under the section./Products

Adding excluded content

Excluded content allows you to remove pages or entire website sections from the allowed content. For example, if you allow and exclude /% / at the same time, the index will include all pages on the site except for the ones found under the node.Specialpages/% /Special-pages

You can specify the following options:

Path - identifying the pages that should be excluded.path expressionPage types - allows you to limit which  are excluded from the index.page types

Examples

Page 161: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3.

Excluded content settings Result

Path: /PartnersPage types: empty

Excludes the page from the index. Child pages are not/Partnersexcluded.

Path: emptyPage types: CMS.News

Excludes all pages of the page type from the index.CMS.News

In this case, an empty path field value is equal the expression./%

Path: /Products/%Page types: CMS.Smartphone;CMS.Laptop

Excludes all pages of the and pageCMS.Smartphone CMS.Laptoptypes found under the section from the index./Products

Configuring search settings for page fields

Pages are often complex data structures with many different fields. Not all fields may be relevant to the search that you are implementing. Pa allow you to adjust how the system indexes specific fields. We recommend indexing only necessary fields to keep your indexes asge types

small (and fast) as possible.

To edit the field search settings for :page types

Open the application.Page types

Edit ( ) a page type.Open the tab.Search fields

In the top part of the tab, configure how the system displays pages of the given type in search results:

Title field - select the page field whose value is used for the title of search results.Content field - the field whose value is used for the content extract of search results.Image field - the field that contains the image displayed next to search results.Date field - the field whose value is used for the date and time displayed in search results.

The table in the bottom section of the tab determines how the smart search indexes the page type's fields (as defined on the tab). YouFieldscan set the following search options for individual fields:

Content If selected, the content of the field is indexed and searchable in thestandard way. All fields are automatically tokenized by theContentanalyzer of the used search index.

Searchable If selected, the content of the field can be searched usingexpressions in format:

<field code name>:<searched phrase>

See for more information about field searches.Smart search syntaxThis option must also be enabled for the field to be usable in Search filters.

Tokenized Relevant for fields. Indicates if the content of the field isSearchableprocessed by the analyzer when indexing. This allows the search tofind results that match individual tokens (subsets) of the field'svalue. If disabled, the search only returns items if the full value ofthe field exactly matches the search expression.

Custom search name Relevant for fields. The specified value is used as aSearchablesubstitute for the field code name in <field code name>:<searched

search expressions.phrase>

Note: If you enter a Custom search name value, the original fieldname cannot be used.

1. 2. 3. 4. 5.

Excluding individual pages from all indexes

You can also exclude specific pages from all smart search indexing:

Open the application.PagesSelect the given page in the content tree.In mode, open the tab.Edit Properties -> NavigationEnable the property.Exclude from searchClick .Save

Pages crawler search indexes directly index the HTML output of pages. As a result, crawler indexes are not affected by the fieldsettings of page types.

Page 162: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4. 5. 6.

When running searches using page indexes, the system returns results according to the field search settings of individual page types. Thepage type search settings are shared by all page indexes in the system.

SKU (product) and general page fields

To configure the field search settings for (products):E-commerce SKUs

Open the application.Modules

Edit ( ) the module.E-commerceOpen the tab.ClassesEdit the class.SKUSelect the tab.SearchClick .Customize

You can configure the search settings for fields just like for page types. The SKU fields are joined together with general page fields, such asfields that store the content of editable regions on pages ( ) or the content of text widgets ( ).DocumentContent DocumentWebParts

Configuring page crawler indexes

After you changes of the field settings, you need to all indexes that cover pages of the given type.Save Rebuild

Warning: It is highly recommended to modify only the settings of custom SKU fields. Changing the settings of the default fieldsmay prevent the system from searching through SKUs correctly.

Important: The search settings of general fields affect all pages, even those that are not products.

Page 163: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Page crawler search indexes read the content of pages while logged in under a user account. You can configure the following properties forevery page crawler index (on the tab of the index editing interface):General

Index property Description

User______________

Sets the user account that the crawler uses to index pages.Reading pages under a user allows the crawler to:

Load user-personalized content for the given userAvoid indexing of pages that the user is not allowed to access

If empty, the index uses the user account specified in Settings -> (or the default userSystem -> Default user ID administrator

account if the setting is empty).

On websites that use , you need to type theWindows authenticationuser name (including the Active Directory domain in format domain\

) and password. To guarantee that the crawler indexesusernameunder the specified Active Directory user, the covered pages cannotbe accessible by public users (i.e. Windows authentication must berequired).

Domain Sets the domain that the crawler uses when indexing sites. Enterthe domain name without the protocol, for example: www.domain.com

If empty, the crawler automatically uses the of the sitemain domainwhere the indexed pages belong.

For example, you can set a custom domain for thweb farm serversat do not have access to the main domain.

By default, page crawlers also index pages that use redirection from the site's main domain name to a . To only allow indexingdomain aliasfor pages that use the website's main domain, set the key to in your application's web.config file:CMSCrawlerAllowSiteAliasRedirect false

<add key="CMSCrawlerAllowSiteAliasRedirect" value="false" />

The key applies to all page crawler indexes in the system.

Customizing how crawlers process page content (API)

By default, the system converts the HTML output of pages to plain text before saving it to page crawler indexes:

Strips all HTML tagsRemoves the tag, tags and all JavaScriptHead StyleConverts all whitespace formatting to simple spaces

If you wish to index the content of any tags or exclude parts of the page output, you can customize how the crawlers process the HTML. Youneed to implement your custom functionality in a of the event of the class. Thishandler OnHtmlToPlainText CMS.Search.SearchCrawlerevent occurs whenever a page search crawler processes the HTML output of a page.

To assign a method as the handler for the event, add a new class to the folder of your web project (or OnHTMLToPlainText App_Code CMS on web application installations). For example, you can define the content of the class as shown below:App_AppCode -> Old_App_Code

Note: Page crawlers only index the content of pages that are on the live site.published

Page 164: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

using System;using System.Web;

using CMS.Base;using CMS.Search;using CMS.Helpers;

[DocumentCrawlerContentLoader]public partial class CMSModuleLoader{ /// <summary> /// Attribute class for assigning event handlers. /// </summary> private class DocumentCrawlerContentLoaderAttribute : CMSLoaderAttribute { /// <summary> /// Called automatically when the application starts. /// </summary> public override void Init() { // Assigns a handler for the OnHtmlToPlainText event SearchCrawler.OnHtmlToPlainText += newSearchCrawler.HtmlToPlainTextHandler(SearchHelper_OnHtmlToPlainText); } // Add your custom HTML processing actions and return the result as astring static string SearchHelper_OnHtmlToPlainText(string plainText, stringoriginalHtml) { string outputResult = originalHtml;

// Removes new line entities outputResult = outputResult.Replace("\n", " "); // Removes tab spaces outputResult = outputResult.Replace("\t", " ");

// Removes JavaScript outputResult = HTMLHelper.RegexHtmlToTextScript.Replace(outputResult, "");

// Removes tags outputResult = HTMLHelper.RegexHtmlToTextTags.Replace(outputResult, "");

// Decodes HTML entities outputResult = HttpUtility.HtmlDecode(outputResult);

return outputResult; }

}}

The event provides the following string parameters to the handler:OnHTMLToPlainText

plainText - the page output already stripped of all tags and converted to plain textoriginalHTML - the raw page HTML code without any modifications

 

Defining forum indexes

Page 165: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3. 4. 5.

When editing forum indexes on the tab in the application, select which the search index covers. YouIndexed content Smart search Forumsneed to define allowed or excluded forums.

 

Adding allowed forums

Click .Add allowed forumsUse the selector to choose the site whose forums you wish to index. Site name

If you select , all forums on all sites in the system will be indexed. Only websites assigned to the index on the tab(all) Sitesare available for selection.

If you selected a site in the previous step, click next to the field.Select ForumsUse the drop-down to select a forum group. The dialog lists the selected group's child forums.Forum groupTo include a forum in the index, select the appropriate check boxes and click .Select

Adding excluded forums

You can exclude individual forums if you have allowed for an index.all forums

To exclude a forum, click on the tab. The procedure is the same as when adding allowed forums.Add excluded forums Indexed content 

Defining custom table indexesWhen editing custom table indexs on the tab in the application, you can see a list of included Indexed content Smart search custom tables

in the index. To add custom tables to the index, click . You can also ( ) the way listed custom tables are indexedAdd custom table Edit

or ( ) them from the list.Delete

When adding a new custom table to the index or editing an existing one, you have the following options:

Custom table - selects which custom table is indexed.Where condition - sets the WHERE clause of the queries that the system uses to load data from the custom table when building theindex. Allows you to limit which records (rows) are included in the search index.

Alternatively, you can manually enter the code names of forums into the field, separated by semicolons. All forums on theForumsselected site can be added to the index this way, including group forums. The asterisk character (*) can be used as a wildcard forany number of characters. For example, entering adds all forums that contain the string in their code*community* communityname to the index.

Note: You need to the index on the tab in order for changes to take effect.Rebuild General

Page 166: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3.

1. 2.

a. b. c.

d.

 

Configuring search settings for custom table fields

Each custom table has a different set of fields and stores different types of data. You can configure exactly how the system searches throughthe fields of individual tables and how the data appears in the search results. We recommend indexing only necessary fields to keep yourindexes as small (and fast) as possible.

To edit the field search settings for custom tables:

Open the application.Custom tables

Edit ( ) a custom table.Select the tab.Search fields

In the top part of the tab, configure how the system displays records from the custom table in search results:

Title field - select the custom table field whose value is used for the title of search results.Content field - the field whose value is used for the content extract of search results.Image field - the field that contains the image displayed next to search results.Date field - the field whose value is used for the date and time displayed in search results.

The table in the bottom section of the tab determines how the smart search indexes the custom table's fields (as defined on the tab).FieldsYou can set the following options for individual fields:

Content If selected, the content of the field is indexed and searchable in thestandard way. All fields are automatically tokenized by theContentanalyzer of the used search index.

Searchable If selected, the content of the field can be searched usingexpressions in format:

<field code name>:<searched phrase>

See for more information about field searches.Smart search syntaxThis option must also be enabled for the field to be usable in Search filters.

Tokenized Relevant for fields. Indicates if the content of the field isSearchableprocessed by the analyzer when indexing. This allows the search tofind results that match individual tokens (subsets) of the field'svalue. If disabled, the search only returns items if the full value ofthe field exactly matches the search expression.

Custom search name Relevant for fields. The specified value is used as aSearchablesubstitute for the field code name in <field code name>:<searched

search expressions.phrase>

Note: If you enter a Custom search name value, the original fieldname cannot be used.

When running searches using custom table indexes, the system returns results according to the field search settings of individual tables. Thefield search settings are shared by all custom table indexes in the system. 

Defining on-line form indexesOn-line form indexes allow you to search through the data that website visitors submit through .forms

Adding forms to indexes

After you an index in the application, define which forms the index includes:create on-line form Smart search

Assign the index to one or more websites on the tab of the index editing interface.SitesOpen the tab and click .Indexed content Add on-line form

Select the that contains the required form (if the index is assigned to multiple websites).SiteSelect the .On-line form(Optional) Set a for the queries that the system uses to load the form's data when building the index. Where conditionAllows you to limit which form records are included in the search index.Click .Save

After you changes of the field settings, you need to all indexes that include the given custom table.Save Rebuild

You can add any number of forms to a single on-line form index.

Page 167: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

2.

3.

1.

2. 3. 4. 5.

6.

7. 8.

Switch to the tab and the index.General Rebuild

You can now assign the index to and search through the data of forms.Smart search web parts

 

Configuring search settings for form fields

Each form has a different set of fields and stores different types of data. You can configure exactly how the system searches through thefields of individual forms and how the form data appears in the search results. We recommend indexing only necessary fields to keep yourindexes as small (and fast) as possible.

Open the application.Forms

Edit ( ) the form that you want to configure.Open the tab.Search fieldsMake sure that the box is checked.Search is enabledSpecify how the system displays the form's records in search results:

Title field - select the form field whose value is used for the title of search results.Content field - the field whose value is used for the content extract of search results.Image field - the field that contains the image displayed next to search results.Date field - the field whose value is used for the date and time displayed in search results.

Configure how the smart search indexes the form's fields. You can set the following options for individual fields:

Content If selected, the content of the field is indexed and searchable inthe standard way. All fields are automatically tokenizedContentby the analyzer of the used search index.

Searchable If selected, the content of the field can be searched usingexpressions in format:

<field code name>:<searched phrase>

See for more information about fieldSmart search syntaxsearches. This option must also be enabled for the field to beusable in Search filters.

Tokenized Relevant for fields. Indicates if the content of theSearchablefield is processed by the analyzer when indexing. This allowsthe search to find results that match individual tokens (subsets)of the field's value. If disabled, the search only returns items ifthe full value of the field exactly matches the searchexpression.

Custom search name Relevant for fields. The specified value is used asSearchablea substitute for the field code name in <field code

search expressions.name>:<searched phrase>

Note: If you enter a Custom search name value, the originalfield name cannot be used.

Click .SaveRebuild all indexes that contain the given form.

When running searches using on-line form indexes, the system returns results according to the field search settings of individual forms.

Page 168: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4. 5. 6.

 

Defining user indexesWhen editing user indexes on the tab in the application, you can limit which are indexed. The tab Indexed content Smart search usersallows you to set the following limitations for user indexes:

Include hidden users - if enabled, hidden users will be indexed.Enabled users only - if enabled, only enabled users will be indexed.Index users from all sites - if enabled, users from all sites will be indexed. If disabled, only users from the sites assigned on the Sit

tab will be indexed.esUsers in roles - if entered, only users from the entered roles will be indexed.Users not in roles - if entered, only users who are not in the entered roles will be indexed.Where condition - sets the WHERE clause of the queries that the search runs against the view when building theView_CMS_Userindex. Allows you to create custom conditions for limiting which users are indexed.

 

Configuring search settings for user fields

You can configure exactly how the system searches through the data fields of user objects, and how the information appears in the searchresults. We recommend indexing only necessary fields to keep your indexes as small (and fast) as possible.

To edit the field search settings for users:

Open the application.Modules

Edit ( ) the module.Membership Open the tab.ClassesEdit the class.UserSelect the tab.SearchClick .Customize

In the top part of the tab, configure how the system displays users in search results:

Title field - select the field whose value is used for the title of search results.Content field - the field whose value is used for the content extract of search results.Date field - the field whose value is used for the date and time displayed in search results.

The table in the bottom section of the tab determines how the smart search indexes the user fields. The list contains fields from both the Userand classes. You can set the following options for individual fields:User - Settings

Content If selected, the content of the field is indexed and searchable in thestandard way. All fields are automatically tokenized by theContentanalyzer of the used search index.

Searchable If selected, the content of the field can be searched usingexpressions in format:

<field code name>:<searched phrase>

See for more information about field searches.Smart search syntaxThis option must also be enabled for the field to be usable in Search filters.

Note: You cannot change the image field for users. The search results display images.Avatar

Page 169: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Tokenized Relevant for fields. Indicates if the content of the field isSearchableprocessed by the analyzer when indexing. This allows the search tofind results that match individual tokens (subsets) of the field'svalue. If disabled, the search only returns items if the full value ofthe field exactly matches the search expression.

Custom search name Relevant for fields. The specified value is used as aSearchablesubstitute for the field code name in <field code name>:<searched

search expressions.phrase>

Note: If you enter a Custom search name value, the original fieldname cannot be used.

The field search settings are shared by all user indexes in the system. 

Defining general indexesGeneral indexes allow searching through any type of objects used within the system. This includes items you may recognize from theadministration interface, such as web parts, page templates, groups, sites etc.

When editing general indexes in the application, specify the content on the tab by defining the followingSmart search Indexed contentproperties:

Object name - sets the type of objects searched by the index. The index stores information representing objects in the system of thespecified type. When an object is created, removed or has one of its fields modified, the index automatically updates to reflect thechanges.Where condition - sets a custom WHERE clause for the queries that retrieve data when building the index. Allows you to limit whichrecords are included in the index.

After you select the object type, you need to configure which fields the index includes. Switch to the tab.Search fields

In the top part of the tab, configure how the system displays objects of the given type in search results:

Title field - select the object field whose value is used for the title of search results.Content field - the field whose value is used for the content extract of search results.Image field - the field that contains the image displayed next to search results.Date field - the field whose value is used for the data and time displayed in search results.

The table in the bottom section of the tab determines how the smart search indexes the object type's fields. These fields correspond with thecolumns of the database table that stores objects of the given type. You can set the following options for individual fields:

Content If selected, the content of the field is indexed and searchable in thestandard way. All fields are automatically tokenized by theContentanalyzer of the used search index.

Searchable If selected, the content of the field can be searched usingexpressions in format:

<field code name>:<searched phrase>

See for more information about field searches.Smart search syntaxThis option must also be enabled for the field to be usable in Search filters.

After you changes of the field settings, you need to all user indexes.Save Rebuild

Page 170: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Tokenized Relevant for fields. Indicates if the content of the field isSearchableprocessed by the analyzer when indexing. This allows the search tofind results that match individual tokens (subsets) of the field'svalue. If disabled, the search only returns items if the full value ofthe field exactly matches the search expression.

Custom search name Relevant for fields. The specified value is used as aSearchablesubstitute for the field code name in <field code name>:<searched

search expressions.phrase>

Note: If you enter a Custom search name value, the original fieldname cannot be used.

The configuration of search fields is global for objects of the given type. If you have multiple general indexes for one object type (i.e. usingthe same ), changing the search field settings for one index also affects the others.Object name

Click to use the default search field configuration for the object type. Confirm changes by clicking .Set automatically Save

 

Monitoring search indexing tasksTo view a list of all search indexing tasks that are waiting to be processed, open the application and select the tab.Smart search TasksIndexing tasks keep up-to-date according to changes made to the website content.smart search indexes

The system automatically creates indexing tasks when:

A page or object covered by a search index is created, removed or has one of its fields modifiedAn administrator or a search indexRebuilds Optimizes

If you encounter problems with new content not being indexed correctly, you can use the list of indexing tasks to investigate the issue. Thelist displays the following information for each indexing task:

General indexes and Sites

The content of general indexes is not affected by the selection made on the tab. It only determines on which websites theSitesindex will be available for use (through smart search web parts).

If you wish to configure a general index to search only through objects assigned to a specific site, we recommend using the Where property on the tab. For example, a general index with the and scondition Indexed content Group Object name GroupSiteID = 3

et in its only indexes groups created under the site with a SiteID equal to 3. This approach is only possible forWhere conditionsite-bound object types.

Page 171: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Task type - the action that the task will perform with the data of the search index (Update, Delete, Rebuild, Optimize, Process)Object type - the type of object for which the task was createdSearch field - the index field used to find the correct data item inside the search index ( in most cases)_idTask value - identifies the object related to the indexing task (through an ID or code name)Related object - the name of the specific object related to the indexing taskWeb farm serverTask created - the date and time when the system created the indexing taskResult - if an error occurs while processing the indexing task, you can view the error message details here

To clear the indexing queue or stop unnecessary indexing, ( ) individual tasks.Delete

By default, the system executes indexing tasks immediately when they are created. unlessThe list of indexing tasks is usually emptythere is a long-running rebuild task, or the application is generating a very large number of indexing tasks. You can disable automatic runningof indexing tasks by adding the key to the section of your application'sCMSProcessSearchTasksByScheduler /configuration/appSettingsweb.config file:

<add key="CMSProcessSearchTasksByScheduler" value="true" />

With the key set to true, the system creates search indexing tasks, but does not run them. In this case, you need to regularly process theindexing tasks using the . You cannot manually when the key is enabled.Execute search tasks scheduled task Process tasks

 

Adding search functionality to pagesKentico provides a set of smart search that you can use to build a search interface on the pages of your website. Only the mostweb partsimportant web part properties are mentioned here. For a complete list and explanations of the web part properties, click the help icon in thetop right corner of the web part properties window.

You can find the smart search web parts in the category.Full-text search -> Smart search

 

Smart search dialog with results

The Smart search dialog with results is an all-in-one web part that:

Allows users to searchDisplays the results

Dealing with task errors

If an indexing task results in an error, the system stops processing subsequent search tasks. Once you resolve the error or delete (

) the problematic task, you can run any remaining search tasks by clicking above the list.Process tasks

Executing search tasks via the scheduler on a web farm

If your environment runs in a web farm, you need to configure the scheduled task to be executed on eachExecute search tasks of the web farm servers individually. See .Configuring scheduled tasks to be executed on every server of a web farm

Page 172: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

The following properties are the most important for setting up the smart search:

Property name Description

Indexes Determines which the search uses. You can select multipleindexsearch indexes.

Transformation name Name of the that displays the search results.transformation

There are two default transformations suitable for this purpose:

CMS.Root.SmartSearchResultsCMS.Root.SmartSearchResultsWithImages

Search options Sets the level of syntax that is allowed in search expressions:

Basic - users are allowed to input special syntax, but cannotsearch specific fields.None - users can only enter text, everything is processed as apart of the search expression.Full - all search options can be used, including field searching.

See: Smart search syntax

Search condition Sets a condition that is added to any submitted search expressions.The condition is built using the smart search syntax, i.e. specialsymbols (+ -) and field conditions.

For example: +articleid:[(int)25 TO (int)150]

Page 173: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Search results order Defines the order in which search results are displayed.

You can specify one or more search fields (separated by commas)according to which the results will be sorted. Use the ##SCORE##macro to order results by their score (relevance). The default orderis ascending — you can reverse the order by adding the DESCkeyword (e.g. articleid DESC).

If you encounter the "Field <fieldname> does not appear to beindexed" error when using multiple indexes, try specifying the typeof the field, for example: (date)documentcreatedwhen

Smart search dialog

The Smart search dialog allows visitors to submit search requests and select the .Search mode

You need to place the dialog on a page together with the web part. The combined functionality of the two web parts isSmart search resultsnearly identical to the . Using separate web parts allows you to place the dialog and results into differentSmart search dialog with resultslocations on the page.

If you enable the dialog's property, the web part only displays the submit button without the search textbox andShow only search buttonmode selector. This functionality is intended for scenarios that utilize to specify all of the search parameters. You can addSmart search filtersthe textbox separately from the search button by connecting a web part in mode.Smart search filter textbox

Smart search box

The Smart search box allows visitors to submit search requests. The search box is useful for pages that have limited space and are notprimarily dedicated to searching. For example, you can add a search box to your website's main header. The web part handles searchrequests by redirecting users to a different page, where the or web part displaysSmart search results Smart search dialog with resultsthe results.

You can configure the Smart search box to . See fordisplay results instantly while users type the search text Setting up predictive searchmore information.

Smart search results

The Smart search results web part displays the results of search requests sent from or web parts.Smart search box Smart search dialog

To connect the search box or dialog to the search results:

Search dialog - place the dialog on the same page as the search results, copy the of the search results webWeb part control IDpart into the dialog's property.Result webpart IDSearch box - enter the relative URL of the page containing the search results into the search box web part's Search results page

property.URL

You can configure the Smart search results using the properties described for the Smart search dialog with results.

Page 174: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4. 5.

Smart search filter

The Smart search filter web part allows users to set parameters that affect the scope of the search or the order of the displayed results. Youcan also use the search filter to add a separate search textbox to pages.

See for more information.Using search filters

 

Setting up predictive searchPredictive search displays results immediately while users type search expressions. Seeing the results before submitting the search allowsusers to:

Find out if the entered keywords are relevantQuickly navigate to results without going through a dedicated search page

The predictive search functionality is implemented into the . When a user stops typing in the search box for 0.5Smart search box web partseconds, the web part runs a search request for the current text. The predictive search finds results using a set of assigned .search indexesA list of the top results appears directly below the search box. Users can open links to the relevant pages by selecting individual results of thepredictive search.

Enabling predictive search

To turn on predictive search for a Smart search box:

Open the application.PagesEdit the page containing your Smart search box on the tab.DesignConfigure the web part (double-click).Smart search boxCheck the property.Enable predictive searchAssign one or more search indexes through the property (in the category).Indexes Predictive settings

Note

The predictive search can use different indexes than the standard search. The functionality of the main search is alwaysdetermined by the indexes assigned to the web part on the target search results page.Smart search results

Page 175: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

5.

6. Click .OK

The search box now displays predictive results when users type search expressions. You can the appearance or behavior of thecustomizepredictive search.

 

Using the predictive search

When entering text into a search box with predictive search enabled, the results appear shortly after you stop typing. By default, thepredictive search separates results into groups. The groups represent the indexes where the search found matching results.

You can navigate directly to the pages linked by individual results of the predictive search:

Click the results in the list

OR

Move between results using the up/down arrow keys, and link to the selected item by pressing Enter

Alternatively, you can submit the search request and view the results page like with a standard search box.

You need to rebuild all that you plan to use for the predictive search after upgrading to Kentico version 8.search indexes

Page 176: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Customizing the predictive search

To adjust the basic behavior of the predictive search, configure the properties of the web part:Smart search box

Min. characters ( category) - sets the minimum number of characters that users need to type into the search boxPredictive settingsto trigger the predictive search.Max. results ( category) - sets the maximum number of search results that the predictive search displays.Predictive settingsEnable arrow key selection ( category) - if enabled, users can move between the predictive search results usingPredictive resultsthe up and down arrow keys, and link to the selected result by pressing Enter.

Additionally, you can configure the predictive search just like standard :smart search web parts

Set the Search modeAdd conditions to the search ( )Search conditionDetermine the order of the results ( )Search sortSet page filtering options

Predictive result groups

Groups help organize the search results if the predictive search uses multiple indexes. The default groups separate the results into sectionswith captions that match the of the related search index.Display name

To disable the default grouping, uncheck the property of the web part (in the catGroup results by index Smart search box Predictive resultsegory). It is recommended to disable grouping if your predictive search only uses one search index.

Result content and appearance

Modify the design of the predictive search results through the properties in the category of the web part.Predictive results Smart search box

The content of individual results is determined by the assigned in the  property. To allow userstransformation Search result transformationto open links for selected search results, include one element with a properly defined attribute in the transformation code. The URL<a> hrefautomatically opens when users select one of the predictive search results using the up/down arrow keys and press Enter.

You can change the following special result items by entering custom HTML content:

More results content - placed after the last search result if the maximum number of predictive results is reached. Use the forma{0}tting expression to get the URL of the full search result page assigned to the search box.No results content - displayed when the predictive search does not find any results.

To define CSS styles for the predictive search, edit the website's main .CSS stylesheet

The web part has a default styling that you may want to remove. You can do that in (application)Smart search box Web parts ->.Smart search box -> CSS

To change the names of the default CSS classes applied to the results, set the following properties of the webSmart search box

Page 177: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4. 5. 6. 7.

8. 9.

1. 2. 3. 4.

Tracking predictive search requests

You can enable or disable tracking for the predictive search through the properties in the category of the Predictive tracking Smart search web part:box

Log internal search activity - if enabled, the system logs every predictive search request as an Internal search on-line marketing.activity

Track web analytics search keywords - if enabled, the site's log all text submitted to the predictive search as part ofweb analyticsthe statistic.On-site search keywords

Example - Customizing the design of predictive search results

The following example shows how to change the appearance of highlighted results in the predictive search on the sample Corporate site.The customization also inserts the name of the related search index directly into individual result items (instead of using categories).

Configuring the Smart search box web part

Open the application for the sample Corporate site.PagesSelect the website root page in the content tree (Corporate Site).Open the tab and double-click the web part.Design Smart search boxCheck the property.Enable predictive searchSelect one or more (in the category).Indexes Predictive settingsUncheck (in the category).Group results by index Predictive resultsClick next to the property (in the category). Create the following ASCXNew Search result transformation Predictive resultstransformation:

<div class="customPredictiveResultItem"> <a href='<%# SearchResultUrl() %>'> <%# HTMLHelper.HTMLEncode(DataHelper.GetNotEmpty(Eval("Title"), "/")) %> </a> <span style="font-size: 7pt"> <%#CMS.Search.SearchIndexInfoProvider.GetSearchIndexInfo(Eval<string>("index")).IndexDisplayName %> </span></div>

Click and close the dialog.SaveSave & Close.

Modifying the Smart search box CSS styles

Open the application.Web partsSelect the web part in the tree ( ).Smart search box Full-text search -> Smart searchOpen the tab.CSSComment out the following default CSS classes:

part (in the category):Predictive results

Predictive results CSS class - specifies the name of the CSS class assigned to the block element that contains thepredictive search results.Selected result CSS class - specifies the name of the CSS class applied to the element containing the selectedpredictive search result.

Note: Tracking of predictive search requests may generate a large volume of irrelevant data (activities, keywords). The frequencyof the search requests depends on the typing patterns of your website's visitors. Keywords often include incomplete words orfragments.

Page 178: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

5.

6.

/*.predictiveSearchResults .selectedResult { text-decoration: underline;}

.predictiveSearchResults a { text-decoration: none;}*/

Add the following CSS class definitions: that styles are added directly in the web part for the purpose of this example. TNote he recommended approach for styling web parts

is using site stylesheets.

.customPredictiveResultItem { line-height: 160%; margin: 2px;}

.customPredictiveResultItem a { display: block; color: black; text-decoration: none;}

.customPredictiveResultItem.selectedResult { color: white; background-color: #326CA6;}

.customPredictiveResultItem.selectedResult a { color: white; text-decoration: none;}

Click .Save

Result

If you now try searching using the box in the header of the Corporate site, the results found in the assigned search indexes appear whiletyping.

Each result shows the name of the related search index.Selected predictive results are highlighted using a colored background instead of the original underline effect.

Page 179: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Configuring search assistance featuresThe provides several features that can help users find relevant results.smart search

Setting the search mode

The search mode determines how the search handles expressions with multiple words. The following options are available:

Any word - finds items that contain at least one of the words in the search expression.Any word or synonyms - works like mode, but also finds items that contain synonyms of at least one word in the searchAny wordexpression. Only works for English by default. See for more information.Configuring the synonym searchAll words - finds only items that contain all of the words in the search expression (anywhere in the text).Exact phrase - finds items that contain the exact search expression, including word order.

To set the search mode, you can either:

Assign a fixed for your or Search mode Smart search box Smart search dialog web partsAllow users to select the search mode for every search request (available for the if the proSmart search dialog Show search modeperty is enabled)

Page 180: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

1.

Enabling typo-tolerant search (fuzzy searching)

You can configure the smart search to return results for words that are only approximate matches. Typo-tolerant searching allows users toget correct results even if there are misspelled words in the search expression. For example, searching for also matches words such ascode

or .core node

The system evaluates approximate matches based on (the number of required character substitutions, insertions or deletions).Edit Distance

To enable the typo-tolerant search:

Configure the  that you use to get and display search results ( or ).web part Smart search dialog with results Smart search resultsCheck in the category.Typo tolerant search Search settingsClick .OK

The search now finds words that are similar in spelling to the search terms.

  

Configuring the synonym search

Search requests that use the allow users to find a wider set of results based on synonyms.Any word or synonyms search mode

The synonym search works by expanding all words in the search expression into a list of synonyms. For example, when searching for thewords , the synonym search expands the expression to:"search assistance" " explore hunt hunting look lookup research seek search assis

aid assist help"tance

The system looks up the synonyms inside index files stored in the  folder. By default,~\App_Data\CMSModules\SmartSearch\_SynonymsKentico contains a synonym index for English based on the lexical database.WordNet

Setting the relevance of synonyms

You can change the relevance (result score) that the search assigns to items found through the synonym search. Add the CMSSearchSyno key into the section of your application's file, for example:nymsWeight appSettings web.config

<add key="CMSSearchSynonymsWeight" value="0.8" />

The key's value must be a decimal number ranging from 0 to 1. A larger number assigns higher relevance to synonyms. If you set 1, thescore of synonyms is equal to words in the original unexpanded search expression. The default value is 0.9.

Enabling synonym search for non-English languages

To extend the synonym search for languages other than English, you need to create a Lucene search index containing the synonym data.You can use the following approach:

Obtain a WordNet synonym database for the required language. The database must be in Prolog format.

Note:

The typo-tolerant search only works for search requests that use the .Any word Search modeTypo-tolerant search may prevent from working correctly (for example field search). When usingadvanced search syntaxtypo-tolerant search, we recommend setting the property of the search result web part to .Search options None

Page 181: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4.

5.

6.

1.

2. 3. 4. 5.

1. 2.

Download the (Apache-Lucene.Net-3.0.3-RC2.src.zip).Lucene.Net SourceUnzip the Lucene.Net package.Use the class to generate the synonym index.src\contrib\WordNet\Syns2Index\Syns2Index.cs

You can run the class by debugging in Visual Studio, or using the .Visual Studio Command PromptSpecify the Prolog database file ( extension) and the output directory for the index files as parameters, for example:.pl

Syns2Index wn_s.pl IndexOutput

Compress the synonym index files into a zip archive.The name of the zip file must match the culture code of the given language. You can use neutral culture codes to representlanguages in general (such as ) or the codes of specific countries/regions (such as ).fr fr-FR

Place the synonym index zip file into the folder in your Kentico web project.~\App_Data\CMSModules\SmartSearch\_Synonyms

The search expands words into synonyms according to the website's (language). The supported languages depend on the synonymcultureindex files that are present in your web project.

Setting up substring search and word stemming

Substring search and word stemming are assistance features that allow users to find results for:

Words that contain the search termsClosely related words

To enable word stemming or substring search, you need to index content using the appropriate analyzers. The smart search uses analyzersto divide text into . Every has its own analyzer. The analyzers process both the indexed content andsearchable tokens smart search indexthe search expressions entered by users. The search classifies words in the search expression as a match if they share at least one tokenwith the indexed content.

To change the analyzer type of a search index:

Open the application.Smart search

Edit ( ) the index.On the tab, select the .General Analyzer typeClick .SaveRebuild the index.

Substring search

If you create your using substring analyzers, the search returns results for items that contain the search terms inside largersearch indexeswords or text sequences. Select one of the following analyzer types:

Analyzer type Description

Subset Indexes with subset analyzers return results for all words thatcontain the search term (the analyzer creates tokens for all possiblesubstrings in words).

For example, searching for matches words such as , net net Internet, or .network kinetic

Starts with Allows searching for all words that start with the search term(creates tokens for all prefixes contained in words, including thewhole word).

For example, searching for matches words such as , , test test tests t...ester

The and analyzers use the following steps to process text:Subset Starts with

Divide text into "words"Create search tokens for the substrings inside the words (according to the analyzer type)

By default, the words created in the first step may contain the following characters:

word characters (upper and lower case letters, numbers, underscores)at symbols (@)

You can find a list of WordNet projects at .http://globalwordnet.org/

Page 182: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

1. 2.

periods ( . )

Any other characters split the text into separate words. This allows the analyzers to correctly create substring search tokens for text entitiessuch as e-mail addresses and internet domain names.

To customize how the analyzers separate text into words:

Write a matching all characters that you want to allow inside words.regular expressionAdd the key into the section of your application's file, and set the regularCMSSubsetAnalyzerWordRegex appSettings web.configexpression as the value, for example:

<add key="CMSSubsetAnalyzerWordRegex" value="(\w|@|\.|\$)+" />

The sample expression above allows the dollar sign in addition to the default characters. As a result, search indexes with or Subset Starts analyzers can now find expressions such as: with $Var

Word stemming

Stemming is the removal of suffixes from words. If you create your using stemming analyzers, the search matches words thatsearch indexeshave the same basic meaning, but different inflection. For example, users can find:

Inflected words when searching for a stem (program -> programs, programming)Word stems when searching for inflected words (trusted, trusting -> trust)Any words that share the same stem as the search terms (conditional -> conditions)

The stemming analyzers process text in two steps:

Divide text into tokens (words) using a base analyzer.Reduce the tokens into their stem form.

You can select three variations of stemming analyzers, each with a different base analyzer:

Analyzer type Base analyzer description

Simple with stemming Divides text into tokens at non-letter characters.

Stop words with stemming Uses a predefined collection of stop words to divide text.

White space with stemming Divides text at whitespace characters.

When users search for text using an index with a stemming analyzer, the analyzer also processes the search expression. As a result, thesearch finds all items containing words that share the same stem.

 

Searching attachment filesThe allows users to search through the content of files uploaded as . The attachment search supports bothsmart search page attachmentstypes of provided by Kentico (database or file system).file storage

Choosing which file types are searchable

Note: After changing the value of the CMSSubsetAnalyzerWordRegex key, you need to your search indexes that use Rebuild Sub or analyzers.set Starts with

Stemming does not find matches for all words that share the same morphological root — only words that have an identical or verysimilar meaning. For example, the words "flawed" and "flawless" do not have the same stem. Please keep in mind that wordstemming does not work perfectly for all word combinations.

The smart search stemming analyzers are based on the .Porter Stemming Algorithm

Note: The default stemming analyzers only work for English text.

The attachment search only works for files that are connected to pages through one of the following methods:

Attachment files added to pages through fields with the set to or in the Data type File Attachments page type definitionAttachments uploaded in the application on the tab of pagesPages Properties -> Attachments

Page 183: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

1. 2. 3. 4. 5.

By default, the attachment search supports the following file types:

txtcsvpdfdocxxlsxpptxxmlhtmlhtm

You can limit which of the file types are searchable for individual websites:

Open the application.SettingsSelect the category.System -> SearchFill in the setting.Allowed attachment file types

Enter a list of allowed file extensions without dots, separated by semicolons. If you leave the setting empty, the searchworks for all of the available file types.

Click .Save

If you wish to search other file types, you need to:

Implement a custom search text extractor

OR

Use the SQL attachment search

  

Enabling indexing for page attachments

The attachment search is a part of the functionality of standard . The attachment search is NOT available for tyPage indexes Pages crawlerpe indexes, which directly index the HTML output of pages.

To set up the attachment search for your website:

Open the application.Smart searchCreate or edit a .Page search indexWhen defining the search content on the tab, check for the index's allowed content.Indexed content Include attachment contentClick .SaveSwitch to the tab and the index.General Rebuild

While building the page index, the smart search processes the allowed pages, extracts the text of any attachment files and includes it in thecontent of the index (along with the other page data). When users perform a search using the index, the system returns results for pageswhose attachments match the search expression.

Configuring the attachment search

You can adjust how the system indexes attachment files by adding keys to the section of your application's file.appSettings web.config

Note: The search does NOT work for:

Legacy MS Office formats: doc, xls, pptEncrypted PDF files

1. 2. 3.

Updating the search content of attachments (Upgrades and Hotfixes)

Kentico stores the text content extracted from page attachments in the database. When rebuilding page indexes, the search loadsthe "cached" attachment text from the database. The system only processes the file text directly for attachments that do not haveany search content saved.

If you apply a hotfix or upgrade that changes how the search indexes attachment files, you need to clear the attachment searchcontent:

Open the application.SystemSelect the tab.Files -> AttachmentsClick .Clear attachment search cache

You can then your page indexes, which updates the attachment content according to the new functionality.Rebuild

The indexed content always includes:

Page 184: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Limiting the maximum size of indexed files

Indexing of very large files can be resource intensive and have a negative impact on your website's performance. To prevent the system fromindexing files larger than a certain size, add the key:CMSSearchMaxAttachmentSize

<add key="CMSSearchMaxAttachmentSize" value="10000" />

They key sets the maximum allowed file size in kB. The search ignores page attachments whose size exceeds the value.

Indexing of XML content

When indexing the content of XML files, the search does NOT include the following content by default:

CommentsThe values of tag attributes

You can enable indexing for such content by adding the following web.config keys:

<add key="CMSSearchIndexXmlComments" value="true" /><add key="CMSSearchIndexXmlAttributes" value="true" />

Enabling character encoding detection for text files

By default, the search can read text files ( and ) that use the following character encoding:txt csv

UTF-8The default Windows encoding (the operating system's current ANSI code page)

If you encounter problems when indexing text files with a different encoding type, you can enable automatic encoding detection:

<add key="CMSSearchDetectTextEncoding" value="true" />

The system then attempts to detect the encoding type for each file, and use the correct option when reading the content during the indexingprocess.

 

Configuring SQL search for attachment filesYou can use the SQL search to find results in the content of files uploaded into the database.page attachment

The SQL attachment search uses the standard Microsoft SQL Server full-text search engine. The search is available for all supportedversions of SQL Server:

SQL Server 2008SQL Server 2008 R2SQL Server 2012

File metadata (title, tags, author name etc.)Comments (for example in MS Office files)

Note: Correct encoding detection is not guaranteed for all files. Automatic detection also slightly increases the time required toindex text files.

Important: To search common file types (TXT, CSV, HTML/XML,  , MS Office open xml formats), use the fePDF attachment search. Only use the SQL search if you need to search file formats that are not supported, such as theature of smart search page indexes

legacy MS Office formats: DOC, XLS, PPT

Prerequisites:

Full-text search support must be installed on your SQL Server. The full-text search is available for all editions of MicrosoftSQL Server, including the Express Edition with Advanced Services.Your Kentico website must be configured for storing files in the database (Settings -> System -> Files -> Store files in

Page 185: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3.

4.

Use one of the following guides to configure your Kentico database for SQL search of attachment files:

Manually configuring full-text search on MSSQL ServerEnabling full-text search on MSSQL Server - Script

 

Manually configuring full-text search on MSSQL Server

Use the following steps to configure your Kentico database for full-text search in file attachments:

Start .Microsoft SQL Server Management StudioIf you cannot use SQL Server Management Studio on your database server, you can configure the full-text search through a

instead.script

Locate your Kentico database.Unfold the sub-folder, right-click and click .Storage Full Text Catalogs New Full-Text Catalog

Type a and click .Full-text catalog name OK

).database

Supported file types

The standard full-text search engine delivered with Microsoft SQL Server can search the following file types:

TXTHTMLDOCXLSPPT

If you want to search other types of text files, you need to install appropriate IFilter libraries. You can download or purchase IFilterlibraries from third-party vendors.

Page 186: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

5. 6. 7.

a. b. c.

Right-click the new full-text catalog and choose .PropertiesIn the Full-Text Catalog Properties dialog, click the tab.Tables/ViewsAssign the table to the catalog.CMS_Attachment

Check the box next to the columnAttachmentBinarySet the to or another valueLanguage for Word Breaker EnglishSet the to Data Type Column AttachmentExtension

Page 187: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

7.

8. Click .OK

You can now the SQL attachment search with smart search results or attachments for the SQL search.combine enable

Enabling full-text search on MSSQL Server - Script

If you cannot use SQL Server Management Studio to configure the full-text search, run the following script against your Kentico database:

Page 188: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

-- Allows IFilter library loadingexec sp_fulltext_service 'verify_signature', 0exec sp_fulltext_service 'load_os_resources', 1

-- Creates the Full Text Catalog exec sp_fulltext_catalog 'KenticoCMSCatalog','create'

-- Adds the CMS_Attachment table to the catalogexec sp_fulltext_table'CMS_Attachment','create','KenticoCMSCatalog','PK_CMS_Attachment'

-- Sets the data column of the CMS_Attachment table in the catalogexec sp_fulltext_column'CMS_Attachment','AttachmentBinary','add',NULL,'AttachmentExtension'

-- Populates the catalogexec sp_fulltext_table 'CMS_Attachment','start_full'

You can now the SQL attachment search with smart search results or attachments for the SQL search.combine enable

Combining the SQL attachment search with the Smart search

Once you have the SQL server set up, you can configure your to run SQL searches through the content ofsmart search result web partspage attachments.

Enable SQL attachment searching through the properties of the or web part:Smart search dialog with results Smart search results

Property name Description

Enable SQL attachment search If checked, the web part runs an SQL attachment search for everysearch request and combines the results with the results providedby the assigned indexes.

WHERE condition WHERE condition used to limit the scope of the attachment searchfor the web part. You can use the condition to:

Specify which pages have their attachments searchedUse the columns of the table to search onlyCMS_Attachmentattachments of a specific type, for example: AttachmentExtension = '.txt'

ORDER BY expression ORDER BY expression that determines the order of pages retrievedby the attachment search in the results.

When users perform a search and the system finds a match in the attachment of a page, the given page is added to the search results. Theattachment results are always interlaced with the other results provided by the specified smart search indexes. This behavior is by designand cannot be modified.

The attachment search is performed by the SQL server, so it is not affected by the settings and restrictions of the used search indexes. Tolimit the attachment search scope, enter an appropriate value into the property of the used web part. For example, if youWHERE conditionhave a search results web part using a page index that is limited to the section of your website, you need to add the following /News/% WHE

to ensure that the attachment search is also restricted to these pages: RE condition NodeAliasPath LIKE '/News/%'

Enabling attachment search for the SQL search

Perform the following steps if you wish to search attachments using the :SQL search

Open the application.Page typesEdit the page type.RootSelect the tab.QueriesEdit the query and uncomment the following part of the code:searchattachments

The search only returns pages if they are directly connected to the matching attachment through one of the following methods:

Attachment files added to pages through fields with the set to or in the .Data type File Attachments page type definitionAttachments uploaded in the application on the tab of pagesPages Properties -> Attachments

Page 189: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

SELECT View_CMS_Tree_Joined.*, View_CMS_Tree_Joined.NodeName ASSearchResultNameFROM CMS_Attachment INNER JOIN View_CMS_Tree_JoinedON View_CMS_Tree_Joined.DocumentID = CMS_Attachment.AttachmentDocumentIDWHERE (##WHERE##) AND(([AttachmentName] Like N'%'+ @Expression + N'%') OR ([AttachmentTitle] LikeN'%'+ @Expression + N'%') OR ([AttachmentDescription] Like N'%'+ @Expression +N'%')) OR (FREETEXT(AttachmentBinary, @expression)) ORDER BY ##ORDERBY##

The SQL search automatically includes the results from the attachment search. 

Using search filtersThe allows users to limit the range of objects that will be searched (conditional filter), or define the order of theSmart search filter web partsearch results. You can connect any number of filters to the or .Smart search dialog Smart search dialog with results

The behavior of the smart search filter is primarily defined by the properties described below.

Property Description

Search dialog web part ID Enter the of the Smart search dialog or SmartWeb part control IDsearch dialog with results web part that you wish to connect to thefilter.

Filter mode Sets the user interface type of the filter. Possible choices are:

Drop-down listCheckboxesRadio buttonsText box

Filter auto postback Indicates whether the search results automatically refresh (viapostback) whenever a user selects a different filtering option. Notapplicable when using the .Text box Filter mode

If you enable auto postback for a search filter, also set the Paging property to for the related  or mode Postback Smart search results

web part.Smart search dialog with results

Values Determines the available filtering options. See the Defining section below for details.filtering options

Query name Allows you to generate the filtering options dynamically based ondata in the system. Specify the name of an SQL query that loadsthe required data (instead of using the property). Enter theValuesfull code name of the query or an existing query.Select

The query must return the appropriate values depending on thetype of the filter. For example, for a standard conditional filter, thequery needs to return three columns in the following order: <indexfield name>,<value of the field>,<displayed text>

For more information, see Example - Loading filtering options.dynamically

Filter clause Sets a clause that overrides the logical values specified for filteringoptions. Possible choices are:

None - no clause is added and the original logical values setfor individual filtering options are used.Must - indicates that the conditions in all filtering options mustbe fulfilled (adds the + symbol).Must not - indicates that the conditions in all filtering optionsmust not be fulfilled (adds the - symbol). Conditions areinverted compared to the option.Must

You can find information about the other properties by clicking the help link in the corner of the web part properties dialog.

Page 190: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Filter is conditional If true, the filter limits the scope of the objects that are searched(where condition). If false, the filter determines the order in whichthe search results are displayed (order by condition).

You can find examples of search filters on the sample Corporate Site on the Examples -> Web parts -> Full-text search -> Smart search and pages.-> Smart search filter Faceted search

  

Defining filtering options

The most important part of configuring Smart search filter web parts is the definition of the filtering options offered to users. In most cases,you will set the options through the property of the web part. If you wish to use the property to load the optionsValues Query namedynamically, the rules described below also apply to the results retrieved by the query.

The format of the filtering options depends on the type of the filter.

Conditional filters

In the case of conditional filters, define one option per line in format:

Index field name;Value of the field;Displayed text

You need to specify the logical meaning of each filtering option by adding the + or - symbol as a prefix:

+ The search only returns objects whose value in the field matchesthe value specified in the second part of the filtering option'sdefinition.

- The search all results whose value in the field matchesexcludesthe value specified in the second part of the filtering option'sdefinition.

To create filtering options that check the values of multiple index fields, use the following syntax: (Field1:(Value1) OR Field2:(Value2));;Text

If you wish to use the same value for all fields in the condition clause, you can insert the value using the expression: {0} (Field1{0} ORField2{0};Value;Text

Examples:

;;All+classname;cms.smartphone;Smartphones+_created;[{%ToSearchDateTime(CurrentDateTime.AddDays(-7))%} TO {%ToSearchDateTime(CurrentDateTime)%}];Past week+_content;product;Results related to products+(documenttags{0} OR _content{0});product;Results related to products-(issecurednode:(true) OR requiresssl:((int)1));;Exclude secured pages

Search result order filters

When creating filters that change the order of the results (i.e. the property is disabled), define options in the followingFilter is conditionalformat:

Index field name;;Displayed text

The order is determined according to the values in the specified field.

Examples:

##SCORE##;;Scoredocumentcreatedwhen;;Creation dateSKUPrice DESC;;Price descending

When entering , or type fields as filter options, you need to specify the type of the value:integer floating-point(double) decimal

+DocumentCreatedByUserID; 53;Administrator(int)

Notes:

By default, the order is ascending. To make the order descending, add the DESC keyword after the field name.Use the macro instead of the field name to order results according to their search relevance (the score order##SCORE##is always descending and cannot be reversed).

Page 191: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Text box filter mode

Text box filters do not offer any selection options, so the property instead determines which index fields the system searches when aValuesuser enters an expression into the text box. You can specify multiple fields, each one on a new line. Like with standard conditional filters, the+ and - symbols determine whether the search returns results that contain the text box value in the given field, or only those that do not.

For example, if a text box filter has in the definition, visitors can enter the names of into the text box and+DocumentTags Values page tagsperform a standard search. The filter modifies the retrieved results to contain only pages that are marked by the specified tags.

Use the following syntax to create OR conditions that are fulfilled if the text box value matches at least one of multiple fields: (Field1{0} ORField2{0})

For example: +(DocumentTags{0} OR _content{0})

The expression represents the value that users type into the text box filter. The search internally converts the expression to i{0} Field:(value)n the resulting condition.

You can also use text box filters to determine the order of the search results. In this case, disable the filter web part's prFilter is conditionaloperty and leave the property empty. Users can then enter the name of the field used for ordering into the text box. This scenario isValuesnot recommended for use by regular visitors on the live site.

Example - Loading filtering options dynamically

The examples in this section demonstrate how to create conditional filters with dynamically loaded options. The sample filters are intendedfor product search results.

The first filter provides checkboxes representing all available product page types. Add a web part to your search resultsSmart search filterpage and configure the following properties:

Filter mode: CheckboxQuery name: Create a query with the following code:New

SELECT 'classname', ClassName, ClassDisplayNameFROM CMS_ClassWHERE ##WHERE##ORDER BY ##ORDERBY##

Query WHERE condition: ClassIsDocumentType = 1 AND ClassIsProduct = 1Query ORDER BY clause: ClassDisplayNameFilter clause: MustFilter is conditional: Yes (selected)

The query returns three columns:

'classname' - a static value that is the same for all filtering options. Specifies the name of the search index field whose value thecondition checks.ClassName - the value of the column for records of the table. Search results must match this value to fulfillClassName CMS_Classthe filter's condition when the given option is selected.ClassDisplayName - the value of the column for records of the table. Used for the text captions ofClassDisplayName CMS_Classthe checkboxes in the filter.

The following are examples of rows that the query could return:

classname DancingGoat.Coffee Coffee

classname DancingGoat.Ebook E-book

Tip: To create a text box filter that behaves like a regular search box, use + as the only field name._content

In order for the filter to work correctly, the data fields used in the option definitions must be set as in the smart searchSearchablefield configuration of the given object type.

You can also create filtering options for the fields that are marked as by using as the field name. Such conditionsContent _contentare fulfilled if the value is found in any of the content fields.

The ##WHERE## and ##ORDERBY## expressions are placeholders that are replaced by the values of the web part's Qu and properties.ery WHERE condition Query ORDER BY clause

Page 192: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3.

4.

classname DancingGoat.Kettle Kettle

Setting the property to means that the value of search results must match the value of at least one of theFilter clause Must classnameselected checkbox options to fulfill the filter's condition.

The web part processes the query result data and internally generates the final search filtering options. The following is an example of afiltering option definition generated by the query: +classname;DancingGoat.Coffee;Coffee

This option appears as a "Coffee" checkbox in the filter. When selected, the filter ensures that the search results only display pages whosevalue in the field matches (i.e. product pages of the page type).classname DancingGoat.Coffee Coffee

Loading filtering options with non-string values

The second product filter provides a drop-down selector containing all available brands (manufacturers). Add another weSmart search filterb part to your search results page with the following properties:

Filter mode: Dropdown listQuery name: Create a query with the following code:New

SELECT '', '', '(Select Brand)' as ManufacturerDisplayNameUNIONSELECT 'SKUManufacturerID', '(int)' + CAST(ManufacturerID AS VARCHAR(10)),ManufacturerDisplayNameFROM COM_ManufacturerWHERE ##WHERE##ORDER BY ##ORDERBY##

Query WHERE condition: ManufacturerEnabled = 1Query ORDER BY clause: ManufacturerDisplayNameFilter clause: MustFilter is conditional: Yes (selected)

The query fills the drop-down filter with a list of all manufacturers in the database and a static option. The filter ensures that(Select Brand)the search results only display product pages whose manufacturer matches the selected option.

Filtering without search text (Faceted search)

You can implement a faceted search based exclusively on filters. Faceted search allows users to get search results simply by selectingfiltering options, without the need to enter and submit search text. To achieve this result, the properties of the web part that youConfigureuse to ( or ) according to the following instructions:display search results Smart search results Smart search dialog with results

Make sure that the property is disabled.Search text requiredLeave the property disabled, unless you wish to force users to use a filtering option that works with standardBlock fieldonly searchcontent fields (i.e. filtering options that have as their field name)._contentEnable (ensures that the web part automatically displays results whenever the page is loaded, evenSearch on each page loadwithout input from a search dialog).For additional convenience, enable the property for your web parts (instantly refreshes theFilter auto postback Smart search filtersearch results after users change the filtering options).

 

Smart search syntaxUsers can submit advanced search expressions using the Lucene query parser syntax. You can find detailed information at:http://lucene.apache.org/core/old_versioned_docs/versions/3_0_3/queryparsersyntax.html

To allow the advanced syntax, configure the  property of the or Search options Smart search dialog with results Smart search results we. You can choose one of the following levels of supported syntax:b part

None - the search does not recognize any Lucene query syntax. The system processes all text entered by users as a part of thesearch expression.Basic - the search recognizes all query syntax, .except for field searchingFull - the search processes all search query syntax, including field searching.

The first SELECT statement in the query prepares a static option without any filtering restrictions. The static(Select Brand)option is then combined with the dynamically loaded options using a UNION operator.

Like with static filtering options, the data type of values must be specified for , or tinteger floating-point(double) decimalype fields (such as ). The part of the query loadsSKUManufacturerID '(int)' + CAST(ManufacturerID AS VARCHAR(10))the manufacturer ID values and adds the prefix. When using SQL Server 2012 or newer, you can call the S(int) CONCATQL method instead, for example: CONCAT('(int)', ManufacturerID)

Page 193: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Field search

Field searching allows users to define additional conditions in search expressions. All conditions must start with either the + or - symbol. The+ symbol indicates that only results which fulfill the field condition should be returned. The - symbol has the opposite meaning, only resultsthat do contain the specified value in the given field are retrieved.not

For example:

+network +NewsReleaseDate:[20080101 TO 20091231]

When searching for this expression using a page index, the smart search returns only news pages containing the word , released innetworkthe year 2008 or 2009.

Unless the web part used to display the search results has the property enabled, it is also possible to perform directBlock field-only searchfield searches without any standard content keywords. This allows users to find records simply by entering an exact field value:

DocumentNodeID:(int)17 - returns the page with a nodeID equal to .17NewsTitle:"New features" - returns the news page titled .New featuresSKUDepartmentID:(int)4 - returns all products that belong to the department that has as its ID.4

Searching text fields

When searching in text fields, you do not need to specify the type of the value. However, keep in mind the following when searching forvalues containing :spaces

Search values containing one or more spaces must be enclosed in quotes, for example: NewsTitle:"New features"Text fields must be set as in the field configuration of the searched object type in order for the search to find matches forTokenizedvalues containing spaces.

Searching numeric fields

When performing field searches, the values specified are processed as strings by default. If you are searching in , Integer Floating-point or type fields, you need to explicitly specify the data type of values in the search syntax:(double) Decimal

NewsID: 22(int)SKUPrice: 255.0(double)DecimalField: 9.99(decimal)DocumentNodeID:[ 1 TO 100](int) (int)

Searching date and time fields

Use the following syntax to search in DateTime fields: .<field name>:yyyymmddhhmm

For example:

DocumentCreatedWhen:200812230101

Note: The system does not process advanced query syntax for search requests that use the Any word or synonyms Search.mode

Search syntax errors

If you allow advanced search expressions through the property, a parsing error occurs if a user enters the querySearch optionssyntax incorrectly.

By default, syntax errors cause the search to show the standard "No results" message, and the system enters the error into theapplication's . If you wish to view syntax errors in place of the results directly on the live site, enable the Event log Show parsing

property of the given smart search results web part.errors

Field search requirements

Field search only works for fields set as in the of the searched object type. If there is noSearchable field configurationfield name specified before a value in the search expression (such as the word in the example above), the systemnetworksearches the index fields marked as .ContentThe system only processes field searches correctly if the has its set to .search dialog web part Search mode Any words

Tip: Using field search queries provides a great deal of flexibility, but is not convenient for regular website visitors. If you wish toallow users to limit the scope of searches through conditions on the live site, we recommended creating Search filters.

Page 194: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

DocumentCreatedWhen:[200902020101 TO 200906020101]

If you need to specify date and time values through , call the method to convert the values to the suitable format.macros ToSearchDateTimeFor example:

{% ToSearchDateTime(CurrentDateTime) %}{% ToSearchDateTime(CurrentDateTime.AddHours(12)) %}{% ToSearchDateTime(CurrentUser.UserCreated, CurrentDateTime) %}

The method's second optional parameter sets a default DateTime value returned if the first parameter is null.ToSearchDateTime

Field search with Stop and Simple analyzers

Indexes created by Stop and Simple analyzers cannot be searched using the standard field search format. This is by design, but you can usea workaround with a range query containing identical boundaries:

newsid:[(int)22 TO (int)22] 

Displaying search results using transformationsYou can use the following default to display search results using the and transformations Smart search dialog with results Smart search

web parts:results

CMS.Root.SmartSearchResultsCMS.Root.SmartSearchResultsWithImages

The system returns search results in a . No matter how the fields are named in the found objects, the search dataset alwayssearch datasetcontains the following fields that are automatically mapped to the corresponding object fields:

Search result field Description

score Expresses the relevance of the search result item as a numericvalue. Higher values indicate higher relevance.

title Mapped to the field selected as the on the Title field Search fieldstab for the given object type.

content Mapped to the field selected as the on the Content field Search tab for the given object type.fields

created Mapped to the field selected as the on the Date field Search fieldstab for the given object type.

image Mapped to the field selected as the on the Image field Search tab for the given object type.fields

index The code name of the where the given result wassearch indexfound.

imageClass__________________

Available for page search results. The field contains theimageClassname of the CSS class that defines the font icon representing theMIME type of the given page. The system generates the classbased on the URL extension of the page (automatic for CMS.Filepages).

For example, you can display the MIME type font icon in yoursearch results using the following transformation code:

<i class="<%# Eval("imageClass")%>"></i>

In the code of ASCX transformations, you can get the values from the dataset by using the method: , Eval("<field name>") Eval("score") Eva, etc.l("title")

You can also use the following methods in your transformations:

Method Parameters Description and examples

Page 195: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

SearchResultUrl bool absolutebool addLangParameter

Returns the URL of the page containing thedetails of the search result.

The optional 'absolute' parameterindicates if the returned URL isabsolute. 

False by default.The optional 'addLangParameter'indicates if a culture specific queryshould be added to the URL. 

True by default. Note that clickinga link leading to a different culturechanges the visitor's site culture.

<%# SearchResultUrl(true, false) %>

Note: The method doesSearchResultUrlnot return valid URLs for search resultsproduced by , since thegeneral indexesindexed objects are not pages and there isno default page to display the object details.You need to write and use a custom

to generate thetransformation methodcorrect URL of a custom page displaying theappropriate information.

Combine with default culture 

When the Combine with default culture setting is enabled, visitors will see pages in thedefault culture if they aren't translated totheir current culture.

If the addLangParameter is set to false,the site culture will NOT change oncevisitors click the link leading to the pagein the default culture. That is, they keepon browsing the site in the culture theymade the search in.If the addLangParameter is set to true,the site culture will change once visitorsclick the link leading to the page in thedefault culture. That is, they keep onbrowsing the site in the default cultureafterwards.

SearchHighlight string textstring startTagstring endTag 

Wraps the text of the first parameter into thetags specified by the other two parameters.

<%#SearchHighlight(SearchResultUrl(),"<strong>","</strong>")%>

GetSearchImageUrl string noImageUrl int maxSideSize 

Returns the URL of the current searchresult's image.

The first parameter specifies the URL usedif no image is found – enter either the fullrelative path starting from the applicationroot (~/), or a partial path starting from the ~/

directorApp_Themes/<skin_folder>/Images/y. The second parameter specifies themaximum side size to which the methodresizes the image.

<%#GetSearchImageUrl("~/App_Themes/Default/Images/CMSModules/CMS_SmartSearch/no_image.gif", 90) %>

<%#GetSearchImageUrl("/CMSModules/CMS_SmartSearch/no_image.gif", 90) %>

Page 196: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3. 4. 5.

1. 2. 3. 4. 5.

GetSearchValue string columnName_____________________

Returns the value of the specified field forthe current search result. Allows you toaccess both the general fields of the givenobjects type (page, custom table etc.) andany other fields included in the searchindex.

<%# GetSearchValue("DocumentName")%>

GetSearchedContent string content Parses the searched content as XML ifrequired, and removes dynamic controlsand macro expressions.

 

Searching according to page permissionsYou can set the smart search to filter out results for pages that users are not allowed to access:

Open the application.PagesSelect the page containing the you use to get and display search results ( or web part Smart search dialog with results Smart

).search resultsSwitch to the tab and configure the web part (double-click).DesignEnable in the category. Check permissions Page filterClick .OK

With the property enabled, the search results display pages according to the of individual users.Check permissions read permissions 

SQL searchThe SQL search is an obsolete search engine for pages in the content tree of websites.

The system continues supporting the SQL search for the following reasons:

Backward compatibility with older versionsSearching uncommon and legacy file types uploaded as page attachments

This search engine uses standard SQL queries to search for expressions:

The system automatically generates search queries for the data of individual . To override the search query for a pagepage typestype, create a new query named in .searchtree Page types -> Edit page type -> QueriesThe query of the page type searches fields that are shared by all pages.searchpages RootThe query of the page type searches files uploaded as page attachments. To search attachments, yousearchattachments Rootneed to configure the system as described in .Configuring SQL search for attachment files

Adding the SQL search onto your website

To integrate the SQL search into website pages, use the web parts in the category (SQL search dialog, SQL search box,Full-text searchetc.) or the and server controls (in your ASP.NET code).CMSSearchDialog CMSSearchResults 

Excluding pages from the search

To exclude pages from the SQL search, open the application and select the category:Settings System -> Search

Exclude page types from SQL search - enter page type code names, for example . cms.articleYou can enter multiple page types separated by semicolons (;).

Exclude pages from SQL search - allows you to exclude entire website sections from the SQL searchTo exclude a single page, enter the alias path, for example: /news/news1To exclude entire website sections, enter a , for example: path expression /news/%You can enter multiple values separated by semicolons (;).

To directly exclude individual pages from the SQL search:

Open the application.PagesSelect the page in the content tree.Open the tab.Properties -> NavigationCheck .Exclude from searchClick .Save

Modifying the search result format

We highly recommend using the index-based instead.smart search

Page 197: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4.

1. 2. 3. 4.

If you wish to change the format of the SQL search results:

Open the application.Page types

Edit ( ) the page type.RootSelect the tab.TransformationsAdjust the .SearchResults transformation

Developing custom search providers

If you need to integrate a custom search engine or make additional modifications to the search results returned by the SQL search engine,you can develop your own search provider. You can find more details in .Creating custom SQL search providers 

Scheduling tasksThe application allows you to configure how the system executes automatic tasks. Scheduled tasks can be useful whenScheduled tasksyou need to perform operations at a specific time or regularly over a certain time period. Many Kentico features leverage scheduled tasks.

Configuring scheduled task settings

To configure scheduled task settings:

Open the application.SettingsSelect the category.SystemAdjust the settings in the section.SchedulerClick .Save

Managing scheduled tasks

To work with individual scheduled tasks, open the application.Scheduled tasks

Two types of tasks are available:

Global - affect the entire system (global features and objects). Only available for users with the Global administrator .privilege levelChoose the option in the selector.(global) SiteSite-related - tasks that affect content related to the selected Site.

 

Configuring scheduled task executionThis page explains how to configure execution of scheduled tasks. Scheduled tasks can be executed:

By the Kentico web application itselfBy a dedicated external Windows service

You can have both approaches enabled and execute some tasks directly in Kentico and other tasks via the external Windows service.

The tab provides an overview of temporary tasks created dynamically by the system. System tasks internallySystem tasksprovide functionality for various Kentico features. You cannot manually create system tasks.

Scheduling reliability

Task execution by the Kentico application runs within the ASP.NET process, so tasks cannot be executed if the web application isnot running. The application stops running when the process is recycled without being started again (after a long period of websiteinactivity).

Page 198: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4.

1. 2. 3. 4.

Configuring execution by the Kentico application

By default, all scheduled tasks are executed by the Kentico application.

Setting the task execution time

There are two levels of settings that determine when the system executes tasks:

Task interval - the properties of individual scheduled tasks determine when tasks are ready for execution.Application scheduler interval - determines the time interval after which the application checks if any tasks are ready to beexecuted.

 

Task interval

To configure the interval that determines when individual scheduled tasks are ready to be executed:

Open the application.Scheduled tasks

Edit ( ) the scheduled task.Set the task's scheduling options (Period, Start time, Every, Between, Days).Click .Save

Application scheduler interval

To configure how frequently the application checks if there are any tasks ready to be executed:

Open the application.SettingsSelect the category.SystemType a number of seconds into the setting.Application scheduler intervalClick .Save

Execution of scheduled tasks by the Kentico application has two modes.

Request-based scheduler mode

This is the default mode. The application performs checks at the end of each standard page request. This means that tasks are onlyexecuted when user activity on your website generates requests.

In this case, the sets the minimum time between the checks:Application scheduler interval

For example, a value of 60 means that the application checks after 60 seconds even if multiple page requests occur per minute.Tasks are NOT executed if there are no page requests.0 disables the execution of tasks by the application.

Automatic scheduler mode

You can configure the scheduler to process tasks regularly according to an , regardless of website activity. Toautomatic internal timerenable this mode, add the key into the section of your web.config file:CMSUseAutomaticScheduler /configuration/appSettings

<add key="CMSUseAutomaticScheduler" value="true" />

In this case, the sets the precise interval between the checks:Application scheduler interval

Values between 1 - 30 seconds define the between checks. For example, a value of 30 means that the application checksintervaltasks every 30 seconds.0 disables the execution of tasks by the application.

Configuring execution by the Windows service

Executing tasks using the external Windows service is recommended for resourceconsuming tasks, because the execution does not affectthe performance of the Kentico application.

Enabling the Windows scheduler service

If you want to run the scheduling reliably, we recommend using the Windows scheduling service.

To achieve reliable task execution without using the Windows scheduling service, you need to ensure that your website is alwaysrunning. For example, you can prepare a utility or service that requests the home of your website on a regular basis.

Page 199: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

1.

2. 3. 4.

1. 2. 3. 4.

Open the application.SettingsSelect the category.SystemEnable the setting.Use external serviceIn the application, enable the option for individual tasks.Scheduled tasks Use external service

Tasks with the option disabled will be executed by the Kentico application itself.Use external serviceIf the setting in the application is disabled, even tasks with the  optionUse external service Settings Use external serviceenabled are processed by the Kentico application itself.

Setting the task execution time

There are two levels of settings that determine when the Windows scheduler service executes tasks:

Task interval - the properties of individual scheduled tasks determine when tasks are ready for execution.Service scheduler interval - determines the time interval after which the service checks if any tasks are ready to be executed.

Task interval

To configure the interval that determines when individual scheduled tasks are ready to be executed:

Open the application.Scheduled tasks

Edit ( ) the scheduled task.Set the task's scheduling options (Period, Start time, Every, Between, Days).Click .Save

Service scheduler interval

To configure how frequently the Windows scheduler service checks if there are any tasks ready to be executed:

Open the application.SettingsSelect the category.SystemType a number of seconds into the setting.Service scheduler intervalClick .Save

The sets the precise interval between the checks:Service scheduler interval

Values between 1 - 30 seconds define the between checks.intervalFor example, a value 30 means, that the service checks tasks every 30 seconds.

0 disables the execution of tasks by the external service.

Additional low-level settings

Additional low-level scheduled task settings can be done by adding the keys listed in the section of the Scheduler settings Web.config reference.application keys

 

Installing the Scheduler Windows serviceKentico provides a dedicated Windows service for executing scheduled tasks. You can use the service to execute tasks externally instead ofthe application itself (typically for resource-consuming tasks). Executing scheduled tasks using the Windows service can optimize the

of your application.performance

Prerequisites

You need to have the installed and running.Kentico Scheduler Windows service

Note

Only some of the default scheduled tasks support this option. The tasks that do not have the option available in the editinginterface must be processed by the application itself.

Resolving context macros when executing tasks by the Windows service

Tasks that are executed by the Windows service cannot resolve dependent on application context (for example macros {%). The context is not available when tasks are executed outside the application. Therefore, you cannot executeApplicationPath %}

such tasks using the Windows service.

This setting only applies to tasks that are configured to be executed by the Windows service, not by the application itself.

Page 200: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4.

5.

1. 2. 3.

4. 5. 6.

Installing the Scheduler Windows service using Kentico Service Manager

The easiest way to install the Scheduler Windows service is to use the Kentico Service Manager utility:

Launch the utility from the Kentico program files group in the Windows Start menu.Kentico Service ManagerYou can also launch the utility from using the button.KSM Kentico Installation Manager Services

Choose the Kentico instance where you want to install the service (select the CMS folder).Select the service.Kentico SchedulerClick .Install

Click to start the service after it is installed.Start

You have installed the service, which is now running and ready to be used.Kentico Scheduler

You can uninstall the service at any time by clicking in the Kentico Service Manager utility.Uninstall 

Installing the Scheduler Windows service from the command line

To install the Windows service from the command line, you need to use (InstallUtil.exe), which is a native part of the .NETInstaller ToolFramework:

Open the Windows command line (type in the Start menu search box)cmdNavigate to the .NET folder containing (e.g. ).InstallUtil.exe c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Execute from the Windows command line with the following parameters:InstallUtil.exe

InstallUtil.exe /webpath="C:\inetpub\wwwroot\Kentico\CMS""c:\inetpub\wwwroot\Kentico\CMS\bin\SchedulerService.exe" /LogToConsole=true/i

The following table describes the used parameters:

/webpath Path to the CMS folder of the Kentico instance for which youwant to install the service.

second parameter Path to the file in the folder inside theSchedulerService.exe Binapplication (typically c:\inetpub\wwwroot\Kentico\CMS\bin\Sche

).dulerService.exe

/LogToConsole Optional parameter that determines whether the installationprogress is logged to the console.

/i If this parameter is used, the Installer Tool performs installationof the Windows service.

Open the management console (type into the Start menu search box).Services services.mscSelect the service in the list.Kentico Scheduler (<CMSApplicationName web.config key value>)Click the button on the top toolbar.Start Service

Page 201: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

6.

1. 2. 3.

1.

2.

Uninstalling the Scheduler Windows service from the command line

Open the Windows command line (type in the Start menu search box).cmdNavigate to the .NET folder containing (e.g. ).InstallUtil.exe c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Execute from the Windows command line with the following parameters:InstallUtil.exe

InstallUtil /webpath="C:\inetpub\wwwroot\Kentico\CMS""c:\inetpub\wwwroot\Kentico\CMS\bin\SchedulerService.exe" /LogToConsole=true/u

After executing this command, the Scheduler Windows service for the Kentico instance specified by the parameter is uninstalled./webpath 

Reference - scheduled task propertiesThe following table explains the properties of scheduled tasks. To configure tasks:

Open the application.Scheduled tasks

Edit ( ) the task.

Property Description

Task display name Sets a name for the task that appears in the administrationinterface.

Task name Serves as a unique identifier for the scheduled task, for example inthe API. You can leave the option to have the system(automatic)generate an appropriate code name based on the display name.

Task provider Selects the class that implements the scheduled task.

Assembly name - specifies the name of the assembly wherethe task is implemented. Choose the option(custom classes)for tasks implemented in the App_Code folder.Class - specifies the exact class (including any namespaces)that defines the functionality of the scheduled task.

Page 202: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

PeriodStart timeEveryBetweenDays

This group of properties sets the time interval between theexecutions of the task.

Notes:

The interval settings do not ensure that the system executesthe task at the exact time, only that the task is consideredready for execution. The exact run time depends on the globalscheduling settings. See also: Configuring scheduled taskexecutionThe actual execution time and run duration do not affect thescheduling of the next run time. The system calculates the nextrun time based on the time for which the last run was originallyscheduled (or the start time).If a task is still being processed when the next scheduled runtime occurs (for example with long-running tasks that have ashort execution interval), the task skips the given run and waitsuntil the next run time.

Task data Additional data provided to the task's class. You can access thefield from the code of the task, and use the value as a parameter.The Task data allows you to modify the task's functionality withouthaving to edit the code implementation.

Task condition Allows you to enter an additional that must bemacro conditionfulfilled in order for the scheduler to execute the task.

You can write any condition according to your specificrequirements. For details about available macro options and syntax,refer to the chapter.Macro expressions

Task enabled Indicates if the system executes the task.

Delete task after last run Indicates if the system deletes the task after its final run (applicableif the task is set to run only once).

Run task in separate thread Indicates if the scheduler executes the task in a separate thread toimprove application performance.

It is not possible to access context data (information about thecurrent page, user, etc.) in the code of tasks that are executed in aseparate thread.

Use external service If enabled, the task is processed by the Installing the Scheduler instead of the web application. If the Windows service Use external

setting in is disabled, even tasks withservice Settings -> Systemthis option enabled are processed by the application itself.

Only some of the default scheduled tasks support this option. Thetasks that do not have the option available in the editing interfacesmust be processed by the application itself.

You cannot define the task in the folder if you wish toApp_Codeuse the external service. To run a custom task externally, you mustadd a new assembly to your project and then define the task classthere.

Run individually for each site________________________

Only available for tasks. If enabled, the scheduler executesglobalthe task repeatedly as a sitespecific task, once for each running sitein the system. The task automatically runs within the context of thecorresponding site.

This can be useful if you wish to manage a task in a single locationinstead of creating a separate one for every site.

Server name Sets the name of the web farm server where the task is executed.This field is applicable only if your application is running in a Web

.farm environment

To add a new task for all web farm servers currently registered inthe system, select the checCreate tasks for all web farm serversk box below the field.

Page 203: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4.

5.

Use context of user If the scheduled task needs to access data from the user context inits code (for example to check permissions), you can use thisproperty to choose which user is provided. The scheduler alwaysexecutes the task within the context of the selected user.

In most cases, the user context does not affect the functionality ofthe task and you can leave the option. The option(default) (default)means either the context of a public user, or the user from thecontext of the request during which the system executed the task(when using the ).request-based scheduler mode

Executions Shows how many times the task has been executed. You can resetthis counter back to by clicking .0 Reset

 

Configuring SMTP serversKentico includes many features that utilize email messages as part of their functionality, such as:

Automatic notificationsEmail campaignsVarious types of confirmation messagesContent subscriptions

To allow the application to send out emails, you need to register and configure at least one SMTP server in the administration interface.

Setting up the default SMTP server

To register the main SMTP server:

Open the application.SettingsNavigate to the category. System -> EmailsSelect an option in the selector: Site

Choose a specific site to register a server dedicated to a single website.Choose to register a designated global server — the server processes emails from all sites in the system, and also(global)handles emails that are not related to any specific website.

Fill in the following settings:SMTP server - enter the domain name or IP address of the server, including the port number (if it is not ). Enter 25 localhostto use a server provided by your local machine.SMTP server user - if the server requires authentication, type the user name here.SMTP server password - if the server requires authentication, type the password here.

Use SSL - enable to use an SSL secured connection to the SMTP server. The server must be configured for SSL in orderfor this to work.

Click .Save

The system uses the primary server as the default option when sending emails.

Note: After you enter and save a password, the field always displays 8 "masking" characters, even if thepassword is longer or shorter. This measure helps protect your password.

Page 204: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Configuring additional SMTP servers

In addition to the default server, you can add any number of servers in the application. Having multiple SMTP servers allowsSMTP serversthe system to send out a greater volume of email traffic. Emails use the extra servers whenever the default server is busy.

You can manage existing servers through the following actions:

  - opens the server's configuration interfaceEdit

 Delete

  /  - enables or disables the server within the context of KenticoEnable Disable

Kentico EMS required

You must have the license to register multiple SMTP servers.Kentico EMS

Page 205: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

To register new servers, click .New SMTP server

When creating new SMTP servers or editing existing ones on the tab, you can fill in the same options as described for the defaultGeneralserver. In addition, you can choose the for emails:delivery method

Network - emails are sent directly to the SMTP server defined by the server name and credentials. This is the default setting for thedefault SMTP server defined in .Settings -> System -> EmailsPickup directory - use this option if you expect high email traffic on your servers (the method is faster and safer than the Networkmethod). The emails are copied to a folder on the disk (defined by the Pickup directory option), from where they are processed bythe SMTP server. Note that you have to grant the IIS_IUSRS group write permissions for the chosen folder.Pickup directory from IIS - similar to the Pickup directory, but may be more difficult to configure. Choose this method if you arealready using Microsoft SMTP servers on Windows Server operating systems. You also need to install the SMTP server feature intoyour IIS and configure it properly. See for more information. Note that you have to ensure that theConfigure SMTP Email (IIS 7)NETWORK SERVICE group has write permissions for the defined pickup folder.

You may also select the server's . See the section below for more information about server priority.Priority Configuring email processing

If there are multiple sites running under your application, you can assign servers to individual websites on the tab. SMTP servers canSiteseither be global or limited to one or more specific websites.

Configuring email processing

Microsoft Azure supports only the method.Network

Page 206: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3. 4.

You can configure how the system delivers emails to the SMTP servers through the settings in .Settings -> System -> Emails

If is checked, the system temporarily stores all outgoing emails in the database instead of sending them directly to theEnable email queueSMTP servers. This allows advanced email processing and resending of mails that are lost due to errors. Refer to  to learnSending emailsmore about the email queue.

The system periodically processes the email queue (every minute by default) and asynchronously distributes the stored emails to the SMTPservers:

A predefined amount of emails is loaded from the queue as a batch.The system goes through the emails one by one and assigns them to servers according to their priority and availability.

The default SMTP server always has the highest priority.Other servers are ordered according to the value of their property (i.e. emails are first assigned to priorityPriority Highservers, then and finally ).Normal Low

When a server receives an email, the server is flagged as busy until the sending is complete.The system loads a new batch from the queue and continues assigning individual emails to available servers.

This process is repeated until all emails in the queue are mailed out.

Batch size

The maximum number of emails which is loaded from the database in a single batch is determined by the value of the setting.Batch sizeThe batch size affects all sites in the system, so it is only available if the option is selected in the selector on the top left of the(global) Sitesettings page.

The value of the batch size affects the number and frequency of . If you set the batch size too large, the system will havedatabase queriesto process a lot of database data at one time. Using a smaller batch size increases the frequency of database queries and may reduce thedatabase performance.

Testing SMTP servers

To confirm that your SMTP servers are configured correctly and available, you can send testing emails in the application on the System Ema tab.il

Debugging emails

Debugging can help resolve problems with emails sent by Kentico.

To enable email debugging, add the following keys to the section of your project's file:configuration/appSettings web.config

<add key="CMSLogEmails" value="true"/><add key="CMSDebugEmails" value="true"/>

CMSLogEmails - logs all sent emails to the file. The log contains each email's recipient and subject.~/AppData/logemails.logCMSDebugEmails - disables sending of emails to the actual recipients. The system only logs emails into the . Helpful ifevent logyou need to test the functionality, but do not want the emails to actually reach the recipients.

To view the event log, open the application.Event logThe emails are logged as type events.InformationThe column contains the recipient's address.Event codeThe system randomly generates errors to simulate sending errors.Sending failed for <recipient's email address>

 

Reference - SMTP server propertiesWhen you define a new or edit an existing one in the application, you can specify the following properties.SMTP server SMTP servers

General

Server name Specifies the domain name or IP address of the SMTP server. If theconnection to the server should use a different port than , include25it in the name.

Enter if you wish to use the server provided by your locallocalhostmachine.

Using the email queue is highly recommended when sending out large amounts of emails over a short amount of time.

Page 207: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Priority When an email (or batch of emails) needs to be sent out, thesystem checks the SMTP servers in the order of their priority anduses the first one that is available. As a result, servers with a higherpriority receive a greater email load.

The server with the highest priority for each website is the defaultSMTP server configured in . If thisSettings -> System -> Emailsserver is busy or undefined, the email checks for any availableserver with the priority, then and finally .High Normal Low

Enabled Can be used to manually disable or enable the server (within thecontext of Kentico). A disabled server is skipped when outgoingemails check for available servers.

Advanced

Delivery method The delivery method for emails sent from the system:

Network - the email is sent directly to the SMTP server definedby the server name and credentials.Pickup directory - the emails are copied to a folder (definedby the option) on the disk, from where they arePickup directoryprocessed by the SMTP server.Pickup directory from IIS - similar to the mPickup directoryethod, except that the folder and SMPT server must be definedthrough IIS. You have to first install the SMTP server featureinto your IIS and configure it properly. See more information inthis article: . Moreover, you haveConfigure SMTP Email (IIS 7)to ensure that the NETWORK SERVICE group has writepermissions for the defined pickup folder.

Delivery method - Network

Username If the SMTP server requires authentication, you can enter the username here.

Password If the SMTP server requires authentication, you can enter thepassword here.

Use SSL Indicates if the SMTP connection to the server should be securedby SSL. The server must be configured to use SSL in order for thisto work.

Delivery method - Pickup directory

Pickup directory Specifies a folder on the disk, where emails will be stored until theSMTP server processes them.

The group must be granted write permissions for thisIIS_IUSRSfolder.

 

  

Managing email templatesKentico sends automatic system emails for various purposes, for example workflow notifications. The content of such emails is determinedby templates according to the type of the given email. Many Kentico features send emails based on predefined templates that are included inthe default installation.

To edit the templates, open the application. Editing templates allows you to alter the emails sent by the system to matchEmail templatesthe required design and/or language.

There are two types of email templates:

Global - only users with the Global administrator can manage global email templates. Choose the option inprivilege level (global)the selector.SiteSite-specific - allow you to override the global templates for specific websites. You need to select the appropriate and create aSitenew template with a that matches the corresponding global template.Code name

The system only contains global templates by default. When editing email templates, the following properties are available:

Page 208: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Property Description

Display name The name of the template displayed in the administration interface.

Code name Serves as a unique identifier of the email template (for example inthe API).

Email type Identifies the type of functionality to which the template is related.This can be used to categorize and filter email templates.

From Email address used as the sender (From) address of the email.

Cc Email addresses of copy recipients.

Bcc Email addresses of blind copy recipients (receive a copy of theemail, but cannot see the addresses of other recipients in the mail).

Subject Subject of the email.

HTML version Defines the content that is used for the template when sendingemails in HTML format.

You can select the preferred format using the Settings -> System setting.-> Emails -> Email format

Plain text version Plain text version of the email template.

Example of the HTML version of a template:

<html> <head> </head> <body style="font-size: 12px; font-family: arial"> <p> This is an automatic notification sent by Kentico. The following page is waitingfor your approval. Please sign in to the Kentico administration interface andapprove it. </p> <p> <strong>Page:</strong> <a href="{%DocumentEditUrl%}">{%documentname%}</a> {%ifEmpty(DocumentPreviewUrl, "", "(<a href=\"" + DocumentPreviewUrl="" +"\">preview</a>)")|(encode)false %} <br /> <strong>Last approved by:</strong> {%approvedby%} <br /> <strong>Last approved when:</strong> {%approvedwhen%} <br /> <strong>Original step:</strong> {%originalstepname%} <br /> <strong>Current step:</strong> {%currentstepname%} <br /> <strong>Comment:</strong> <br /> {%comment%} </p> </body></html>

Most templates contain (such as {% currentstepname %}), which the system resolves dynamically when sending themacro expressionsemails. The use of macros is necessary to ensure that individual emails contain information relevant to the situation that caused the email to

be sent. You can add macros into fields by clicking ( ) or write the required expressions manually.Insert macro

If you wish to display data loaded via a macro in a specific format, you can apply . See transformations Using transformations in macro for more information.expressions

You can attach files to an email template through the button in the header of the template editing page. TheAttachmentsattachments are included when the system sends out emails based on the given template. Clicking the button opens a dialogwhere you can manage the attachments.

Page 209: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Working with widget dashboardsWidget dashboards are sections of the Kentico administration interface that individual users can customize. Typically, users personalize theirdashboards to contain frequently used tools or sources of information. The dashboard then serves as an overview that users can easilyaccess without navigation through the administration interface.

 The content and structure of widget dashboards is based on . The template designates:page templates

The parts of the dashboard that are always present and cannot be changed by usersCustomizable areas (zones) and their default content

Users place content onto dashboards using . The widget content is distinct for every user. Most dashboards also have unique contentwidgetsfor each site.

By default, the system provides the following widget dashboard applications and pages:

My deskSystem overview (content shared for all sites)Store overviewStore reports -> DashboardMarketing overviewWeb analytics -> Dashboard

If required, you can create your own widget dashboard applications or pages anywhere in the administration interface (see Adding widget).dashboards to the interface

 

Managing widget dashboard content

Using widgets on dashboards

Important: Widget dashboards are a completely separate feature from the system's main . Every widgetapplication dashboarddashboard is either a standalone application, or a page within another application.

Important: Widget dashboards are a completely separate feature from the system's main . Every widgetapplication dashboarddashboard is either a standalone application, or a page within another application.

Page 210: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

If you have access to a application or page, you can personalize the content by manipulating widgets in the availablewidget dashboardzones:

Click to add new widget instancesAdd new widgetClick to return all zones and their widget content to the default stateReset widgets

Individual widgets are enclosed in containers with a header and a set of action buttons. To manage the widgets on the dashboard, use theappropriate actions.

Configure widget ( ) - allows you to edit the widget's properties. Every widget has its own set of properties. The proWidget titleperty is present for all types of widgets — the property sets the text displayed in the header of the widget on the dashboard page.

Minimize widget ( ) - hides the content of the widget so that only the header is visible. Click ( ) to restoreMaximize widgetthe full content of the widget.

Remove widget ( ) - deletes the widget from the dashboard.

Use drag-and-drop to change the location of widgets. To pick up a widget, hover over its header, hold down the mouse button and drag thewidget to the desired position. This works both for modifying the order of widgets within a zone and moving widgets to a different zone. 

Setting the layout and default content of widget dashboards

The overall design and initial content of a is determined by its . You can manage dashboard templates in thedashboard page template Page application. The templates of the default dashboards are in the category.templates Dashboard pages

Set up the actual content of the template on the tab:Design

You can define two types of zones on dashboard templates:Web part zones - the content can only be managed here on the tab of the page template. The added funDesign web partsction as fixed content on the dashboard page itself. The property of these zones must be set to .Widget zone type NoneDashboard widget zones - added here on the tab serve as the default content of the zone. Individual userswidgets Designcan change and configure the widget content of the zone for their own personalized version of the dashboard. The Widget

property of these zones must be set to .zone type Dashboard

To alter the placement, size and amount of zones on the template, edit the code of the on the tab.page layout Layout

Note: Dashboard templates must have the property set to on the tab. Template type Dashboard page General

Page 211: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

1. 2. 3.

1. 2. 3.

On the tab, you can assign the template to individual websites. The site bindings do NOT determine where you can create dashboardsSitesbased on the template. They only ensure that the system the template along with the assigned sites.exports/imports

To learn how to assign a page template to a specific dashboard page, see .Adding widget dashboards to the interface

Allowing widgets on dashboards

To make a widget usable as a dashboard component:

Open the application.WidgetsSelect the widget in the catalog tree.Open the tab.SecuritySelect in the column.This widget can be used in dashboard zones Allowed for

If a widget is also allowed for other types of zones, for example user zones on the live site, you can make properties available only whenconfiguring widget instances on dashboards: 

Open the tab.PropertiesCheck for individual properties.Display field only on dashboardsClick to confirm the change for each property.Save

 

Adding widget dashboards to the interfaceIf the default widget dashboards in the administration interface do not meet your requirements, you can create your own dashboardapplications or pages.

The following demonstrates how to add a custom dashboard application to the category. You can apply theexample Social & Communitysame principles when creating widget dashboards in other locations. 

Creating the dashboard page template

First, create a for the dashboard:page template

Open the application.Page templatesSelect the category in the tree.Dashboard pagesClick and enter the following values:New template

Add the web part into the fixed content of every dashboard template. The web part allows users to:Widget actions

Add new widgetsReset the zones of the dashboard to their default widget content

You need to configure the properties of the Widget actions web part according to the following:

Widget zone type: DashboardWidget zone ID: Specify the dashboard zone to which the web part adds new widgets (enter the ID of the desired zone).Once created, users can drag widgets to other zone as required.

Note: The user type security settings of the widget apply on dashboards. Select whether the widget is usable by all Authenticated, or members of .users Global administrators only Authorized roles

Important: Widget dashboards are a completely separate feature from the system's main . Every widgetapplication dashboarddashboard is either a standalone application, or a page within another application.

Page 212: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

4. 5. 6.

1. 2.

3. 4.

5. 6. 7. 8.

1. 2.

3. 4.

5.

6. 7. 8.

Template display name: Community dashboardTemplate code name: CommDashboard

Click .SaveSelect as the .Dashboard page Template typeClick .Save

Adjust the of the page template:layout

Switch to the tab.LayoutCopy the following sample code into the layout to define web part/widget zones for the template:

<table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td colspan="2"> <div class="DashboardActions PageTitleHeader"> <cms:CMSWebPartZone ID="zoneTop" runat="server" /> </div> </td> </tr> <tr> <td colspan="2"> <cms:CMSWebPartZone ID="DashboardTop" runat="server" /> </td> </tr> <tr valign="top"> <td style="width:50%"> <cms:CMSWebPartZone ID="DashboardLeft" runat="server" /> </td> <td style="width:50%"> <cms:CMSWebPartZone ID="DashboardRight" runat="server" /> </td> </tr> </table>

Click .SaveSwitch to the tab.Design

Expand the menu ( ) of the zone and click .DashboardTop ConfigureSwitch the property from to .Widget zone type None DashboardClick .Save & CloseRepeat the steps 5 – 7 for the and zones.DashboardLeft DashboardRight

Add and to the zones:web parts widgets

Add the web part into the zone.Widget actions ZoneTopConfigure the following properties of the web part:Widget actions

Widget zone type: DashboardWidget zone ID: Leave empty Add widget(Designates the zone where new widgets should be created when users click the

DashboardTopbutton. By default, the web part uses the first available zone ( in this case), but you can specify the ID of anyother dashboard zone.)

Leave the remaining properties in their default state and click .OKAdd the web part to the same zone and set the following properties:Static text

Text: This is a custom dashboard pageDisplay as: Header level 2

Click .OK

Expand the menu ( ) of the zone and click .DashboardTop Add new widgetFor example, choose the widget.Community -> My messagesConfirm the dialogs without making changes and leave the other two dashboard zones empty.

This sets the default content of the dashboard that individual users can later configure and expand.

Page 213: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4.

5. 6.

7.

Adding the dashboard UI element

To create a new widget dashboard application, you need to add a UI element to the system:

Open the application.Modules

Edit ( ) the module. Note that the is on the tab.Custom Module code name cms.customsystemmodule GeneralSwitch to the tab.User interfaceSelect the element in the tree.CMS -> Administration -> Social & Community

Click ( ).New elementEnter the following values:

Display name: Community overviewCode name: CommDashboardElementModule: CustomCaption: Community overviewElement icon type: ClassElement icon CSS class: icon-app-content-dashboardType: URLTarget URL: ~/CMSGlobalFiles/CommDashboard.aspx?dashboardName=Comm&templateName=CommDashboard&{hash}Sets the URL of the page with the content of the UI element. You will create the source file used in the URL above later inthe example. When creating links to dashboard pages, you need to understand and correctly specify the query stringparameters:

dashboardName - sets a name for the dashboard to ensure uniqueness in cases where multiple dashboards usethe same page template. The content of a dashboard is unique for every user. If two or more dashboards share apage template and the parameters in the URLs used to access the page have the same value,dashboardNamechanges made to one of the dashboards also affect the other dashboards (for the given user and site).templateName - specifies the code name of the page template that the dashboard is based on. The type of theassigned template must be . This example uses the template created in the previous steps.Dashboard pagehash - the system automatically generates a hash code for the element

 Click .Save

The system creates the new UI element.

When adding applications to the interface of an actual live website, you can set a in the fielmacro condition Content permissionsd to define security requirements for access to the application.

Page 214: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

5.

Creating the dashboard page source file

Now you need to develop the file of the dashboard page in your web project:.aspx

Open your website in Visual Studio.Create a under the root called (if it doesn't already exist).New folder CMSGlobalFilesRightclick the folder and select .Add -> Web formName the web form .CommDashboard

This is the file specified in the of the previously created UI element. The location ensures that the systemTarget URLexports the file with any site that includes global folders in the export package.

Modify the page code to match the following:

Page 215: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

5.

6.

7. 8.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CommDashboard.aspx.cs"Theme="Default" EnableEventValidation="false"Inherits="CMSGlobalFiles_CommDashboard" %>

<%@ Register Src="~/CMSModules/Widgets/Controls/Dashboard.ascx"TagName="Dashboard" TagPrefix="cms" %>

<%=DocType%>

<html xmlns="http://www.w3.org/1999/xhtml" <%=XmlNamespace%>><head id="Head1" runat="server" enableviewstate="false"> <title id="Title1" runat="server">Dashboard</title> <asp:Literal runat="server" ID="ltlTags" EnableViewState="false" /> <style type="text/css"> body { margin: 0px; padding: 0px; height: 100%; font-family: Arial; font-size: small; } </style></head><body class="<%=BodyClass%>"> <form id="form1" runat="server">

<cms:Dashboard ID="ucDashboard" runat="server" ShortID="d" />

</form></body></html>

Switch to the web form's code behind and add the following references to the beginning of the code:

using CMS.Core;using CMS.UIControls;using CMS.SiteProvider;

Set the class to inherit from .CMSGlobalFiles_CommDashboard DashboardPageModify the class to contain the following code:

The user control handles the entire functionality of the dashboard. It processes the query string parametersDashboardfrom the URL used to access the page and displays the corresponding dashboard according to the specified dashboardname, page template and contextrelated data such as the current site and user.

Page 216: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

8.

9.

[UIElement(ModuleName.CUSTOMSYSTEM, "CommDashboardElement")]public partial class CMSGlobalFiles_CommDashboard : DashboardPage{ protected override void OnPreInit(EventArgs e) { base.OnPreInit(e);

// Must be equal to the code name of the module containing the correspondingUI element ucDashboard.ResourceName = "cms.customsystemmodule";

// Must be equal to the code name of the corresponding UI element ucDashboard.ElementName = "CommDashboardElement";

ucDashboard.PortalPageInstance = this as PortalPage; ucDashboard.TagsLiteral = this.ltlTags;

// Ensures that the dashboard has unique content for each site ucDashboard.DashboardSiteName = SiteContext.CurrentSiteName;

ucDashboard.SetupDashboard(); } protected void Page_Load(object sender, EventArgs e) { // Security access checks for the current user }

}

Save both files. If your installation is a web application, the CMSApp project.Build

Result

Users can now access the application either through the application list or the application dashboard (if you add theCommunity overviewapplication to the roles of users).

The handler of the event sets the properties of the user control calls and its methoPreInit Dashboard SetupDashboard()d. Note that the values of the and properties must be set according to the module andResourceName ElementNamecode name of the UI element created in previous steps of this example.

Page 217: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

The page displays a fully functional dashboard based on the created page template.

Page 218: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Using output filtersOutput filters modify the HTML code that the system renders for pages on the live site. The filters make changes to the code before sendingit to the browsers of visitors. Output filters do not affect the pages of the Kentico administration interface.

 

Output filter types

The following types of output filtering are available:

Note: Applying output filters adds steps to the processing of pages, and may slow down the website. If the output code of yourpages is already valid by default, and you do not need any of the filtering features, we recommend disabling the output filter foryour website. See the section for details.Applying output filters

Page 219: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Filter type Description

Form filter The form filter fixes issue with non-working postbacks on pages thatuse URL rewriting. It ensures that forms, dialogs and buttons workcorrectly on pages managed by Kentico.

URL resolving filter Resolves relative URLs so that they contain the root URL of thewebsite. For example, the filter changes ~/mypage1/mypage2.aspxto:

/mypage1/mypage2.aspx (if the application is running in theroot)

or

/VirtualDirectory/mypage1/mypage2.aspx (when using a virtualdirectory).

The filter only modifies URLs inside and attributes.src href

XHTML filter Fixes XHTML incompatibilities. Specifically, the filtering functionalitycan ensure the following things:

Valid tag attributes - the attributes of HTML tags aregenerated in valid XHTML format.JavaScript tags - the and attributes aretype languageincluded in all tags.<script>Enforcing lower case - all HTML tags and attributes aregenerated in lower case.Fixing self closing tags - all HTML elements without closingtags are properly closed. For example is replaced by <br> <br

./>Indentation - the HTML code of pages is organized into aproperly indented, easier to read format.

You can also enable fixing of XHTML errors for content entered andsaved in the system's WYSIWYG editors. This can be configuredglobally by adding the key into the CMSWYSIWYGFixXHTML /confi

section of your application's file:guration/appSettings web.config

<add key="CMSWYSIWYGFixXHTML"value="true" />

Page 220: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

HTML 5 filter The output filter provides a way to replace tag attributes that areobsolete in HTML5. Such attributes are removed and the systeminstead assigns CSS classes named in format <attribute

. You need to define these classes in the name>_<attribute value> C used by the website's pages.SS stylesheet

The affected attributes are:

cellpaddingcellspacingwidthheightborderalignvalign

For example:

 <table cellpadding="2"cellspacing="4">

is replaced by:

<table class="cellpadding_2cellspacing_4"> 

Converting Tables to Div tags You can use the output filter to automatically convert eleme<table>nts and their child and tags to elements with<tr> <td> <div>appropriate CSS classes assigned (named according to thereplaced tag). You need to define these classes in the CSS

used by the website's pages.stylesheet

For example:

<table> <tr><td>A</td><td>B</td></tr></table>

is replaced by:

<div class="table"> <div class="tr"> <div class="td">A</div> <div class="td">B</div> </div></div>

Applying output filters to your website

By default, the system applies the output filters to all pages. If you do not wish to use the filters for specific sections of the website (forexample due to performance reasons), you can disable them through the application in the category.Settings System -> Output filter

Tip: You can enable or disable table conversion forspecific blocks of HTML code by marking them with class

or attributes. The filter then="_divs" class="_nodivs"allows you to convert only tables designated by the _divsclass, or all tables except for those marked with ._nodivs

See the descriptions of the output filter settings below.

Page 221: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

Individual fields are available for particular filter types.Excluded URLsYou can disable output filters for all pages that start with a specific URL path by entering this path into the corresponding field(without the ~ character and extension).Multiple URL paths may be added, separated by semicolons (;).

Examples:

/ - disables the filter for the entire website./Products - disables filtering for the Products page under the website root and all other pages whose URL path starts with /Products(e.g. child pages)./Services;/News - excludes all pages whose URL path starts with or ./Services /News/Company. - by adding the period character (".") after the URL path, you can exclude only one specific page, but not its child pages(this does not work with extensionless URLs).

The following table describes all website settings available in the category:Output filter

General

Excluded output form filter URLs Specifies the URLs of the pages that the system excludes from theForm output filter.

Excluded resolve filter URLs Specifies the URLs of the pages that the system excludes from the output filter.URL resolving

XHTML filter

Excluded XHTML filter URLs Specifies the URLs of the pages that the system excludes from allfunctionality provided by the XHTML output filter.

Excluded XHTML attributes filter URLs Specifies the URLs of the pages that the system excludes from the XHTML filter.Tag attribute

Excluded XHTML JavaScript filter URLs Specifies the URLs of the pages that the system excludes from the XHTML filter.JavaScript tag

Excluded XHTML lower case filter URLs Specifies the URLs of the pages that the system excludes from the XHTML filter.Lower case

Excluded XHTML self close filter URLs Specifies the URLs of the pages that the system excludes from the XHTML filter.Self closing tag

Excluded HTML5 filter URLs Specifies the URLs of the pages that the system excludes from the output filter.HTML5

Indent output HTML Indicates if the system processes the HTML output of all pages intoa properly indented, easier to read format. The indentation appliesto all where the XHTML output filter is enabled.

Convert TABLE tags to DIV tags Determines which tables the output filter converts to elements<div>. Table conversion can be:

Disabled completelyEnabled for all tables except for those marked by the _nodivsCSS classOnly enabled for tables designated through the class_divs

Enabling output filters for specific web parts

You can enable the output filters separately for the code generated by . This allows you to filter the output of specific instances ofweb partsweb parts, even if their page is excluded from the output filter via the website settings. This is also the recommended approachperformance-wise over having output filters enabled for whole pages.

To access the output filter settings of web parts:

Open the application.PagesEdit a page on the tab.DesignConfigure (double-click) the web part.Enable the property in the section.Filter output HTML of web part Output filter

Note: The settings only exclude specific URLs, not entire pages. For example, if you exclude the URL path, but then access/Homethe Home page through a different URL or (such as the website root configured to display the Home page), output filtering willaliasstill be enabled.

Note: The system always uses output filtering for web parts on pages that are not excluded through the website settings.

Page 222: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

5.

This section of properties is available for all web parts.

Adjust the remaining properties in the Output filter section.The configuration options correspond with the available types of output filters.

 

Configuring time zonesThe application enables you to configure time zones for the physical location of your server, for particular websites and even forTime zonesparticular users. This can be useful if your site has an international audience and you want the date and time displayed on your site to becorrect for users from across the world.

Before you can use this application, you must enable it by selecting the check-box in  . See Enable time zones Settings -> System Settings - for additional options.System

Time zones are currently supported in:

Pages, My desk, Events applicationsWeb parts of the Blogs, Forums Message boards Messaging and Smart search applications, ,

Usage examples

A typical example of use is displaying the time of forum posts when you have a global community – while the server may be located in NewYork (GMT -5:00), visitors coming from Paris (GMT +1:00) may see their new posts were added at 8am, while they would expect to see 2pmaccording to their current time.

Another example is a website of a global company that runs on a server in New York, but contains content for a French office. In this case,French visitors may wonder why the current time displayed by the server is 8am while it’s 2pm in Paris. That’s when you use the built-insupport for multiple time zones. 

Time zones web parts

Web parts of the , , , and applications have the section in their Blogs Forums Message boards Messaging Smart Search Time zones web part, where you can set the applied time zone. The section contains the following two properties:properties

Time zone Specifies the type of that the web part uses for itstime zonecontent. The following types are available:

Inherit - inherits the time zone settings from the Page web part that displays the page templateplaceholder

containing the web part (only applies to ).nested pagesServer - uses the server time zone settings.Web site - uses the website time zone settings.User - uses the time zone settings of individual users.Custom - uses the time zone selected in the Custom time

property.zone

Page 223: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

3.

Custom time zone Assigns a custom time zone specifically for the content of the webpart. The web part uses the selected time zone regardless of thetime zone settings of the website or user viewing the page.

In the case of the and web parts, these web part properties take no effect. Instead, you have to ensure theCalendar Event calendar displaying of the correct time zone in the used transformation, as described in .Displaying correct time in your code

Setting time zones for users

Each user can have their own time zone settings. Where applicable, these time zone settings are used instead of the website's default timezone. A user's time zone can be set in the administration interface on the edit tab. On the tab, you can select aUsers -> user -> Settingstime zone using the drop-down list.Time zone

Users can also select their time zone on the live site, if you place the or web part on one of your pages. If they haveMy Account My Profileaccess to the administration interface, they can select their time zones in the application using the drop-down list.My profile Time zone

 

Managing time zonesYou can manage time zones in the application, where you can see a list of defined time zones.Time zones

Creating a new time zone

In the following example, you will learn how to create a new time zone:

Open the application.Time zonesClick .New time zone

Page 224: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

4.

1. 2.

a. b.

Fill in the details of the new time zone.See below.Configuring daylight saving time

Click .OK

You have just created the time zone. Now if you switch back to the time zones list, you should see the new time zone present among therecords.

Time zone properties

When defining a new time zone or editing an existing one, you can set the following properties:

Time zone name Display name of the time zone.

Code name Code name of the time zone.

GMT difference Difference in hours between the time zone and Greenwich MeanTime.

Use daylight saving time If checked, (DST) will be used for this timedaylight saving timezone. Values set in the DST start rule and DST end rule propertieswill be used to define the DST interval.

DST starts at Based on values set in DST start rule, this field will display the exacttime when the time advance will occur.

DST ends at Based on values set in DST end rule, this field will display the exacttime when the time advance will be rolled back.

DST start rule & DST end rule Using these sets of properties, you can exactly define when thetime advance should be carried out.

Month Month in which the time advance occurs.

Condition Condition specifying the day that the change occurs on. Based onthe selected option, you can select day of the week, day number ora combination of both.

Day Two fields – day of the week and day number – can be used basedon the selected condition.

Time Exact time of the time advance.

Value Number of hours that will be added to the current time when thetime advance occurs.

 

  

Configuring daylight saving time

When or modifying an existing one, you may need to specify the daylight saving time (DST). This is a convention ofcreating a time zonesetting clocks so that afternoons have more daylight and mornings have less of it. The amount of time advance and dates of change varyfrom country to country, however, it is usually a one hour advance at the beginning of spring and the advance is rolled back in autumn.

For more information about DST, see this article: .http://en.wikipedia.org/wiki/Daylight_saving_time

You can set the daylight saving time separately for each of the time zones when creating a new time zone or when editing an existing one:

Select the check-box.Use daylight saving timeSet the for the current time zone. DST start rule

First, select the month in which the change will be carried out using the drop-down list.MonthSpecify on which day of the selected month the change will be carried out using the drop-down list and the two Condition D

drop-down lists.ay

FIRST Day of the week can be selected. If you select Monday, thetime advance will occur on the first Monday of the selectedmonth.

LAST Day of the week can be selected. If you select Monday, thetime advance will occur on the last Monday of the selectedmonth.

Page 225: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

2.

b.

c. d.

3. 4.

>= Day of the week and day number can be selected. If youselect Monday and 15, the time advance will occur on thefirst Monday after the 15th day of the selected month.

<= Day of the week and day number can be selected. If youselect Monday and 15, the time advance will occur on thelast Monday before the 15th day of the selected month.

= Day number can be selected. If you select 15, the timeadvance will occur on the 15th of the selected month.

.Set the time when the change will occur on the specified date using the field.TimeSet the time difference between the standard time and DST in the field.Value

This value represents the .difference from standard time in hoursUse this value (usually ) for the and for the .1 DST start rule 0 DST end rule

Set the as specified in the previous step. Set as .DST end rule Value 0Click to save the settings.OK

 

Working with object versioningWhen using object versioning, the system creates and stores separate versions of objects when they are edited and saved. This allows youto compare versions or roll back objects to a previous version.

Supported object types

In the following table, you can find all object types that support object versioning. In the column, you can find the exactEditing interfacelocation within the Kentico administration interface where you can edit objects of the given type. If versioning is enabled for a particular objecttype, the tab appears in the interface, where you can view and manage the edited object's versions.Versions

Object type Editing interface

Alternative forms Forms -> edit a form -> Alternative forms -> edit an alternativeformPage types -> edit a page type -> Alternative forms -> edit analternative formCustom tables -> edit a custom table -> Alternative forms ->edit an alternative form

CSS stylesheets Pages -> Properties -> General -> click EditCSS stylesheets -> edit a stylesheetother interfaces containing the stylesheet selector (e.g. whenediting a site, department, etc.)

Custom table definitions Custom tables -> edit a table

Page type definitions Page types -> edit a page type

E-mail templates E-mail templates -> edit a template

Form definitions Forms -> edit a form

Media files Media libraries -> edit a library -> select a file

Emails Email campaign -> edit a email campaign -> Emails -> edit anemail

Email campaign templates Email campaigns -> Templates -> edit a template

Page layouts * Page layouts -> edit a layout

Page templates Page templates -> select a template

Pages -> Design -> Open the page template menu ( ) ->hover over Edit template -> Template versionsother interfaces that allow editing of page templates

Object versioning is about automatically creating versions of objects (CSS stylesheets, e-mail templates, web part containers, etc.).If you are looking for versioning of content (pages), refer to the  chapter.Configuring and using page versioning

Page 226: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

Queries ** Page types -> edit a page type -> Queries -> edit a queryCustom tables -> edit a table -> Queries -> edit edit a queryweb part properties dialogs of web parts that have queryproperties

Report graphs Reporting -> select a report -> General -> select a graph andclick Edit

Report tables Reporting -> select a report -> General -> select a table andclick Edit

Report values Reporting -> select a report -> General -> select a value andclick Edit

Report definitions Reporting -> select a report

Transformations Page types -> edit a page type -> Transformations -> edit atransformationCustom tables -> edit a table -> Transformations -> edit atransformationweb part properties dialogs of web parts that havetransformation properties

Web part containers Web part containers -> edit a container

Web part layouts ** Web parts -> select a web part -> Layout -> edit a layoutPages -> Design -> Configure a web part -> Layout

* Only shared page layouts are versioned — custom layouts are versioned as part of the data of the parent page template.

** Only custom queries and web part layouts are versioned — system queries and default web part layouts are not versioned.

 

Settings

Even though object versioning is enabled and functional by default, we recommend configuring the related settings for your system.

Open the application.SettingsSelect the category.Versioning & synchronization -> Object versioningConfigure the .available settingsClick .Save

 

Using object versioningIf object versioning is enabled, the tab is displayed in the editing interface of objects that support versioning. Here you can see andVersionsmanage the versions that the system creates for the edited object.

How versions are created and numbered

The system creates and numbers object versions according to the following rules:

The current version is always the one at the top of the list. If you disable object versioning when existing versions already exist forthe object, the version at the top may not match the current status of the object.

If you create a new object, the system automatically creates the initial version.0.1

If you edit an existing object that had been created before object versioning was enabled, there are no versions on the tab initially.When you edit the object and save the modifications, two versions are created: with the original data and with the currently1.0 1.1saved data.

When an object is edited and saved, the system checks the interval configured in the Save to last version if younger than setting.(minutes)

If the time interval has not passed yet since the last save, the data is saved into the last version.If the interval has passed, saving creates a new minor version (the version number is incremented by 0.1).

If you edit and save after the number of hours configured in the setting, the latestPromote to major version if older than (hours)version is promoted to a major version and the new version follows the new major numbering (i.e. latest 2.3 is promoted to 3.0 andthe new one is numbered 3.1).

The current version can also be promoted to a major version manually by clicking above the Make current version major Object listing.history

  

Managing versions on the Versions tab

Page 227: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

You can perform a number of actions when editing objects on the tab.Versions

Make current version major - manually promotes the current object version to a new major version (for example, if the latestversion is 2.3, it is promoted to 3.0).Destroy history - deletes all listed versions of the object.

The following are available for each version:Actions

 View version - opens a new window where you can compare the object's data between different versions. See Viewing and.comparing version data

  - returns the object to the given version. The rollback does NOT include the object's child objects, if there areRollback versionany (for example alternative forms, transformations, queries).

 Delete - deletes the version from the object's history.... -> Rollback with children - if the object has child objects, you can use this action to perform the rollback including the childobjects.

Managing page template and layout versions in Design mode

When editing pages in the application on the tab, you can manage the versions of the and .Pages Design page template page layout

Expand the menu ( ) in the green page template header.

To manage the page template's versions, hover over and click .Edit template... Template versions

For templates that use shared page layouts, you can access the shared layout's versions by hovering over and clicking Edit layout... Shared.layout versions

Clicking either of the items opens a dialog, where you can manage the corresponding object versions (see Managing versions on the for details).Versions tab

Viewing and comparing version data

If you click ( ) when managing an object's versions, a dialog opens, where you can view the data stored in the object'sView versionfields for the given version. You can also compare the data with other versions.

The following options are available:

Compare to - select the version that you want to compare with the viewed version.

Page 228: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

Display all data - if checked, the dialog displays all data related to the given object, including child objects. 

Objects recycle binYou can configure the system to remove deleted objects to a recycle bin instead of deleting them permanently:

Open the application.SettingsSelect the category.Versioning & synchronization -> Object versioningSet to either , or .Delete objects to recycle bin Versioned objects only All objectsClick .Save

Deleted objects that match the setting are now moved to the recycle bin.

 

Managing objects in the recycle bin

To access deleted objects, open the application and select the tab.Recycle bin Objects

Standard users of the Kentico administration interface can only work with objects that they deletedUsers with the Global administrator can manage objects removed by any userprivilege level

The following actions are available for each deleted object:

 View - opens a new window with the data of the deleted object.

 Restore - moves the object from the recycle bin back into the system (in the corresponding application).

  - permanently removes the object (cannot be restored).Delete

Click ( ) to access additional options. The options depend on the type of the object:Other actions ...

:Global objects without site bindings

Restore without site bindings - performs the standard restore action.Restore to current site - performs the standard restore action.

:Global objects with site bindings

Restore without site bindings - restores the object, but does not assign it to any website.Restore to current site - restores the object and assigns it to the current website (the one that is using the domain in the currentURL).

:Site objects (objects whose definition contains the column)SiteID

Restore without site bindings - performs the standard restore action.Restore to current site - restores the object and assigns it to the current website (the one that is using the domain in the currentURL).

To perform operations for multiple deleted objects, use the selection boxes and selectors below the list.

1. 2. 3. 4.

Using the recycle bin for large media files

Storing very large media files in the recycle bin consumes a significant amount of memory and space in the database. If yoursystem contains such files, we recommend disabling the recycle bin for media files:

Open the settings category.Object versioningSelect the option for the setting.Versioned objects only Delete objects to recycle binEnsure that the option is disabled in the section of the settings.Media files Use object versioning forClick .Save

Page 229: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Creating alternative formsAlternative forms allow you to create different versions of existing forms. The alternative forms can then be used instead of the default form inthe system's administration interface or on the live site. You can create multiple alternative forms for a single object and use each of them ina different situation.

Object types for which you can create alternative forms

Object Usage UI for creating alternative forms Example

Forms Live site - you can choose todisplay an alternative formusing the webOn-line formpart.Administration interface - toreplace the default forms forcreating and editing entriesusing the Automatically used

.alternative forms

Forms -> Edit form -> Alternativeforms

Creating alternative forms for on-lineforms

Page 230: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Custom tables Administration interface -  toreplace the default forms forcreating and editing dataentries.

Custom tables -> Edit custom table-> Alternative forms

Creating alternative editing forms forcustom tables

Page types_______________

Live site - using for examplethe webContributions listpart (see the User contributionschapter for more details).In the application toPagesreplace the default forms foradding or editing pages (afterclicking or on the page's New F

tab).ormIn the application on thePages

to allow editors to useListing custom fields of a specific pagetype when filtering the listing.

Page types -> Edit page type ->Alternative forms

Creating alternative forms for pagetypes

Extending the page type listing filter

System objects Both on the live site and in theadministration interface,depending on the object type.

Modules -> Edit module -> Classes-> Edit class -> Alternative forms

Using the Custom registration formweb part

Alternative forms have no dedicated application in the administration interface, only the tab available when editing one ofAlternative formsthe listed objects.

Additional topics:

Code names of automatically used alternative forms - provides a list of special code names, which can be assigned to alternativeforms. The system uses such forms automatically for certain actions (typically creation of new items or editing of existing ones).Displaying filters using alternative forms - explains the usage of alternative forms as filters for displaying large numbers of records.

  

Alternative form properties

When creating new alternative forms or when editing existing alternative forms, you can set the following properties:

Display name The name shown to users in the administration interface, e.g. whenselecting alternative forms.

Code name A unique name that serves as an identifier for the alternative form.

Make new fields hidden Enabling this property ensures that any new fields added to themain form are not visible in the alternative form by default (thesystem adds the fields to the alternative form with the Display

flag set as false).attribute in the editing form

Note: If the form uses a custom layout, it will not automaticallydisplay new fields even if this property is disabled. In this case, youmust also add the new fields to the form layout.

 

Code names of automatically used alternative formsIf you create an and give it one of the reserved code names listed below, the system automatically uses the alternative formalternative formwhen performing the corresponding action.

For example, if you create an alternative form for a page type and give it the code name, the form is used when pages of the type areinsertcreated in the application.Pages

The following table shows the reserved code names and the actions for which the particular forms are used:

Alternative form code name Usage Supported by

filter Filter displayed above a list of items.

See Displaying filters using alternative formsfor more information.

Examples:

Page types - Extending the page typelisting filterForms - Creating a custom Contact usform filter

Forms, Custom tables, Page types

Page 231: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3.

4. 5. 6. 7.

insert Form used when creating a new item.

Examples:

Creating a custom Page type insertform

Forms, Custom tables, Page types, systemclasses

newculture Form used when creating a new cultureversion of a page.

Page types

update Form used when editing an existing item. Forms, Custom tables, Page types, systemclasses

 

Displaying filters using alternative formsBy creating an named for a form, custom table or a page type, you can create filter used when a large number ofalternative form filter records is displayed in:

Forms -> Edit a form -> Recorded dataSee Creating a custom contact us form filter

Custom table data -> Edit a custom tableCustom tables -> Edit a custom table -> DataPages -> Listing

See Extending the page type listing filter

By default, list filters appear when the number of records is more than . You can change this limit by adding the following key into the 25 appS section of your file:ettings web.config

<add key="CMSDefaultListingFilterLimit" value="5" />

Filtering is possible based on all fields that store the following types of values:

TextBoolean (Yes/No)Integer numbersLong integer numbersDecimal numbersDate & time

The required fields need to be displayed in the alternative form and an appropriate must be assigned to each field. A filter formform controlcontrol is available for each data type:

Text filterBoolean filterNumber filterDate & time filter

 

Example - Creating a custom contact us form filter

The following example demonstrate how to create a filter for the form on the sample . The same procedure canContact Us Corporate Sitebe used for any other form, custom table or .page type

Adding the filter form

Open the application.Forms

Edit ( ) the form.Contact UsSwitch to the tab.Alternative forms

There should already be a pre-defined form. Click ( ) so that you can go through the rest of this examplefilter Deleteand create your own filter from scratch.

Click .Create new formEnter the : . The code name is filled in automatically based on the display name.Display name FilterSelect the check box.Make new fields hiddenClick .Save

Configuring the filter fields

In the default installation, the form already has a pre-defined alternative form. You can just inspect its settingContact Us filterinstead of going through the example.

Page 232: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3.

4. 5. 6.

After you create the form, you need to modify the fields:

Switch to the tab. In the listbox on the left, you should see all fields defined for the form. The first three are system fields andFieldsthey are not needed in the filter, so you can leave them as they are.Select the fourth field - .FirstNameIn the section, set the to .Field appearance Form control Text filter

Click .SaveRepeat the steps 3 and 4 for the and fields. This ensures that these fields are also included in the filter.LastName EmailDisable the and fields by unchecking the option and clicking iPhone number Message Display attribute in the editing form Saven both fields.

Result

Once you have the filter created, return to the form's editing interface and select the tab. You can try filtering based onRecorded datavarious parameters.

 

Health monitoringHealth monitoring enables website administrators to monitor and record load and performance of Kentico instances. The feature only storesmonitored values about the system in Windows performance counters. It does not perform the actual monitoring. For this purpose, you canuse external applications, for example the built-in in Microsoft Windows.Performance monitor

Note: By default, the filter only appears if more than 25 records are present in the list. To see the filter, you either need to create atleast 26 records, or use the key to lower the filter limit accordingly.CMSDefaultListingFilterLimit web.config

Page 233: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

3.

4.

 

Monitoring of some of the values requires database access. To optimize performance in this case, you can install a dedicated Windowsservice and let it handle monitoring of these values instead of the application.

To start using health monitoring:

Register performance counters in Windows

(Optional) Install the Health monitoring Windows services

Enable Health monitoring in Kentico

Use an external application to monitor values (for example, the Performance monitor)

 

Application name web.config key

Before getting to the counters, it is important to explain the following key in the section of the instance's file:appSettings web.config

<add key="CMSApplicationName" value="Default Web Site/CMS" />

This key is added to the file automatically during installation. In case of IIS installation, the path to the instance in IIS is used asweb.configthe key's value. In case of a Visual Studio web server installation, the name of the target web project root folder is used. The value must beless than 60 characters long. In general, the value of the key is used by Kentico Windows services to identify Kentico instances. Specificallyfor Health monitoring, the value is used to identify performance counters to which the monitored values about the instance are written.

Performance counter categories

In case of Visual Studio web server installation, it is possible that multiple instances running on a single server may have identicalvalues of the key (if the instances are installed into folders with the same names). In this case, you need to ensure that the keyshave different values. Otherwise, values from these instances may be written to the same counters.

Page 234: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Kentico performance counters are stored in two categories:

Kentico - General (<CMSApplicationName>) - contains general counters monitoring the Kentico instance as a whole. It containssingleinstance counters, which means each of the counters can be added to the list of monitored counters just once. If a counter ispresent in this category as well as in the Sites category, its value in this category is a sum of values of all site instances of thecounter in the Sites category.Kentico - Sites (<CMSApplicationName>) - contains site specific counters monitoring particular websites running in the Kenticoinstance. It contains multiinstance counters, i.e. each of the counters can be added to the list of monitored counters multiple times —once for each website running in the instance. These counters are used only if the option is enabled in Enable site counters Settings

.-> System -> Health monitoring

The part of the category names is the value of the CMSApplicationName key explained in the previous<CMSApplicationName> web.configsection. For IIS installations, the value is reversed in the category names so that website name is stated first and the IIS path after it. Forexample, if the IIS path is , you would have in the name of the category. This should provideDefault Web Site/CMS CMS/Default Web Sitebetter orientation in the category list in Performance Monitor.

Performance counters definition XML

In , you can find the file. This is a file in XML format which contains~\CMS\App_Data\CMSModules\HealthMonitoring counters.xpcdefinitions of default performance counters for the respective instance of Kentico. It contains definitions of both General and Site counters.When performance counters are registered in Windows, this file is accessed to get the list of counters to be registered.

Apart from this default file, the whole folder structure under is also searched for other files with the exte~\CMS\App_Data\CMSModules\ .xpcnsion when counters are registered. The other files can contain definitions of additional performance counters and when found, the countersare registered as well.

The following code is an extract from the file:counters.xpc

<?xml version="1.0" encoding="utf-8"?><Counters><Counter Key="allocatedmemory" Name="Allocated memory in MB" Description="The size of allocated memory in megabytes." Type="NumberOfItems32" Enabled="True" OnlyGlobal="True" /><Counter Key="pendingrequestspersecond" Name="Pending requests/sec" Description="The number of pending requests per second." Type="NumberOfItems32" Enabled="True" OnlyGlobal="True" PerSecond="True" />...</Counters>

Each counter element has the following attributes:

Key - counter key used for identification.Name - name of the counter displayed in Performance Monitor or another monitoring tool.Type - the type of the counter, all types are listed and explained at: http://msdn.microsoft.com/en-us/library/system.diagnostics.performancecountertype.aspxEnabled - indicates if the counter is enabled.OnlyGlobal - indicates if the counter is included in the category (true) or in both and categories (false).General General Sites

 

Registering performance countersThere are three ways to register performance counters for a Kentico instance in Windows.

Registering counters during the installation

In the Components step of the custom installer, select the check box. The installerRegister performance counters for Health Monitoringautomatically registers the performance counters for the given instance of Kentico.

Page 235: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

Enable the option to install the and Install Windows services for Scheduler and Health Monitoring Kentico Scheduler Kentico Healthservices. Installing these services can optimize the monitoring performance.Monitor

  

Registering and removing counters manually using the Windows service

To register performance counters manually:

Navigate to the folder of your Kentico project folder (typically )CMS\Bin C:\inetpub\wwwroot\Kentico\CMS\binExecute the file from the Windows command line with the following parameters: HealthMonitoringService.exe

Page 236: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2. 3. 4.

5.

1.

2.

HealthMonitoringService.exe /webpath=<disk path to web project root>/createcounters

To remove already existing performance counters, execute the file with the following parameters:HealthMonitoringService.exe

HealthMonitoringService.exe /webpath=<disk path to web project root>/deletecounters

Registering performance counters in Windows registry

Registration of performance counters is technically performed by adding specific keys to Windows registry. In the registry, these keys arelocated in . The keys represent individual registered counter categories andHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\serviceshave the same names as the respective registered counter categories.

When you delete the registry keys, you also remove the respective counter categories, which unregisters the counters. 

Installing the Health monitoring Windows serviceKentico provides a dedicated Windows service for Health monitoring purposes called .Kentico Health Monitor

You can use this service to additionally register performance counters. This service is also useful for writing values to the Scheduled tasks in, and performance counters. As these three counters require database access to get theirqueue E-mails in queue Error e-mails in queue

values, using the Windows service for their monitoring instead of the application itself can provide .better performance

Installing the Health monitoring Windows service using Kentico Service Manager

The easiest way to install the Health monitoring Windows service is to use the Kentico Service Manager utility:

Launch the utility from the Kentico program files group in the Windows Start menu.Kentico Service ManagerYou can also launch the utility from using the button.KSM Kentico Installation Manager Services

Choose the Kentico instance where you want to install the service (select the CMS folder).Select the service.Kentico Health MonitorClick . Install

Click to start the service after it is installed.Start

You have installed the service, which is now running and ready to be used.Kentico Health Monitor

You can uninstall the service at any time by clicking in the Kentico Service Manager utility.Uninstall 

Installing the Health monitoring Windows service using the command line

To install the Windows service from the command line, you need to use (InstallUtil.exe), which is a native part of the .NETInstaller ToolFramework:

Open the Windows command line (type in the Start menu search box).cmd

Page 237: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

2. 3.

4. 5. 6.

1. 2. 3.

Navigate to the .NET folder containing (e.g. ).InstallUtil.exe c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Execute from the Windows command line with the following parameters:InstallUtil.exe

InstallUtil /webpath="C:\inetpub\wwwroot\Kentico\CMS""c:\inetpub\wwwroot\Kentico\CMS\bin\HealthMonitoringService.exe"/LogToConsole=true /i

The following table describes the used parameters:

/webpath Path to the CMS folder of the Kentico instance for which youwant to install the service.

second parameter Path to the file in the folderHealthMonitoringService.exe Bininside the application (typically c:\inetpub\wwwroot\Kentico\CM

).S\bin\HealthMonitoringService.exe

/LogToConsole Optional parameter that determines whether the installationprogress is logged to the console.

/i If this parameter is used, the Installer Tool performs installationof the Windows service.

Open the management console (type into the Start menu search box).Services services.mscSelect the service.Kentico Health Monitoring (<CMSApplicationName web.config key value>)Click the button on the top toolbar.Start Service

Uninstalling the Health monitoring Windows service using the command line

Open the Windows command line (type in the Start menu search box).cmdNavigate to the .NET folder containing (e.g. ).InstallUtil.exe c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Execute from Windows command line with the following parameters: InstallUtil.exe

InstallUtil /webpath="C:\inetpub\wwwroot\Kentico\CMS""c:\inetpub\wwwroot\Kentico\CMS\bin\HealthMonitoringService.exe"/LogToConsole=true /u

Page 238: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

1. 2.

After executing this command, the Health monitoring Windows service for the Kentico instance specified by the parameter is/webpathuninstalled. 

Enabling health monitoringOnce you have Kentico performance counters registered in Windows, you need to enable Health monitoring in the Kentico settings:

Open the application in the Kentico administration interface.SettingsSelect the category.System -> Health monitoringSelect the checkbox.Enable health monitoringClick .Save

You can also adjust additional settings related to performance counters:

Setting Description

Enable health monitoring Indicates if monitored values are written to both General and Siteperformance counters related to this instance of Kentico. If disabled,no values are written to any of these performance counters.

Application monitoring interval Time interval (in seconds). In this periodic interval, the applicationreads monitored values and writes them to performance counters.

Use external service Indicates if the external Windows service is used to read and writemonitored values to the , Scheduled tasks in queue E-mails in queueand performance counters.Error e-mails in queueThese counters require database access to get their values, sousing the external service may optimize your application'sperformance.

Service monitoring interval Time interval (in seconds). In this periodic interval, the externalWindows service reads monitored values and writes them toperformance counters. If you are using the Health MonitoringWindows service and change this value, it is necessary to restartthe Windows service in order for the new value to be used.

Enable site counters Indicates if values are written to site specific performance counters.If disabled, values are written to general counters only.

  

Restarting health monitoring after a license change

To use health monitoring, your site must have a valid Kentico EMS . If your license expires (or you remove it manually), all healthlicensemonitoring performance counters stop working. After you , health monitoring remains disabled until you restart theenter a new license keyapplication:

Open the application in the Kentico administration interface.SystemOn the tab, click .General Restart application

Once the restart finishes, the health monitoring functionality will start working again. 

Monitoring using the Performance monitorWhen you have registered the performance counters for your instance of Kentico in Windows and you have enabled Health monitoring

Page 239: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

3.

4.

5. 6. 7. 8.

settings in the Kentico administration interface, you can start monitoring values written to the counters. You can use several applications forthis purpose, but this page describes how to use the , which is a native part of Windows.Performance monitor

To monitor values of Kentico counters using the Performance monitor:

Type in Windows Start menu search box and press . perfmon EnterThe system launches the .Performance monitor

Select in the navigation tree. Monitoring Tools -> Performance monitorAs you can see, only the default counter is monitored initially. % Processor Time

Click the .Add

From the list, choose . Select counters from computer <Local computer>In the section below, you will see a list of all counter categories currently registered in Windows. 

Select the .Kentico - General (<IIS path>/<IIS website>)Click .Add >>Select .Kentico - Sites (<IIS path>/<IIS website>)Click .Add >>

Page 240: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

8.

9.

Added counters will be added to the list on the right.Added counters

Click .OK

Back in the monitoring UI you can now see that the Performance monitor displays the values in counters in the graph. The values reflect thereal activity of the Kentico instance. You can switch between different ways how monitored values are displayed using the drop-Graph typedown list.

Page 241: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

Clearing counter values

Log in to the Kentico administration interface.Open the application.SystemOn the tab, click .General Clear performance counters

This action clears values stored in all counters registered for the current Kentico instance. 

Reference - default performance countersThe following table lists the default counters that are pre-defined in the file and registered in Windows by default:counters.xpc

Counter name Category Description Values written by

Allocated memory in MB Global The size of memory allocated by theapplication in Megabytes.

Application

Cache expired items/sec Global The number of expired cache itemsper second.

Application

Cache removed items/sec Global The number of items removed fromcache per second.

Application

Cache underused items/sec Global The number of underused cacheitems per second.

Application

Page 242: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

Content page views/sec Global and Sites The number of content pagesviewed per second.

Application

E-mails in queue Global and Sites The number of e-mails in the E-mailqueue.

Application or Windows service*

Error e-mails in queue Global and Sites The number of e-mails in the E-mailqueue whose sending failed.

Application or Windows service*

Errors Global The number of errors in event logsince last application restart.

Application

File downloads/sec Global and Sites The number of files downloaded persecond.

Application

Non-page requests/sec Global The number of non-page requestsper second.

Application

On-line users – total Global and Sites The total number of on-line users. Application

On-line users – authenticated Global and Sites The number of authenticated on-lineusers.

Application

On-line users – anonymous Global and Sites The number of anonymous on-lineusers.

Application

Pages not found/sec Global and Sites The number of not found pages (404error) per second.

Application

Pending requests/sec Global The number of pending pagerequests per second.

Application

Robots.txt views/sec Global and Sites The number of pagerobots.txtrequests per second.

Important: For values to be writtento this counter, IIS must beconfigured to handle extensions..txtSee Extensionless and custom

.URLs

Application

Running SQL queries Global The number of running SQL queries. Application

Running threads Global The number of running threads. Application

Scheduled tasks running Global The number of running scheduledtasks.

Application

Scheduled tasks in queue Global The number of scheduled tasks inthe queue.

Application or Windows service*

System page views/sec Global The number of system pagesviewed per second.

Application

Warnings Global The number of warnings in event logsince the last application restart.

Application

* The Windows service is used to write values to these counters only if it is installed and if the option is enabled in Use external service Settings ->.System -> Health monitoring

You can also to monitor other system values.define custom counters 

Adding cookie law consent to web pagesThe Cookie law is in effect in some European countries, which requires websites to ask visitors for consent to use cookies. You can findmore information at . Kentico provides functionality that helps you comply with the law. ­­­­­­­­­­­­­­­­http://www.ico.gov.uk/

Quickly including cookie consent on your website

Open the application.PagesSelect the page where you want to display the consent message.Switch to the tab.DesignAdd the web part onto the page.Simple cookie law consent

Kentico cookies are separated into several according to their importance in the system. There are three main levels designed tocookie levelscomply with the law regulations.

Available cookie consent web parts

To display a text message and buttons asking visitors for consent to store cookies in their browsers, use one of the following :web parts

Cookie law consent Simple cookie law consent

Page 243: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Both web parts are implemented by the control. The "simple" variant is only a preconfigured~/CMSWebParts/General/CookieLaw.ascxversion of the same web part. By default, the web parts are not styled, so you need to update your site's to get the requiredCSS stylesheetlook and feel.

Cookie law consent

This web part offers three cookie levels to choose from:

No cookiesOnly essential cookiesAll cookies

On each level, actions to switch to the remaining levels are offered. You may customize the text messages, available actions as well asbutton texts.

The property sets the enforced cookie level before the user makes a choice.Default user cookie level

(Use the system settings) option sets the default user cookie level to the settings defined for the web.config CMSDefaultCookieLevelkey (available values are , , , , , as specified on the page).None System Essential Editor Visitor All Cookie levels

The property is a basis for other settings in the web part. It defines a level to which the user's currentCompare current cookie level tocookie level is compared. Three states with their own settings are defined depending on the selected level:

When the current level is below the compared level ( settings).Below level behaviorWhen the current level exactly matches the compared level ( settings).Exact level behaviorWhen the current level is above the compared level ( setings).Above level behavior

This should give you enough options to configure the web part.

The allows you to simulate the user cookie level in Edit and Preview mode.Preview cookie level property

Simple cookie law consent

This is a preconfigured version of the previous web part. The preset behavior is: Disable cookies by default, request allowing, and onceallowed, hide the web part.

 

Cookie levelsKentico classifies cookies into several levels according to their purpose. The levels allow you to set cookie levels for users. The following arethe default levels available in the cookie API (CMS.Helpers.CookieLevel class):

Cookie level Description

None (-1000) Absolutely no cookies are allowed, including the cookie that storesthe cookie level selected for users. This makes sense only if youwant to disable absolutely every cookie by default.

System (-100) This level allows the session cookie (due to security on postback),and CookieLevel cookie which remembers the cookie level selectedby the user. In terms of the end user and the Cookie law, thismeans ."Cookies are not allowed"

Essential (0) Cookies which are required for all website functionality needed bysite visitors. This includes authentication, shopping cart, votes inpolls etc. From the visitor's perspective, this means "Allow only

.cookies that I may need, but do not track me"

Editor (100) Cookies which are needed for the administration interface to workcorrectly. For example used to track the selected view mode,remember tabs and sliders, etc.

Visitor (200) All cookies that are not assigned to an explicit level (which alsoincludes your custom cookies if you use any) are considered to becookies identifying the visitor, i.e. user tracking cookies, which arenot really needed, but are useful for the site owner if using EMS.

Live site

Once you place the web part into your website, you might not see the message after switching to the live site. The reason is that allusers who access the Kentico administration interface have cookies enabled by default and the cookies are already stored in thebrowser you are working with. To check whether your configuration of the cookie web part is correct, log out of the administrationinterface and clear all cookies in your browser. Or try the website in a different browser or computer.

Page 244: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

All (1000) This is a system level, that allows all cookies, no matter what theirlevel is. From the site visitor's perspective this means "Allow all

.cookies now and in the future"

The numbers associated with each cookie level are integer constants, which allow you to further customize the levels or add custom levels.The levels "None" and "All" have an absolute value of 1000 to provide enough space for future updates or custom levels.

For simplicity, there are 3 main levels, which represent the choices offered to visitors when asking for consent to use cookies:

Simplified cookie level Corresponding API level Description

No cookies System Enables the minimum cookies required forthe website to work, and rememberswhether the user allows cookies or not.

Only essential cookies Essential Enables all cookies required for websitefunctionality, but no tracking cookies.

All cookies All Enables all cookies used on the website.

These three levels are also used in the provided cookie web parts.

 

Reference - Kentico cookiesThe following table describes the cookies used in Kentico, and lists the of each cookie:level

Cookie name Level Description

CMSCookieLevel System Specifies which cookies are allowed by thevisitor.

ASP.NET_SessionId System Keeps the user session ID for securityreasons.

CMSPreferredCulture Essential Stores the visitor's preferred .content culture

CMSCsrfCookie Essential Store's a security token that the systemuses to validate all form data submitted viaPOST requests. Helps protect against Cross

.site request forgery

CMSMobileRedirected Essential Indicates if the visitor has been redirected tothe mobile version of the website by the Mo

web part.bile device redirection

CMSCurrentTheme Essential Stores the name of the current visual themeto provide proper design to the dialogwindows.

Webauthtoken Essential Live ID authentication cookie.

CMSForumPostAnswer Essential Keeps a list of Question-Answer postforums in which the user user voted for an answerto prevent repeated votes.

CMSVotedPolls Essential Keeps a list of where the user voted topollsprevent repeated votes.

CMSRatedDocuments Essential Keeps a list of pages that the user toratedprevent repeated votes.

CMSShowDesktopVersion Essential Indicates that the visitor has switched to thedesktop (default) version of the website froma specific device profile.

.ASPXFORMSAUTH Essential Stores the user's encrypted authenticationticket when using forms authentication.

FormState Editor Form state flag to allow restoration of failedrequests.

Automatic cookie consent for administrators and editors

If a user logs in to the administration interface, cookies are automatically enabled to provide full editing functionality. We expectthat loggging in to the administration interface identifies a user as staff, so there is no need for cookie consent.

Page 245: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

CMSPreferredUICulture Editor Stores the preferred UI culture of the user.

CMSViewMode Editor Stores the user's current view mode (Edit,Preview, Design, etc.).

CMSUserWords Editor User's custom word dictionary kept by thespell checker.

DisplayContentInDesignMode Editor Remembers the user's setting of the Web checkbox on the Design tab (forpart content

example in the Pages application).

DisplayContentInUIElementDesignMode Editor Remembers the user's setting of the Web check box on the Design tab of part content.UI elements

CMSMacroDesignerTab Editor Remembers the last active tab of the Edit.macro condition dialog

CMSSplitMode Editor Remembers the state of the languageversion split-view mode when editingmultilingual websites.

CMSPreviewState Editor Stores the user's latest page design previewpreferences.

CMSPropertyTab Editor Remembers the last active tab of theProperties section in the Pages application.

CMSViewTab Editor Remembers the last active tab of the Viewsection in the Preview mode of the Pagesapplication.

CMSValidationTab Editor Remembers the last active tab of theValidation section in the Preview mode ofthe Pages application.

CMSEdVariantSliderPositions<templateid> Editor Remembers the position of the variant sliderwhen defining variants for or MVT Content

.personalization

CMSWebPartToolbarCategory Editor Stores the selected web part category onthe .web part toolbar

CMSWebPartToolbarMinimized Editor Remembers if the user minimized the webpart toolbar on the Design tab.

CMSCurrentDeviceProfileName Editor Stores the selected whendevice profile editing pages.

CMSCurrentDeviceProfileRotate Editor Remembers whether the device previewuses the landscape or portrait view.

CMSUniGraph Editor Stores the user's preference inSnap to gridthe advanced workflow and marketing

designer.automation

CMSSessionToken Editor Stores the token used by the web servicethat provides the advanced workflow and m

designer.arketing automation

ABSelectorState<ABtestname> Editor Stores the state of the selectors on AB testoverview page.

VisitorStatus Visitor Indicates if the visitor is new or returning.Used for tracking the statistic in visitors Web

.analytics

Source Visitor Stores the channel which the user camefrom (e.g., email, Facebook, Twitter, etc.).

Campaign Visitor Stores the web analytics assigneCampaignd to the visitor.

TrackedCampaigns Visitor Stores all the web analytics ,Campaignswhich should be tracked within a JavaScriptsnippet.

Page 246: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

UrlReferrer Visitor Stores the URL referrer from which the userarrives on the website.

CurrentContact Visitor Stores the GUID of the related tocontactthe current site visitor. Used to trackactivities on the website.

CMSAB<ABtestname> Visitor Used to track conversions for the test andmaintain consistent page content for thevisitor.Stores the name of the page variantassigned to the visitor, the list of performedconversions and information whether visitoris included in A/B testing specified by an A/

.B test

CMSMVT<mvtestname> Visitor Stores the combination of variants assignedto the visitor by an . Used to trackMVT testconversions for the test and maintainconsistent page content for the visitor.

CMSNoTestMVT<templateid> Visitor Stores the currently selected MVTcombination for editors in the administrationinterface.

CMSShoppingCart Visitor Stores a reference to the user's activeshopping cart.

CMSBodyClass Visitor Body element class to provide accessibilitystandards.

CMSEd<GUID>Current Visitor Stores the current step of webWizard layoutparts.

ChatLoggedInToken Visitor Stores the login state for the applicatioChatn (indicates if the user is in the online state).

ChatSupportLoggedInToken Visitor Indicates if the user is logged in to thesupport chat.

<Window name>_<Group ID>_roomID Visitor Stores bindings between groups of chat web and chat rooms (for a specific windowparts

or tab).

chat_autoinitchat_displayed_<GUID> Visitor Remembers if the Automatically initiated web part was shown to the userchat

(prevents multiple chat initiation messages).

chat_kick_roomid_<room ID> Visitor Indicates that the user was kicked from thespecified chat room (and is not allowed toreturn).

StrandsSBS_* Visitor Used by the Strands Recommender solelyfor its own purposes. The cookies aremanaged on the Strands side.

CMSStrandsTrackEvent_* Visitor Stores persistent HTTP context after a pageis reloaded. Used for tracking of shoppingcart events.

__openid_selector_* Visitor Stores OpenId user identification forauthentication purposes.

Third party cookies

Third party Cookie level Notes

Page 247: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

Social media All (by default) Social media integration web parts use thecorresponding social media's cookies.

If social media web parts are not displayedon your pages, lower the default socialmedia using this web.configcookie levelkey.

<addkey="CMSSocialMediaCookieLevel"value="200" />

CKEditor - CKEditor cookies may be stored for usersworking with the .WYSIWYG editor

51D All Used when the system is configured for 51d.egrees.mobi mobile device detection

 

Banning IP addressesThe Banned IPs functionality is useful when you want to prevent users with certain IP addresses from accessing or using your website in acertain way. This typically happens when a user posts offensive material on a website (e.g. on a forum), harasses site members or behavesin some other unwanted way.

IP banning can also be used to restrict access to your websites from certain areas of the world. These bans can be set either for individualwebsites or globally for all websites in the system.

Enabling Banned IPs

To enable this functionality, select the check-box in .Enable banned IPs Settings -> Security & Membership -> Protection

Users attempting to perform an action from an IP address that is banned will get a page with a message displayed in their browsers (theHTTP response code of the page will be 403.6). The default banned IPs redirect page can be found at . You~/CMSMessages/BannedIP.aspxcan create your own page and set its URL using the setting.Redirect banned IPs to URL 

Banning IP addresses

Open the applicationBanned IPsClick .New banned IPEnter the required details:

New banned IP settings...

IP Address IP address to be banned.

The asterisk ( * ) wildcard can be used as a substitute for anynumber in the IP address, substituting for all values from 0 to255.

Example: 192.168.1.*

Example -

Settings social

media cookie level

to "Visitor"

Page 248: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Ban type Type of the ban. The following types are available:

Access to the website - users cannot access the sitefrom the entered address at all.Login - users cannot log in from the entered address.Registration - users cannot register from the enteredaddress.All user actions - users can enter the site from this IP,but they are not allowed to register or log in, and theyare not allowed to add any content to the site (e.g., blogcomments, board messages, etc.).

Enabled If unchecked, the ban takes no effect.

Ban Reason Text description of why the IP was banned.

Ban IP address If selected, this IP address will be banned.

Allow IP address for this site if the IP address is bannedglobally

If selected, this IP address will be allowed for the selectedsite even if it is banned globally.

Allow site to override the ban If checked, this ban can be overridden by bans set forparticular sites; can be set only for global bans.

Page 249: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Page 250: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

4.

1. 2.

1. 2.

Click Save.

Now if you go back to the list of banned IPs, you should see the newly created record present in the list.

Finding users' IP addresses

If you wish to find the IP address of a user responsible for a certain event:

Open the applicationEvent log Find the event you are interested in.

The IP address of the user who caused the event has its own column in the displayed table.

For example, if you want to find a user who often uses Bad words, enter into the field of the event log filter andBADWORD Event codemake sure is selected. This displays a list of all Bad word violations and all relevant information including user names and their IPContainsaddresses.

To find the IP address used by a specific user when they last logged on:

Open the application.UsersEdit the user whose IP address you wish to find.

You can find it on the tab in the field.General Last logon information

This can be useful if you get multiple abuse reports about some users and want to quickly find their IP address. 

Configuring countriesThe Countries application allows you to configure a list of countries, which is used in various places throughout the system. The countriesdefined in this list are offered in forms, where the Country selector form control is used (for example in ). Also, the list isContact managementused for defining countries from which the customers can order products in an on-line store.

Creating new countries

Click to define a new country. The following properties are available when creating or editing a country object:New country

Country display name The name of the country displayed to the users of your website.

Page 251: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4. 5.

Country code name The string identifier of the country object used by developers in thecode. Unless there is a reason to set a particular value, you canleave the default option, and the system generates an(automatic)appropriate code name.

Country 2-letter code Can be used to enter the country's .two-letter country code

Country 3-letter code Can be used to enter the country's .three-letter country code

   

Working with system reportsThe application allows you to create internal reports to in the Kentico system and on websites, such asReporting watch the activityrecently created pages, expired pages, website visits, user registration etc.

The application gathers data from the database by using SQL queries and displays the results in highly customizable reports including tablesand graphs.

 

Creating reportsTo watch the activity in the system and on websites, you need to create reports. Then you can add components to the report to display thecollected data, such as graphs, tables and values.

Open the application.ReportingSelect a category in the tree.Click .New reportType in the . Report display nameClick .Save

The tab of the report editing interface opens.GeneralGeneral tab properties

Report display name Sets the name of the report displayed in theadministration interface.

Report code name A unique name that serves as an identifier of the report,for example in the API or URLs.

Report category Shows the category under which the report belongs. Youcan move the report to a different category by selectingone from the drop-down.

Page 252: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

5.

6.

1. 2. 3.

Connection string Sets the database connection string used by the report'scomponents (graphs, tables and values) when loadingdata. You can override this value for individualcomponents by editing their details.

Only users who have the permissSet connection stringion for the module are allowed to change thisReportingproperty's value.

The system retrieves the list of connection strings fromthe section of the application's<connectionStrings>web.config file. The option represents the (default) CMS

added by the application's initialConnectionStringdatabase installer.

You can check the box to load the value from the Inherit setting configured in Default report connection string S

.ettings -> Security & Membership

You can use reporting connection strings for the followingscenarios:

Retrieving data from a Separated on-line marketingdatabaseRestricting the database-level permissions ofreporting queries via a connection string with alimited database user

Allow public users to see this report Indicates if the report should be visible by public users ifit is published on the website using a reporting web part.

Enable subscription If enabled, users with the permission for the Subscribe R module are allowed to aneporting subscribe to the report

d its components (graphs, tables or values).

This setting is also available when configuring the detailsof individual components. Subscribing to specificcomponents is only possible if both settings are enabled.

Define the of the report using the WYSIWYG editor. To retrieve and display information from the Kentico database, add theLayoutfollowing objects into the report's layout:

TablesGraphsHTML graphsValues

Additionally, are supported in the report layout.macro expressions

You can view the output of the report on the tab.View

 

Creating tables in reports

Tables allow you to retrieve data from the Kentico database using an SQL query.

In the application, edit a report on the tab.Reporting GeneralClick  in the section below the layout editor.New TablesDefine the properties of the new table:

Report table properties

Default

Display name The name of the table shown in the user interface.

Code name Name used in your code.

Localizing strings in reports

If you need to create a single report in multiple languages, follow the instructions given in .Working with resource strings

Page 253: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

4. 5. 6. 7.

8.

Enable export If enabled, users who view the table are able to export thedisplayed data to external files using the Microsoft Excel(XLSX), CSV or XML format. The data export feature may beaccessed by rightclicking the table in the report, which opensa menu with possible export actions.

Enable subscription If enabled, users will be able to subscribe to the currentlyedited report table. To allow subscriptions, it is alsonecessary to have the box checked onEnable subscriptionthe tab of the given report.General

Query

Query Here you can add the SQL query used to retrieve data to bedisplayed by the table.

Is stored procedure Indicates if the query is a stored procedure or not.

Connection string Sets the database connection string used by the table'squery.

Only users who have the permissionSet connection stringfor the module are allowed to change this value.Reporting

The system loads the list of connection strings from the <con section of the application's web.config file.nectionStrings>

The option represents the ad(default) CMSConnectionStringded by the application's initial database installer.

You can check the box to load the Inherit Connection stringvalue set for the parent report.

No record text Text to be displayed if the query doesn't return any data.

Skin

Skin ID ID of the .NET skin (stored in the files in .skin ~/AppThemes/) which will be used for the table.<theme name>

Paging

Enable paging If enabled, paging will be enabled when the report table isdisplayed. The paging can be configured by the twoproperties below.

Page size Number of table rows per page.

Paging mode Type of paging controls displayed below the table. Thefollowing options are available:

Previous-next buttons - displays buttons leading to theprevious and next pagePage numbers - displays page numbers leading to thecorresponding pagesPrevious-next-first-last buttons - displays buttonsleading to the first, last, previous and next pagePage numbers-first-last buttons - displays pagenumbers leading to the corresponding pages andbuttons leading to the first and last page

Click .Save & ClosePlace the cursor in the layout editor where you want to put the table.Select the defined table from the list in the section.TablesClick .Insert

Tables are entered into the report layout editor as an expression in the following format: %%control:ReportTable?<report.code name>.<table code name>%%

Click .Save

Page 254: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

Creating graphs in reports

Graphs allow you to retrieve data from the Kentico database and display it in various types of visual formats.

In the application, edit a report on the tab.Reporting GeneralClick  in the section below the layout editor.New GraphsDefine the properties of the new graph:

Report graph properties:Default

Display name Display name of the graph shown in the user interface.

Code name Code name of the graph.

Writing queries for tables

The queries you write for tables are standard SQL queries that pull data from the Kentico database. For information about pages,you can use the table that returns published versions of all pages.View_CMS_Tree_Joined

Table column names

The table column names use the same names as the column names from the returned data set. If you need to use user friendlynames, you can use the following syntax in the query:

SELECT PageTemplateDisplayName AS [Template Name], ...

Page 255: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Enable export If enabled, users who view the graph are able to export thedisplayed data to external files using the Microsoft Excel(XLSX), CSV or XML format. The data export feature may beaccessed by rightclicking the graph in the report, which opensa context menu with possible export actions.

Enable subscription If enabled, users will be able to subscribe to the currentlyedited report graph. To allow subscriptions, it is alsonecessary to have the box checked onEnable subscriptionthe tab of the given report.General

Query

Query Database query that extracts the data that will be displayed inthe graph. It must return at least two columns: first one forcategories, the other columns are used for values.

Is stored procedure Indicates if the specified query is a stored procedure.

Connection string Sets the database connection string used by the graph'squery.

Only users who have the permissionSet connection stringfor the module are allowed to change this value.Reporting

The system loads the list of connection strings from the <con section of the application's web.config file.nectionStrings>

The option represents the ad(default) CMSConnectionStringded by the application's initial database installer.

You can check the box to load the Inherit Connection stringvalue set for the parent report.

No record text Text to be displayed if the query doesn't return any data.

Chart type

Graph type The following graph types are available:

Bar chart - bar graph, accepts multiple values and displaysthem next to each other.

Bar stacked chart - bar graph, accepts multiple values anddisplays them on top of each other.

Pie chart - pie graph, accepts only one column for values.

Line chart - line graph, accepts multiple values and displaysthem as separate lines.

Drawing style The following chart styles are available:

Bar chart:

Bar - uses rectangular column bars

Page 256: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Cylinder - uses cylinders

Bar stacked chart:

Bar - uses rectangular bars

Cylinder - uses cylinders

Area - uses a line chart with the space under the linesfilled with the respective color

Pie Chart:

Page 257: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Pie - uses a standard circular chart divided into sectors

Doughnut - uses a circular chart with a blank center

Line chart:

Line - uses straight lines to connect values

SpLine - uses smooth curved lines

Overlay If enabled, charts with multiple values display them behindeach other with the lower values in the front. Only availablefor displayed in 3D.Bar charts

100% stacked If enabled, values are displayed as a percentage of theircategory's column. Only available for .Bar stacked charts

Page 258: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Orientation Determines if bars are displayed horizontally or vertically.Only available for and with the Bar Bar stacked charts Bardrawing style.

Drawing design Determines the aesthetic design of .Pie charts

Label style Determines the style of 'pie piece' descriptions for .Pie charts

Doughnut radius Determines the width of style . LargerDoughnut Pie chartsnumbers decrease the size of the center. Only available for P

with the drawing style.ie charts Doughnut

Collect pie slices Items that represent a smaller percentage of the thPie chartan the value entered here will be added together anddisplayed as a single item labeled . This ensures thatOtherspie charts remain legible, even if there are many items withvery small values.

Show as 3D If enabled, charts are displayed in 3D.

Rotate X Rotates the chart around its X axis. Accepts values from -90to 90. Only available if is enabled.Show as 3D

Rotate Y Rotates the chart around its Y axis. Accepts values from -180to 180. Only available if is enabled.Show as 3D

Width Determines the width of the chart image.

Height Determines the height of the chart image.

Show Grid Shows a thin dotted line grid in the graph chart, Not availablefor Pie charts.

Title

Title Title of the chart.

Title font Determines font properties of the chart title.

Title color Determines the color of the chart title. Accepts standardHTML color names and hexadecimal color codes or the colorselector can be used.

Title position Determines the position of the chart title.

Legend

Background color Determines the background color of the legend. Acceptsstandard HTML color names and hexadecimal color codes orthe color selector can be used.

Border color Determines the border color of the legend. Accepts standardHTML color names and hexadecimal color codes or the colorselector can be used.

Border size Determines the size of the legend border.

Border style Determines the style of the legend border.

Position Determines the position of the legend in the chart.

Legend inside If enabled, the legend is displayed inside the chart area.

Page 259: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Fixed legend Allows a custom description to be set for the value in thelegend that will be used instead of the name of the sourcecolumn. This field is only usable for charts that display onetype of series, i.e. each item has a single value. It also cannotbe used for .Pie charts

It is possible to enter static text or use a macro that resolvesinto the currently selected value of a inreport parameterformat .{%<parameter name>%}

For example, if the report has a parameter named Campaign that allows users to display the statistics of a selectedName

marketing campaign, could be entered{%CampaignName%}into this field, and the legend value description wouldautomatically contain the name of the currently displayedcampaign.

Legend title Sets the text caption of the legend.

X-axis

X axis title Title of the horizontal axis in the chart.

Title color Determines the color of the X axis title. Accepts standardHTML color names and hexadecimal color codes or the colorselector can be used.

X axis angle Determines the declination angle of X axis descriptions.Setting this parameter to 90 causes upright descriptions.Accepts values from -90 to 90.

X axis format Can be used to specify the format of item descriptions on theX axis that are in numerical or datetime format.

Numeric formatting:

Numbers can be formatted using .NET Custom numeric enclosed in curly brackets.format strings

Examples:

{Item #} - X axis descriptions will be displayed as , Item 1 Item etc.2

{0.00} - numeric X axis descriptions will be displayed withprecision of two decimal places.

Date and time formatting:

The format can be set using singleletter .NET Standard date without quotes.and time format specifiers

In addition, any custom formatting can be defined usingexpressions enclosed in curly brackets. For example, {yyyy -

would specify a date and time format like:MM - dd - hh:mm}2010 - 08 - 19 - 12:30

Title font Determines font properties of the X axis title.

Position Determines the position of the X axis title.

Axis label font Determines font properties of X axis descriptions.

X axis interval Sets the interval between X axis descriptions.

Use X axis sorting If enabled, values are connected in the order they appear inon the X axis, otherwise they are connected in the order theyhave in the returned dataset. Only used by and Line charts

charts with the drawing style.Bar Stacked Area

Y-axis

Y axis title Title of the vertical axis in the chart.

Title color Determines the color of the Y axis title. Accepts standardHTML color names and hexadecimal color codes or the colorselector can be used.

Page 260: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Y axis angle Determines the declination angle of Y axis descriptions.Setting this parameter to 90 causes upright descriptions.Accepts values from -90 to 90.

Y axis format Can be used to specify the format of value descriptions onthe Y axis that are in numerical or date-time format. Thesame formatting options can be used as in the X axis formatfield described above.

Use X axis settings If enabled, X axis settings are used for the , Title font Positio and properties.n Axis label font

Title font Determines font properties of the Y axis title.

Position Determines the position of the Y axis title.

Axis label font Determines font properties of Y axis descriptions.

Series

Primary background color Determines the primary color of series items in the chart.Accepts standard HTML color names and hexadecimal colorcodes or the color selector can be used. Not available for Lin

.e charts

Secondary background color Determines the secondary color of series items in the chart.Accepts standard HTML color names and hexadecimal colorcodes or the color selector can be used. Not available for Lin

.e charts

Gradient Gradient of the colors of the series items in the chart.Transitions from to .Primary Secondary background colorsNot used when displayed in 3D. Not available for Line charts.

Border color Determines the border color for series items in the chart. Notavailable for .Line charts

Border size Determines the border size for series items in the chart. Notavailable for .Line charts

Border style Determines the border style for series items in the chart. Notavailable for .Line charts

Display item value If enabled, values are displayed above series items.

Page 261: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

Item value format Sets the format of the text displaying the values of seriesitems in the chart. This overrides the proDisplay item valueperty.

Standard can be placed into this field,MS chart keywordssuch as for example:

#VALX - displays the current value of the X axis.#VALY - displays the current value of the Y axis.#AXISLABEL - displays the current X axis label.#INDEX - displays a number determined by the order ofthe series item on the X axis, starting from 0.#SER - displays the name of the current series, i.e. thetype of the value.

If the current value is numerical, the displayed format can bemodified by adding the following parameters after thekeyword:

{P} - displays the number as a percentage.{C} - displays the number as a monetary amount in thecurrency of the current language culture. specified in thebrowser; please be aware that this does convert thenotvalue, it only influences the format.{F} - displays the number with a floating point, this is thedefault parameter.{E} - displays the number in exponential format.

The number of digits after the decimal point can be specifiedwithin the curly brackets.

For example displays Y axis values with a#VALY{F2}floating point and a precision of 2 decimal places.

Line color Determines the line color used in . AcceptsLine chartsstandard HTML color names and hexadecimal color codes orthe color selector can be used.

Line size Determines the line size used in .Line charts

Line style Determines the style used in . Not used whenLine chartsdisplayed in 3D.

Symbols Determines the symbols used for values in .Line charts

Item tooltip Determines the content and format of the tooltip that isdisplayed when hovering over a series item in the chart. Thisfield supports both Kentico and standardmacro expressionsMS chart keywords as described in the prItem value formatoperty.

Item link Causes the series items in the chart to serve as links to thespecified URL when clicked. The same macro expressionsand keywords as described in the property canItem tooltipbe used here as well.

Values as percent If checked, graphs with multiple types of series (severalvalues per item) will convert item values into a percentageout of the sum of all values for that item.

For example, if an item has two values, and , they would3 9be converted to and respectively.25 75

When using this setting, it is necessary to set the Chart Area property to at least to ensure that all types-> Scale max 100

of data are displayed correctly.

Not available for , since these already display onePie chartstype of value as a percentage.

Chart area

Primary background color Determines the primary background color of the chart area.Accepts standard HTML color names and hexadecimal colorcodes or the color selector can be used.

Page 262: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

4. 5. 6. 7.

8.

Secondary background color Determines the secondary background color of the chartarea. Accepts standard HTML color names and hexadecimalcolor codes or the color selector can be used.

Gradient Gradient of the chart area background colors. Transitionsfrom to .Primary Secondary background colors

Border color Determines the border color of the chart area. Acceptsstandard HTML color names and hexadecimal color codes orthe color selector can be used.

Border size Determines the size of the chart area border.

Border style Determines the style of the chart area border.

Scale min Sets the minimum Y axis value that is required for an X axiscategory to be displayed. Not used by .Pie charts

Scale max Sets the maximum value that is displayed on the Y axis. Notused by .Pie charts

Ten powers If large values are present in the chart, they are divided byappropriate ten powers and the division ratio is displayed withthe y-axis title. Not used by .Pie charts

Reverse Y axis If enabled, the vertical axis is reversed. Not used by Pie.charts

Border skin style Determines the skin of the chart area border.

Plot area

Primary background color Determines the primary background color of the plot area.Accepts standard HTML color names and hexadecimal colorcodes or the color selector can be used.

Secondary background color Determines the secondary background color of the plot area.Accepts standard HTML color names and hexadecimal colorcodes or the color selector can be used.

Gradient Gradient of the plot area background colors. Transitions from to .Primary Secondary background colors

Border color Determines the border color of the plot area. Acceptsstandard HTML color names and hexadecimal color codes orthe color selector can be used.

Border size Determines the size of the plot area border.

Border style Determines the style of the plot area border.

Click .Save & ClosePlace the cursor in the layout editor where you want to put the graph.Select the defined graph from the list in the section.GraphsClick .Insert

Graphs are entered into the report layout editor as an expression in the following format: %%control:ReportGraph?<reportcode name>.<graph code name>%%.

Click .Save

Page 263: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Creating HTML graphs in reports

In addition to the image-based graphs, data can be visually represented in HTML graphs. Graphs of this type are composed purely out ofHTML code (table and DIV elements). As a result, they can be dynamically scaled according to the amount of data that needs to bedisplayed, unlike an image with a predefined size.

HTML graphs always use a horizontal bar layout, which can easily be extended to display any number of items. In most cases where scalingis not an issue, it is recommended to use standard graphs, since they offer more customization options and graphical flexibility.

Like other reporting tools, HTML graphs retrieve the data to be displayed using queries. The queries must return at least two columns: thefirst column is used for items and the others for their values. If more than two columns are specified, the values of these additional columns

Writing queries for pie charts

The queries for pie chart graphs must return two columns: the item categories and their values. The graph automatically calculatesthe displayed size of the given category.

Writing queries for bar graphs

The queries for bar chart graphs must return at least two columns: the item categories and their values. If you specify more thantwo columns, the additional columns will be displayed side-by-side ( ), in front of each other ( with the Bar charts Bar charts Overla

setting enabled), on top of each other ( ) or they will divide one column by percentage ( wy Bar stacked charts Bar stacked chartsith the setting enabled).100% stacked

Writing queries for line charts

The queries for line chart graphs must return at least two columns: the item categories and their values. If you specify more thantwo columns, the additional columns will be displayed as separate lines.

Page 264: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

are displayed below each other as differently colored bars.

By default, data is displayed in descending order, i.e. with the newest items at the top of the graph. To create a HTML graph:

In the application, edit a report on the tab.Reporting GeneralClick  in the section below the layout editor.New HTML graphsDefine the properties of the new HTML graph:

HTML graph properties

Default:

Display name Display name of the graph shown in theuser interface.

Code name Code name of the graph.

Enable export If enabled, users who view the graphare able to export the displayed data toexternal files using the Microsoft Excel(XLSX), CSV or XML format. The dataexport feature may be accessed byrightclicking the graph in the report,which opens a context menu withpossible export actions.

Enable subscription If enabled, users will be able tosubscribe to the currently edited HTMLgraph. To allow subscriptions, it is alsonecessary to have the Enable

box checked on the subscription Gene tab of the given report.ral

Query:

Query Database query that extracts the data that will be displayed in the graph. It mustreturn at least two columns: first one for categories, the other columns are used forvalues.

Is stored procedure Indicates if the specified query is a stored procedure.

Connection string Sets the database connection string used by the graph's query.

Only users who have the permission for the modSet connection string Reportingule are allowed to change this value.

The system loads the list of connection strings from the sectio<connectionStrings>n of the application's web.config file. The option represents the (default) CMSConn

added by the application's initial database installer.ectionString

You can check the box to load the value set for theInherit Connection stringparent report.

No record text Text to be displayed if the query doesn't return any data.

Page 265: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

3.

4. 5. 6. 7.

8.

Title:

Title Sets the title of the graph.

Legend:

Legend title Sets the text caption of the legend.

Display legend Indicates if the legend should be displayed.

Series:

Item name format Can be used to specify the format of item descriptions on the X axis that are innumerical or datetime format.

Numeric formatting:

Numbers can be formatted using .NET .Custom numeric format strings

Examples:

Item # - X axis descriptions will be displayed as , etc.Item 1 Item 2

{0.00} - numeric X axis descriptions will be displayed with precision of two decimalplaces.

Date and time formatting:

The format can be set using singleletter Standard date and time format specifierswithout quotes.

In addition, any custom formatting can be defined. For example, yyyy - MM - dd - would specify a date and time format like: 2010 - 08 - 19 - 12:30hh:mm

Item value format Sets the format of the text displaying the values of series items on the Y axis of thegraph.

This field supports all types of Kentico . The following macrosmacro expressionsshould be used most frequently:

{%ser%} - resolves into the name of the current item's series, i.e. the type ofthe value.{%xval%} - resolves into the X axis value of the current item.{%yval%} - resolves into the Y axis value of the current item.{%pval%} - resolves into the percentage that the value of the current itemrepresents out of the sum of all values in the graph. If there are multiple typesof Y axis values, they are all included in the total sum.

Examples:

{%ser%} = {%yval%} - displays the name of the series and its value (e.g. Visits).= 287

{%pval|(todouble)0.0|(format){0:0.0}%}% - displays the item's percentagevalue rounded to one decimal place (e.g. ).5.1%

Item tooltip Determines the content and format of the tooltip that is displayed when hoveringover a series item in the graph. The macro expressions described in the Item

property can also be used in this field.value format

Item link Causes the series items in the graph to serve as links to the specified URL whenclicked. The macro expressions described in the property canItem value formatalso be used in this field.

Click .Save & ClosePlace the cursor in the layout editor where you want to put the HTML graph.Select the defined HTML graph from the list in the section.HTML graphsClick .Insert

HTML graphs are entered into the report layout editor as an expression in the following format: %%control:ReportHtmlGrap.h?<report code name>.<graph code name>%%

Click .Save

 

HTML graphs on the live site

Because of the way they are constructed, HTML graphs are only displayed correctly in the administration interface. The necessarystyles will not be applied on the live site.

Therefore, it is recommended to avoid publishing reports containing HTML graphs on your website (you can find more information

Page 266: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4. 5. 6. 7.

8.

Creating values in reports

A value is an object that you can place into the layout of a report, which can be used to display a single scalar value returned by a query in aspecified string format.

In the application, edit a report on the tab.Reporting GeneralClick  in the section below the layout editor.New ValuesDefine the properties of the new value:

Report value properties

Default

Display name The name of the item in the list

Code name Name used in your code

Enable subscription If enabled, users will be able to subscribe to the currentlyedited report value. To allow subscriptions, it is alsonecessary to have the box checked onEnable subscriptionthe tab of the given report.General

Query

Query Here you can add the SQL query used to retrieve data to bedisplayed by the value.

Is stored procedure Indicates if the query is a stored procedure or not.

Connection string Sets the database connection string used by the value'squery.

Only users who have the permissionSet connection stringfor the module are allowed to change this value.Reporting

The system loads the list of connection strings from the <con section of the application's web.config file.nectionStrings>

The option represents the ad(default) CMSConnectionStringded by the application's initial database installer.

You can check the box to load the Inherit Connection stringvalue set for the parent report.

Format

Formatting string You can format the displayed value using standard .NETexpressions. For example:

{0} - displays the value{0:F1} - displays the value as a floating point numberwith one digit displayed after the decimal point

Click .Save & ClosePlace the cursor in the layout editor where you want to put the value.Select the defined value from the drop-down list in the section.ValuesClick .Insert

Values are entered into the report layout editor as an expression in the following format: %%control:ReportValue?<report.code name>.<value code name>%%

Click .Save

See for an example on how to create a report with a table, graph and a value.Example - creating a simple report

Creating report categoriesAll reports are organized into categories in a hierarchical tree. We recommend keeping reports that monitor related actions in one category.You can manage the categories in the application.Reporting

about this process in ).Displaying reports on websites

Writing queries for scalar value

The queries for scalar values may return any number of columns and rows, but the only value that will be displayed is the value inthe first column of the first row of the result set.

Page 267: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4. 5. 6.

1. 2. 3. 4. 5.

6. 7. 8.

Creating new categories

Open the application.ReportingSelect the root of the reporting tree (the category by default).All reportsClick next to the button and select .... New report New categoryType a name of the new category into the field.Category display nameType a code name or leave it as .(automatic)Click .Save

The system creates a new report category. 

Defining report parametersReports and their data can be filtered using parameters.

To create parameters for reports:

Open the application.ReportingSelect the report in the tree.Switch to the tab.ParametersClick .New fieldDefine the properties of the parameter (using the ).field editor

Click .SaveSwitch to the tab.GeneralAdd the parameter to the queries of the report objects (table, graph or value).

All parameters that you define can be used in the query using the @<parametername> expression (e.g., DocumentCreatedParameter).ByUserID = @UserID

For an example of using parameters in reports, see the Defining report parameters section of .Example - simple report

  

Context parameters

In your queries, you can use parameters that provide information about the current context when the report is viewed, such as current user,current site, etc.

Page 268: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

1. 2.

1.

@CMSContextCurrentUserID@CMSContextCurrentUserName@CMSContextCurrentUserDisplayName@CMSContextCurrentSiteID@CMSContextCurrentSiteName@CMSContextCurrentSiteDisplayName@CMSContextCurrentDomain@CMSContextCurrentTime@CMSContextCurrentURL@CMSContextCurrentNodeID@CMSContextCurrentCulture@CMSContextCurrentDocumentID@CMSContextCurrentAliasPath@CMSContextCurrentDocumentName@CMSContextCurrentDocumentNamePath

For example, if you want to display a list of all expired documents of the current website, you can use a query like this:

SELECT DocumentNamePath AS [Document path]FROM View_CMS_Tree_JoinedWHERE DocumentPublishTo < @CMSContextCurrentTime AND NodeSiteID =@CMSContextCurrentSiteID

Displaying parameter values in the report using macros

If you need to display the parameter values in the report, you can place the following macro expression in the report text: {%parametername%}

For example:

List of pages expired on or before {%CMSContextCurrentTime%}

displays:

List of pages expired on or before 2/12/2013 12:06:49 PM

You can use this syntax for both custom report parameters and context parameters. 

Storing data from reportsYou can save the currently displayed data of a report for printing or for a later reference:

In the application, select a report.ReportingOpen the tab.ViewClick .Save

The system archives the entire report into the system history. If the data displayed in the report changes, the saved reports are NOT affected.

You can view the saved reports on the tab.Saved reports 

Exporting report data to files

Additionally, you can also export the data displayed in a report into external files using various formats. To export report data:

Switch to the tab.ViewRightclick on a graph or table in the given report and choose one of the offered options:

Export to Excel - exports the data displayed by the given object to an XLSX spreadsheet.Export to CSV - exports data to a CSV file.Export to XML - exports data to an XML file.

For more details on the data export feature, refer to the  chapter.Exporting data from the user interface

 

Displaying reports on websitesIf you want to display a report on the website or include it on a custom page in the Kentico administration interface, you can use the Reportweb part.

To add a report to your website:

Note: The data export function may be disabled for some tables and graphs, depending on the configuration of the given reportingobject.

Page 269: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

5.

6.

Open the application.PagesSelect the page in the content tree and switch to the tab.DesignAdd the web part.ReportDefine the report properties:

Report name - select the required report.Display filter - indicates if a parameter filter should be displayed on the page (if the report has parameters specified).Enable export - if enabled, users can export the data displayed in the report's charts and tables to other formats (Excel,CSV or XML). Note that data export is not allowed if it is not enabled for the given graph or table (on the tab of theGeneralmain reporting interface, select a graph/table from the list and click ).... -> EditEnable subscription - indicates whether authenticated users are allowed to subscribe to the components (graphs, tables orvalues) in the displayed report. In addition to this property, subscription also needs to be enabled for the given report (on the

tab of the main reporting interface) and the specific graph, table or value. See for moreGeneral Subscribing to reportsinformation.

If the selected report has parameters defined, you can display their values by using the button. However, if the Set parameters Disp property is enabled, these settings are ignored, since the parameters are configurable on the live site using the filter.lay filter

Click .OK

If you view the page on the live site, the report appears just like on the tab in the application.View Reporting 

Other web parts

If you only wish to display a certain graph, table or value from the report, use one of the other web parts from the category:Reporting

Report chartReport tableReport value

You must specify the exact chart/table/value in the respective property of the web part. The first list is used to select the report, the secondone specifies the chart, table or value.

These web parts are also available as .widgets 

Subscribing to reportsIf users are interested in the content of a specific report or want to follow the progress of its data, they can use the subscription feature.Subscribers will regularly receive emails with the uptodate status of the given report. This way, users can easily keep track of the dataprovided by the report simply by checking their email, without having to access the website or its administration interface.

Requirements

There are several levels of settings for enabling report subscriptions:

On the tab of the report editing interface in the application, the checkbox applies to theGeneral Reporting Enable subscriptionentire report.Another setting is available when configuring the details of individual components (graphs, tables or values). IfEnable subscriptionboth these settings are enabled, it is possible to subscribe to specific components.For reports published on the website's pages, subscription also needs to be allowed through the property ofEnable subscriptionthe web part or widget used to display the given report.

Additionally, subscription is only available for users who belong to a role that has the or for the modSubscribe Modify permission Reportingule. 

Subscribing to reports

To subscribe to an entire report, click the action in the header of the page. This can be done:Subscribe

On a report's tab in the application.View ReportingIn any section of the administration interface that provides reports (such as Web analytics).

Page 270: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

1. 2.

To subscribe to individual components of the report (graphs, tables or values):

Right-click the appropriate component in the report.Select the option in the menu.Subscribe to

To subscribe to a report displayed on the live site:

Right-click a chosen component in the report (you cannot subscribe to the whole report).Select the option in the menu.Subscribe to

Report subscription settings

The following settings are available for report subscriptions:

Subscription settings

Send to Sets the email address to which the subscription emails will be sent.By default, the address of the current user is loaded, but it ispossible to specify a different one.

Page 271: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Subject Allows you to enter the subject that will be used for the subscriptionemails.

Subscription item Determines whether the subscription emails should include the fullcontent of the report or only a specific graph, table or valuecomponent.

Time range This setting is only available for reports that offer the possibility ofdisplaying data from a specific time range, selected using andFrom

parameters (e.g. most web analytics and online marketingToreports in the system).

You can choose from the following options:

All available data - the reports in the subscription emails willalways include all possible data with an unlimited time span.Only chosen period - the reports will only contain the latestdata based on the date and time when they were sent. You canuse the field below to specify exactly how manyData from lasthours, days, weeks, months or years of data should beincluded.

Sending interval Through the interval settings, you can define how often and whenexactly the report subscription emails should be sent.

Condition May be used to enter an additional that must bemacro conditionfulfilled in order for the subscription emails to be sent.

For example: SiteObjects.ABTests.HomePageTest.ABTestEnabled

This sample condition ensures that the subscription is active onlywhile a specific (with code name ) isA/B test HomePageTestenabled. You can write any condition according to your specificrequirements.

Send only if data found If checked, subscription emails will only be sent if the reportcontains data at the given time (the subscriber will not receiveempty reports).

Enabled Emails will only be sent for subscriptions that are enabled.

Subscription parameters

If the given report has parameters, this section allows you to set the values that should be used in the reports sent to the subscriber. Onlyparameters that are configured to be visible when viewing the report can be edited (i.e. those that have the Display attribute in the

checkbox enabled on the tab of the given report).editing form Parameters

Unsubscribing

Users can cancel their subscription to a report in the following ways:

By clicking on the unsubscription link included in every email (when using the default email template).The link leads to the system page, where the user can confirm that~/CMSModules/Reporting/CMSPages/Unsubscribe.aspxthey wish to unsubscribe from the given report. The appropriate subscription to be removed is automatically identified usingparameters passed in the query string of the link's URL.

Site administrators can manage subscriptions of a chosen report in the application (edit the report on the t Reporting Subscriptionsab).Users with access to the administration interface can view their report subscriptions in the application on theMy profile Subscriptio

tab, and manually ( ) as needed. ns UnsubscribeAll report subscriptions created by the current user are listed here, even if the target email address belongs to someoneelse.

Time range parameters

Some reports offer the possibility of displaying data from a specific time span selected through parameters. This functionality isensured by two parameters with set to and respectively on the tab.Column names FromDate ToDate Parameters

These two parameters are not displayed in the subscription parameters section. Instead, subscriptions to reports that contain themprovide the and settings, which may be used to specify the appropriate values.Time range Data from last

Page 272: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

For live site users, the option can be provided by the web part (as long as the web part's Unsubscribe My account Display my and properties are enabled).subscriptions Display report subscriptions

After unsubscribing through any of the described ways, the system automatically sends a notification email to the given address.

Managing report subscriptions

When editing a report in the application, you can view and manage all of its subscriptions on the tab.Reporting Subscriptions

Creating or editing subscriptions here offers the standard subscription dialog, but with several additional options:

Subscription item selector - can be used to choose whether the subscription emails should include the full content of the report oronly a specific graph, table or value component.Enabled - uncheck to disable individual subscriptions.Subscription parameters section - if the currently edited report has , this section provides a way to enter the values thatparametersshould be used for the reports sent to the subscriber.

You can edit only those parameters that are configured to be visible when viewing the report (i.e. those that have the Displa flag enabled on the tab).y attribute in the editing form Parameters

Page 273: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,
Page 274: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

Every authenticated user may also configure these options for their own report subscriptions in or on a pageMy profile -> Subscriptions

containing the web part, after editing ( ) the appropriate subscription.My account

Scheduling subscription mailout

To ensure that the report subscription emails are sent correctly and at the appropriate time, the system uses a global called scheduled task R. When executed, this task goes through all enabled reporting subscriptions and checks their settings. If the timeeport subscription sender

interval requirements and condition of a subscription are fulfilled, the system sends out an email with the current content of the given report.

By default, the system executes the task every minute. You can change this configuration in the application. However, ifScheduled tasksyou wish to use report subscriptions, the task must always be enabled and scheduled frequently.

Email templates

The content of the reporting emails sent to subscribers is based on . If you wish to customize the emails in some way, youemail templatescan edit the templates in the application. The following templates are available:Email templates

Reporting - Subscription template - defines the content of the main subscription emails used to send the report status.Reporting - Subscription confirmation - used for the automatic notification emails sent to the recipient when a new subscription iscreated.Reporting - Unsubscription confirmation - used for the notifications that users receive after unsubscribing (or when thesubscription is removed by an administrator).

You can use the following in report subscription email templates:macros

{% SubscriptionBody %} - this macro is resolved into the content of the subscribed report or component.{% DefaultSubscriptionCSS %} - used to add the CSS styles that are required to properly display report content in the email. Thisshould always be included in the element in the HTML version of the subscription template.<head>/<style>{% ItemName %} - for subscriptions to individual reporting components, this macro resolves into the name and type (graph, table orvalue) of the given item. In the case of full report subscriptions, it returns an empty string.{% UnsubscriptionLink %} - generates a link that can be used to cancel the given subscription.

It is also possible to access the following related objects and their properties (e.g. ):{% Report.ReportDisplayName %}

{% Report %} - object representing the report to which the user is subscribed.ReportInfo{% ReportSubscription %} - object of the subscription for which the email is being sent.ReportSubscriptionInfo

Time range parameters

Some reports offer the possibility of displaying data from a specific time span selected through parameters (e.g. most webanalytics and online marketing reports in the system). This functionality is ensured by two parameters with set to Column names F

and respectively on the tab.romDate ToDate Parameters

These two parameters are not displayed in the section. Instead, subscriptions to reports that containSubscription parametersthem provide the and settings, which may be used to specify the appropriate values.Time range Data from last

Important!

To be able to send emails, the system needs to be connected to a working SMTP server. To learn how this can be done, see the C topic.onfiguring SMTP servers

Reports in plain text

If your system is configured to send emails in plain text format, the content of report subscription emails will be limited. In this case,image based graphs are included as attachments and the data from tables is sent in an a CSV file. HTML graphs are notrepresented at all.

You can choose the preferred email format using the setting in .Email format Settings -> System -> Emails

Page 275: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4. 5. 6.

1. 2. 3.

4. 5.

 

Example - creating a simple reportThis example demonstrates how to create a report that displays a table, graph and value, and uses a reporting parameter:

Creating a report category

Open the application.ReportingSelect the root of the reporting tree (the category by default).All reportsClick next to the button and select .... New report New categoryType as the .User reports Category display nameYou can leave the code name as .(automatic)Click .Save

 

Creating a new report

In the application, click .Reporting New reportType Pages by page template as the .Report display nameClick .Save

Now you can edit the layout of the report and insert tables, graphs and values.The tab of the report editing interface opens.General

Type into the text area.Pages by page template LayoutSelect the text and use the editor to set the to .Format Heading 1

Page 276: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

5.

Page 277: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

5.

6.

1. 2.

3. 4. 5. 6.

7.

Click .Save

Creating a new table

On the report's tab, click in the section below the layout editor.General New TablesEnter the following values:

Display name: Pages by Page TemplateQuery:

SELECT PageTemplateDisplayName AS [Template Name], DocumentNamePath AS[Page] FROM View_CMS_Tree_Joined LEFT JOIN CMS_PageTemplate ON CMS_PageTemplate.PageTemplateID =View_CMS_Tree_Joined.DocumentPageTemplateID WHERE PageTemplateDisplayName IS NOT NULL AND PageTemplateIsReusable =1 ORDER BY PageTemplateDisplayName

Is stored procedure: noSkinID: ReportGridAnalyticsEnable paging: yes (checked)Page size: 10Page mode: Page numbers

Click .Save & ClosePlace the cursor in the layout editor on a new line under the heading.Select the table from the list in the section.TablesClick .Insert

The system adds a string like into the text%%control:ReportTable?PagesByPageTemplate.PagesByPageTemplate%%area.

Click .Save

Switch to the tab to see the report table.View

Page 278: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4. 5. 6. 7.

8.

Creating a new graph

Switch back to the report's tab.GeneralClick in the section below the layout editor.New GraphsEnter the following values:

Display name: Favorite Page TemplatesQuery:

SELECT TOP 5 PageTemplateDisplayName AS [Template Name],COUNT(PageTemplateDisplayName) AS [Usage] FROM View_CMS_Tree_Joined LEFT JOIN CMS_PageTemplate ON CMS_PageTemplate.PageTemplateID =View_CMS_Tree_Joined.DocumentPageTemplateID WHERE PageTemplateDisplayName IS NOT NULL AND PageTemplateIsReusable =1 GROUP BY PageTemplateDisplayName ORDER BY COUNT(PageTemplateDisplayName) DESC

Graph type: Pie chartDrawing style: PieTitle: Favorite page templatesSeries -> Display item value: Disabled (not checked)

Click .Save & ClosePlace the cursor in the layout editor on a new line under the table.Select the graph from the list in the section.GraphsClick .Insert

The system adds a string like into the%%control:ReportGraph?PagesByPageTemplate.MostFavoritePageTemplates%%text area.

Click to save the changes.Save

 If you now switch to the tab, you can see the report graph.View

Page 279: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3.

4. 5. 6. 7.

8.

1. 2.

3.

1. 2. 3. 4.

Creating new values

Switch back to the report's tab.GeneralClick in the section below the layout editor.New ValuesEnter the following values:

Display name: Number of pages with page templateQuery:

SELECT COUNT(DocumentID) FROM View_CMS_Tree_Joined WHERE DocumentPageTemplateID IS NOT NULL

Is stored procedure: noFormatting string: Pages with template: {0}

Click .Save & ClosePlace the cursor in the layout editor under the graph.Select the new value from the list in the section.ValuesClick .Insert

The system adds a string like into %%control:ReportValue?PagesByPageTemplate.NumberOfPagesWithPageTemplate%%the text area.

Click .Save

 If you switch to the tab, you can see the text of the value.View

Defining report parameters

Switch to the tab.ParametersClick and enter the following values:New field

Field name: UserIDData type: Integer numberDefault value: 53Field caption: Created by userForm control: User selector

Click .Save

Now you need to add the parameter to your queries. For the purposes of this example, modify only the table query.

Switch to the tab.GeneralSelect in the list.Pages by page template TableClick next to the button and select .... New EditModify the table SQL query like this:

Page 280: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

4.

5.

SELECT PageTemplateDisplayName AS [Template Name], DocumentNamePath AS [Page] FROM View_CMS_Tree_Joined LEFT JOIN CMS_PageTemplate ON CMS_PageTemplate.PageTemplateID =View_CMS_Tree_Joined.DocumentPageTemplateID WHERE PageTemplateDisplayName IS NOT NULL AND DocumentCreatedByUserID =@UserID ORDER BY PageTemplateDisplayName

Click .Save & Close

Now switch to the tab. You can see that the report has a filter:View

The table now only displays template names of pages that were created by the user specified in the filter. 

Reporting securityYou can configure access to reporting features in the application. Choose the permission matrix for -> andPermissions Module Reportingassign the available to the appropriate user roles.permissions

This adds the parameter to the WHERE condition of the query. All parameters that you define can be used in the queryusing the @<ParameterFieldName> expression.

Page 281: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

 

Permission Description

Read Allows users to view existing reports.

Save reports Allows users to save reports into the report archive.

Modify Allows users to create, modify and delete reports. This also grantspermission to subscribe to reports.

Destroy Allows users to delete the version history of reporting objects.

Page 282: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2. 3. 4.

1. 2. 3. 4.

5. 6. 7.

1. 2. 3.

Edit SQL queries Allows editing of the queries used to retrieve data for reportingcomponents (graphs, tables and values). This permission is neededto create new reports, but it can be a security risk, since it allowsusers to run queries against the website's database.

Subscribe Allows users to subscribe to reports and their components.Subscription also needs to be allowed for individual reports throughtheir properties. Unauthenticated (public) users cannot subscribe toreports.

Set connection string Allows users to change the connection string property of reportsand their components. The report uses the specified connectionstring to access the database when loading data.

Making reports available on the live site

Open the application.ReportingSelect the report in the tree and switch to the tab.GeneralEnable the property.Allow public users to see this reportClick .Save

The system now allows you to display the given report on the live site to non-authenticated (public) users. If the property is disabled, thereport and all of its components (graphs, tables or values) are always hidden from public users

Specifying connection strings for reports

You can restrict the database-level permissions of the SQL queries used for reporting by registering custom connection strings and assigningthem to reports.

Prepare a user account for your Kentico database with the required security configuration.Edit your application's file.web.configAdd a new connection string into the section.<configuration><connectionStrings>Enter authentication information (the and ) for the appropriate database user account.user id password

<add name="CMSReadOnlyConnectionString" connectionString="Persist SecurityInfo=False;database=DBName;server=ServerName;userid=DBUser;password=password;Current Language=English;Connection Timeout=240;"/>

Open the application.SettingsSelect the category.Security & MembershipChoose the (in the section).Default report connection string Reporting

The system assigns the specified connection string to newly created reports. By default, all existing reports also inherit the connection stringvalue from this setting.

Assigning a connection string to a specific report

Open the application.ReportingEdit any reports for which you wish to set a non-default connection string.On the tab, uncheck the box below the property and select a different option. You can alsoGeneral Inherit Connection stringoverride the connection string value for individual reporting components (graphs, tables and values).

The system now uses the assigned connection string when executing the queries of reports. This limits the functionality of the queriesaccording to the database permissions of the user account specified in the connection string. Only users who have the Set connection

permission for the module are allowed to change the connection strings of individual reports.string Reporting 

Configuring Windows Communication FoundationThis page describes the installation and configuration process of . You have to configureWindows Communication Foundation (WCF)WCF to use the following features:

Connection string names

The setting loads the list of connection strings from the web.config and displays their attribute values. The name (default)option represents the added by the application's initial database installation.CMSConnectionString

Page 283: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

1. 2.

1.

Advanced workflow designerMarketing automation process designerChat applicationREST service

WCF overview

WCF is a component of the .NET Framework that provides a programming model for building service-oriented multi-platform applications thatcommunicate across the web. For more information about the technology, visit .http://msdn.microsoft.com/en-us/netframework/aa663324

Installing WCF

WCF is automatically installed with .NET 3.0 and any higher version. However, you still need to install the WCF HTTP Activation featureyourself.

Go to in Windows and click in the left menu.Control Panel -> Programs and Features Turn Windows features on or off

Windows 7 / Windows Server 2008

Under the node, select the check box.Microsoft .NET Framework 3.5 Windows Communication Foundation HTTP Activation

Click to start the installation.OK

Windows 8 / Windows Server 2012

Expand the node..NET Framework 4.5 Advanced ServicesMake sure that the feature is installed.WCF Services -> HTTP Activation

The system installs WCF on your computer.

Configuring WCF services to use SSL

WCF services in Kentico applications are defined as service endpoints. By default, the service endpoints point to HTTP bindings. To use theservices with SSL enabled, you must point the service endpoints to secure HTTPS bindings. Service endpoints and bindings are defined inlocal, application-specific, web.config files. You configure each service separately.

After installing WCF on a machine that already had ASP.NET installed, you may need to .re-register ASP.NET into IIS

Page 284: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1.

2.

3.

1. 2.

3. 4.

5.

Locate the application-specific web.config file according to the following table:

Application Web.config location

Chat /CMSModules/Chat

Marketing automation /CMSModules/Automation

Workflow /CMSModules/Workflows

Open the web.config file and uncomment the secure endpoint code. The endpoint is defined in the configuration/system.serviceMod section.el/services

 <!--<endpoint name="Secure" address=""behaviorConfiguration="WorkflowDesignerEndpointBehavior"binding="webHttpBinding" bindingConfiguration="WorkflowDesignerSecureBinding"contract="CMS.WebServices.IWorkflowDesignerService" />-->

(Optional) If you don't want the service to use the non-secure HTTP, comment out (or delete) the non-secure endpoint code.

<endpoint name="Public" address=""behaviorConfiguration="AutomationDesignerEndpointBehavior"binding="webHttpBinding" contract="CMS.WebServices.IWorkflowDesignerService"/>

The system now communicates with the services defined in the section using the specified endpoints.services 

Configuring the administration interface URLUsers access the Kentico administration interface via the URL path. You can change the URL path to a different string if, for example,/adminyou want to prevent random visitors viewing the logon page.

Open the web.config file in the root folder of your project.Add the following key into the section:appSettings

<add key="CMSAdministrationPath" value="NewAdministrationPath"/>

In the root folder of your project, create a folder with the same name as the URL path that you chose.Download the attached archive and place the archive's contents inside the folder.

The code in these files redirects requests made to your new URL path to the page, which~/Admin/CMSAdministration.aspxhandles administration interface requests.

Build the solution.

The administration interface is now accessible via . The original path returns error 404 –<your_website_url>/NewAdministrationPath /adminpage not found. Regardless of the current URL path, you can access the administration interface by requesting the ~/Admin/CMSAdministrati

page.on.aspx 

Configuring the code editorThe interface of Kentico contains areas where users can enter code that defines the appearance or behavior of websites. The code fields usean editor that provides syntax highlighting and other features to help website developers write and maintain sections of code.

Highlighting ensures that text elements are displayed in different colors depending on the syntax of the given language. Syntax highlighting

Example - commented HTTPS (secure) endpoint for Workflow

Example - HTTP (non-secure) endpoint for Workflow

Backward compatibility

Prior to version 8, Kentico used and paths to access the administration interface. Do not change the/cmsdesk /cmssitemanagerprimary path back to or ./cmsdesk /cmssitemanager

Page 285: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

1. 2.

improves the readability of code and makes it easier to spot and avoid mistakes. All languages commonly used for web development aresupported, including HTML, ASPX markup, CSS, JavaScript, SQL, XML and C#. Each language has its own set of highlighting rules for codeformatting.

In addition to syntax highlighting, the editor also provides other types of functionality:

Show/hide line numbers - enables or disables the panel that displays line numbers.Toggle fit-to-window mode - toggles the editor between its normal size and an expanded editor covering the entire window (frame).Show hide/bookmarks - enables or disables the bookmark panel on the side of the editor. Only available for CSS code by default.Undo (CTRL+Z) - removes the last change made to the code in the editor, restoring it to its previous state. The editor stores thehistory of changes, so you can use the Undo action multiple times.Redo (CTRL+Y) - reverses one previously made action.UndoSearch - opens a dialog that allows users to search the code in the editor for a word or phrase.Replace - opens a dialog that allows users to find a word or phrase and replace it with the entered text.Edit source - opens a resizable dialog where the code can be edited without syntax highlighting or any other advanced functionality.Indent all - sets the indentation of all code in the editor according to the conventions of the given language.Insert macro - allows you to add in to the code.Kentico macro expressions

The panel on the right is an alphabetical list of bookmarks that allows users to jump to marked sections in the code. By default, thebookmarks panel is only displayed when editing . You can insert bookmarks using code blocks (regions) following the syntaxCSS stylesheetsof the currently edited language, for example for CSS./* #<bookmark name># */

  

Customizing the syntax highlighting

You can modify how the code editor applies colors and other styles to various syntax tokens of individual languages:

Open the folder in your web project ~/CMSAdminControls/CodeMirror/themeEdit the stylesheet.cms.css

Disabling the advanced code editor globally

You can adjust the behavior of all code editors in the administration interface by adding the following keys into the /configuration/appSettingssection of your project's web.config file:

Web.config key Description Sample value

Page 286: Kentico 9 · Kentico. Adjust your URLs so that they do not have extensions. Website search The system provides built-in, index-based search functionality. En able search indexing,

CMSEnableSyntaxHighlighting Globally enables or disables the code editorand syntax highlighting support for all codefields in the user interface. You can disablethe editor if it is causing performance issuesor other problems.

The default value is true.

<addkey="CMSEnableSyntaxHighlighting"value="false" />

CMSEnableSyntaxHighlighting.<Language> Allows you to disable the code editor andsyntax highlighting support for fields thatdisplay code in a specific language. Replace

in the key name with the name<Language>of the language that you wish to disable.The following language options areavailable:

TextHTMLCSSJavaScriptXMLCSharpSQLHTMLMixedASPNETCMSSharp

All languages are enabled by default.

<addkey="CMSEnableSyntaxHighlighting.CSS"value="false" />