metadata udpates
This commit is contained in:
@@ -16,6 +16,12 @@ public class MetadataOptions
|
||||
|
||||
public string Author { get; set; }
|
||||
|
||||
public string TitleFragmentsSeparator { get; set; } = " / ";
|
||||
|
||||
public string TitlePageNameToFragmentSeparator { get; set; } = " / ";
|
||||
|
||||
public bool HidePageName { get; set; }
|
||||
|
||||
//public Schema Schema { get; set; }
|
||||
|
||||
public MetadataOptions() { }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
namespace zero.Metadata;
|
||||
|
||||
@@ -18,7 +19,7 @@ public class MetadataService : IMetadataService
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
public Metadata Generate(string pageName, MetadataOptions options)
|
||||
public virtual Metadata Generate(string pageName, MetadataOptions options)
|
||||
{
|
||||
Metadata model = new()
|
||||
{
|
||||
@@ -37,7 +38,7 @@ public class MetadataService : IMetadataService
|
||||
|
||||
// title
|
||||
HashSet<string> fragments = options.TitleFragments.Where(x => !x.IsNullOrWhiteSpace()).Reverse().ToHashSet();
|
||||
model.Title = !fragments.Any() ? pageName : (String.Join(" / ", fragments.Select(fragment => Localizer.Maybe(fragment))) + " / " + pageName);
|
||||
model.Title = GenerateTitle(pageName, fragments, options);
|
||||
|
||||
// add schema
|
||||
//if (options.Schema != null)
|
||||
@@ -47,6 +48,32 @@ public class MetadataService : IMetadataService
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Generates the page title based on passed fragments
|
||||
/// </summary>
|
||||
protected virtual string GenerateTitle(string pageName, HashSet<string> fragments, MetadataOptions options)
|
||||
{
|
||||
StringBuilder sb = new();
|
||||
|
||||
if (fragments.Count != 0)
|
||||
{
|
||||
sb.Append(string.Join(options.TitleFragmentsSeparator, fragments.Select(fragment => Localizer.Maybe(fragment))));
|
||||
|
||||
if (!options.HidePageName)
|
||||
{
|
||||
sb.Append(options.TitlePageNameToFragmentSeparator);
|
||||
sb.Append(pageName);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append(pageName);
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user