Browse Source

CmsKit - Slugify Implementation

pull/7226/head
enisn 6 years ago
parent
commit
fca418fb3f
  1. 2
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.csproj
  2. 22
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/Extensions/UrlSlugExtensions.cs

2
modules/cms-kit/src/Volo.CmsKit.Domain/Volo.CmsKit.Domain.csproj

@ -9,7 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Unidecode.NET" Version="2.1.0" /> <PackageReference Include="Slugify.Core" Version="3.0.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

22
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/Extensions/UrlSlugExtensions.cs

@ -1,4 +1,5 @@
using System.Text.RegularExpressions; using Slugify;
using System.Text.RegularExpressions;
using Unidecode.NET; using Unidecode.NET;
namespace Volo.CmsKit.Blogs.Extensions namespace Volo.CmsKit.Blogs.Extensions
@ -7,24 +8,9 @@ namespace Volo.CmsKit.Blogs.Extensions
{ {
public static string NormalizeAsUrlSlug(this string value) public static string NormalizeAsUrlSlug(this string value)
{ {
value = value.ToLowerInvariant(); var slugHelper = new SlugHelper();
// Unidecode for non-latin characters return slugHelper.GenerateSlug(value);
value = value.Unidecode();
// Replace spaces
value = Regex.Replace(value, @"\s", "-", RegexOptions.Compiled);
// Remove invalid chars
value = Regex.Replace(value, @"[^a-z0-9\s-_]", "", RegexOptions.Compiled);
// Trim dashes & dots
value = value.Trim('-', '_', '.');
// Replace double occurences of - or _
value = Regex.Replace(value, @"([-_]){2,}", "$1", RegexOptions.Compiled);
return value;
} }
} }
} }

Loading…
Cancel
Save