Halo 博客,登录下使隐藏瞬间可见
为了最小的改动以实现这个功能,我修改了瞬间插件输出的模版变量,添加了 momentsAll
和 tagsAll
两个变量,这个两个变量是包含私有瞬间在内。然后,在主题的 thymeleaf 模板里对登录状态进行判断,进而决定使用哪个变量。这样就无需给插件新增对登录状态进行判断的相关逻辑,这种实现等插件作者后面有时间自己实现吧。
最初其实还有个想法,就是直接将 moments
修改成包含私有瞬间在内的所有瞬间,然后主题的 thymeleaf 模板逐条的对每个子 moment
项的私有/公开权限判断进而筛选输出,但是会影响到瞬间的 rss,所以还是重新定义了一个新的 momentsAll
变量。
- 插件
holwell/plugin-moments: 适用于 Halo 2.0 的瞬间插件 (github.com) - 主题端实现
<th:block sec:authorize="isAnonymous()"> <div th:replace=" ~{::momentsWrap(${tags}, ${moments})}"></div> </th:block> <th:block sec:authorize="isAuthenticated()"> <div th:replace=" ~{::momnetsWrap(${tagsAll}, ${momentsAll})}"></div> </th:block> <th:block th:fragment="momentsWrap(_tags, _momnets)"> <section> <div th:each="tag : ${_tags}" > <a th:href="|/moments?tag=${tag.name}|">[[${tag.name}]]</a> </div> <ul> <li th:each="moment : ${_moments.items}"> <span th:if="${#strings.trim(moment.spec.visible) != 'PUBLIC'}">(私有)</span> ... ... </section> </th:block>