1. 基本约束

尤娜标签是基于Freemarker模板引擎开发而来,其逻辑控制遵循Freemarker的标签规则,如判断,迭代等。

1.1 标签分类

在尤娜博客系统中,取值标签分为四类,分别如下:

类别 说明 示例
全局标签 用于获取通用的全局常量,如域名,备案号,logo,邮箱等 ${blog_icp}—获取网站备案号
内容标签 用于获取栏目,文章,友链等内容信息 <@una_links> </ @una_links>获取友链数据
内置函数 用于处理模板中的数据,如时间格式化,数字格式化,生成评论区,生成分页按钮等 ${una_timeAgo()}格式化时间
权限标签 尤娜内置了能在模板中使用的权限控制标签,方便二次开发进行功能扩展 <@shiro.hasRole name=”admin”>< /@shiro.hasRole>

1.2 适用范围

尤娜标签只能用于以.html为后缀的模板文件中,因此,在制作主题时,模板必须是普通的html文件格式。

1.3 标签格式

尤娜标签有其固定的书写格式,具体如下:

  • 全局常量标签:以blog_开头,后跟取值的key,并使用“${}”(花括号)包裹,例如获取网站版权信息:

    ${blog_copyright}
    
  • 内容标签:用于获取多个内容数据,格式为:<@una_typeName key1=value1 key2=value2 … keyN=valueN>…</ @una_typeName>;例如获取ID=1的栏目的第一页文章数据:

    <@una_category_post_page categoryId=1 offset=1 size=10>
        <#if results?? && results?size gt 0>
            <#list results as item>
                <a href="${una}/${item.slug}" target="_blank">
                    ${item.title}
                </a>
            </#list>
        </#if>
    </@una_category_post_page>
    
  • 内置函数:内置函数使用以“$”打头的“{}”花括号报告,函数名以una_为前缀,其后跟函数名,例如将文章的发布时间转换为距离现在的时长:

    ${una_timeAgo(post.createTime)}------------------#将输出:xx[秒|分钟|小时|天|年]以前
    
  • 权限标签:权限标签是基于Shiro的权限标签,格式为:<@shiro.authName param1=value1…paramN=valueN></ @shiro.authName>,例如判断用户是否具有某个权限:

    <@shiro.hasPermission name="user:create">
        <button type="button" class="btn btn-success">
            新增用户
        </button>
    </@shiro.hasPermission>
    

2.注意事项

  • 模板需要与后台中的栏目和内容进行绑定后,其中的标签才能生效
  • 只有后台中的主题被激活后,主题中的模板文件才会被系统解析
  • 只有发布后的文章才会被解析
  • 单值标签解析后的返回值key默认为result,列表标签的返回值key默认为results
  • 对返回值做空值判断使用“??”(双问号)
  • 对返回值做默认值设置使用“!”(感叹号)+默认值
  • 对返回值做格式化使用“?string(pattern)”
  • 修改主题文件后,需要再次刷新主题,模板文件才会生效
  • 修改内容后,需要清理对应的缓存数据后,新内容才会被解析(后续版本中将改为自动清理)
  • 删除内容前,先清理缓存数据(后续版本将改为自动处理)