/// <summary> /// Converts the given string to a web safe permalink. /// </summary> /// <param name="str">The string</param> /// <param name="type">Optional permalink type</param> /// <returns>A permalink</returns> public static string Generate(string str, PermalinkType type = PermalinkType.PAGE) { var suffix = ""; if (type == PermalinkType.MEDIA) { var segments = str.Split(new char[] { '.' }); if (segments.Length > 1) { suffix = segments[segments.Length - 1]; str = segments.Subset(0, segments.Length - 1).Implode("."); } } var perm = Regex.Replace(str.ToLower().Replace(" ", "-").Replace("å", "a").Replace("ä", "a").Replace("ö", "o"), @"[^a-z0-9-/]", "").Replace("--", "-"); if (perm.EndsWith("-")) { perm = perm.Substring(0, perm.LastIndexOf("-")); } if (perm.StartsWith("-")) { perm = perm.Substring(Math.Min(perm.IndexOf("-") + 1, perm.Length)); } return(perm + (!String.IsNullOrEmpty(suffix) ? "." + suffix : "")); }
/// <summary> /// Converts the given string to a web safe permalink. /// </summary> /// <param name="str">The string</param> /// <param name="type">Optional permalink type</param> /// <returns>A permalink</returns> public static string Generate(string str, PermalinkType type = PermalinkType.PAGE) { if (EntityHooks.Permalink.OverridePermalinkGenerate != null) { return(EntityHooks.Permalink.OverridePermalinkGenerate(str, type)); } else { var suffix = ""; if (type == PermalinkType.MEDIA) { var segments = str.Split(new char[] { '.' }); if (segments.Length > 1) { suffix = segments[segments.Length - 1]; str = segments.Subset(0, segments.Length - 1).Implode("."); } } str = str.ToLower().TransliterateRussianToLatin(); var perm = Regex.Replace(str .Replace(" ", "-") .Replace("å", "a") .Replace("ä", "a") .Replace("á", "a") .Replace("à", "a") .Replace("ö", "o") .Replace("ó", "o") .Replace("ò", "o") .Replace("é", "e") .Replace("è", "e") .Replace("í", "i") .Replace("ì", "i"), @"[^a-z0-9-/]", "").Replace("--", "-"); if (perm.EndsWith("-")) { perm = perm.Substring(0, perm.LastIndexOf("-")); } if (perm.StartsWith("-")) { perm = perm.Substring(Math.Min(perm.IndexOf("-") + 1, perm.Length)); } return(perm + (!String.IsNullOrEmpty(suffix) ? "." + suffix : "")); } }