src/SSCMS.Core/StlParser/StlElement/StlChannels.cs
(开头部分) 8KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using SSCMS.Core.StlParser.Attributes;
using SSCMS.Core.StlParser.Enums;
using SSCMS.Core.StlParser.Mocks;
using SSCMS.Parse;
using SSCMS.Core.StlParser.Models;
using SSCMS.Core.StlParser.Utility;
using SSCMS.Enums;
using SSCMS.Models;
using SSCMS.Services;
using SSCMS.Utils;
namespace SSCMS.Core.StlParser.StlElement
{
[StlElement(Title = "栏目列表", Description = "通过 stl:channels 标签在模板中显示栏目列表")]
public class StlChannels : StlListBase
{
public const string ElementName = "stl:channels";
[StlAttribute(Title = "从所有栏目中选择")] private const string IsTotal = nameof(IsTotal);
[StlAttribute(Title = "显示所有级别的子栏目")] private const string IsAllChildren = nameof(IsAllChildren);
public static async Task<object> ParseAsync(IParseManager parseManager)
{
var listInfo = await ListInfo.GetListInfoAsync(parseManager, ParseType.Channel);
var dataSource = await GetChannelsDataSourceAsync(parseManager, listInfo);
if (parseManager.ContextInfo.IsStlEntity)
{
return ParseEntity(dataSource);
}
return await ParseAsync(parseManager, listInfo, dataSource);
}
protected static async Task<string> ParseAsync(IParseManager parseManager, ListInfo listInfo, List<KeyValuePair<int, Channel>> channels)
{
var pageInfo = parseManager.PageInfo;
if (channels == null || channels.Count == 0) return string.Empty;
var builder = new StringBuilder();
if (listInfo.Layout == ListLayout.None)
{
if (!string.IsNullOrEmpty(listInfo.HeaderTemplate))
{
builder.Append(listInfo.HeaderTemplate);
}
var isAlternative = false;
var isSeparator = false;
if (!string.IsNullOrEmpty(listInfo.AlternatingItemTemplate))
{
isAlternative = true;
}
if (!string.IsNullOrEmpty(listInfo.SeparatorTemplate))
后面还有 161 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
