Using the Sitecore Wildcard Module

Create the item you want to wildcard and name it "*". To make life easier I use the display name field to update this value to a meaningful name. If you want your URL to be in a format like {Year}/{Month}/{Day} you will need to create an item for each URL section. I generally use folders for items I don't want to resolve. Create the token items for each token value you want to replace in /sitecore/system/Modules/Wildcards/Tokens. It will automatically fill out the token value based on name for you. Create the position mapping for your wildcard values in /sitecore/system/Modules/Wildcards/Position Mappings under this you will need to create a "Mapping" item that maps a position to a token. The position field starts at ONE (yes, this tripped me up). Create the route for your wildcard in /sitecore/system/Modules/Wildcards/Routes. Now here is the fun part, your wildcard URL will resolve to a page even if you don't complete the item field, however, you will not be able to extract the token values from the URL unless you complete this. I'm pondering if it is worthwhile adjusting the module to allow you to supply a template here, along with an item to make it a bit more flexible. You also need to complete the Rules field to have "where target item has wildcards replace wildcards as defined in [your position mapping" That should get you working, but generally it's where the trouble starts, so here comes part two: Extracting your token variables . Language and extension embedding is the one thing that always gets me when I'm implementing this module. The easiest way I've found to debug it is to first output the tokenised URL, then visit it and check you can retrieve your tokens. Once you've confirmed this you can start adjusting your link provider to generate URLs without these values.   I find the following functions helpful when using the wildcard module: public static string GetTokenValue(string token, string url) { return GetTokenValue(Sitecore.Context.Item, Sitecore.Context.Site, token, url); } public static string GetTokenValue(Item item, SiteContext site, string token, string url) { var ts = WildcardManager.Provider.GetWildcardUrl(item, site); var tokens = ts.FindTokenValues(url); if (tokens.Count == 0) { return null; } return tokens[token]; } public static string GetWildcardUrl(Item item, NameValueCollection tokens) { var ts = WildcardManager.Provider.GetWildcardUrl(item, Sitecore.Context.Site); var url = ts.ReplaceTokens(tokens); return url; } public static string GetWildcardUrl(ID id, NameValueCollection tokens) { var item = Sitecore.Context.Database.GetItem(id); if (item != null) { return GetWildcardUrl(item, tokens); } return string.Empty; }