- 主题切换:菜单改为 fixed 定位并弹出在父菜单右侧;FIXED_THEMES 扩为 9 主题并统一校验; 子菜单点击无响应修复(合并 IIFE 作用域使 applyTheme 对点击处理器可见);删除死代码。 - 卡片图标:新增 GET /site/icon/<domain>?letter=X 接口,首次请求由服务端拉取 favicon 并缓存到 data/icon/(运行时自动建目录,已加 .gitignore),之后直接读本地不再重复拉取; 拉取失败或内网/不可达网址自动生成「站点名称首字母」SVG 头像兜底,杜绝空白图标。 - 模型 Nav.to_dict 新增 domain/scheme/letter/color 计算字段,供卡片与图标接口复用。
61 lines
2.9 KiB
HTML
61 lines
2.9 KiB
HTML
{% extends 'public/base.html' %}
|
|
|
|
{% block title %}{{ category }} - {{ site_name }}{% endblock %}
|
|
|
|
{# 分类详情页只有一个分类,目录条也指向自己即可(避免空目录条) #}
|
|
{% block cat_nav %}
|
|
<nav class="cat-nav" aria-label="分类导航">
|
|
<div class="cat-nav-inner">
|
|
<a href="{{ url_for('public_nav.index') }}" class="active">← 返回首页</a>
|
|
<a href="#cat-detail" class="active">{{ category }}</a>
|
|
</div>
|
|
</nav>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<section class="section" id="cat-detail">
|
|
<div class="section-header">
|
|
<h2>{{ category }}</h2>
|
|
<div class="meta">共 {{ items|length }} 个</div>
|
|
</div>
|
|
|
|
{% if not items %}
|
|
<div class="empty">该分类下暂无导航。</div>
|
|
{% else %}
|
|
<div class="grid">
|
|
{% for item in items %}
|
|
<a class="card"
|
|
href="{{ item.url }}"
|
|
data-nav-id="{{ item.id }}"
|
|
{% if item.is_external %}target="_blank" rel="noopener noreferrer"{% endif %}>
|
|
<div class="icon-wrap">
|
|
<span class="nav-letter" style="background:{{ item.color }}">{{ item.letter }}</span>
|
|
{% if item.domain %}
|
|
<img class="nav-favicon" alt="" loading="lazy" referrerpolicy="no-referrer"
|
|
data-domain="{{ item.domain }}" data-letter="{{ item.letter }}"
|
|
style="display:none">
|
|
{% endif %}
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="title-row">
|
|
<div class="title" title="{{ item.title }}">{{ item.title }}</div>
|
|
{% if item.is_external %}
|
|
<span class="ext-tag" title="外部链接"><i class="layui-icon layui-icon-link"></i></span>
|
|
{% endif %}
|
|
</div>
|
|
<div class="desc">{{ item.description or '暂无描述' }}</div>
|
|
<div class="url" title="{{ item.url }}">{{ item.url }}</div>
|
|
<div class="visit-count" data-nav-visit="{{ item.visit_count or 0 }}">
|
|
{%- set vc = item.visit_count or 0 -%}
|
|
{%- if vc >= 3 -%}访问 {{ '{:,}'.format(vc) }}
|
|
{%- else -%}新
|
|
{%- endif -%}
|
|
</div>
|
|
</div>
|
|
<div class="card-arrow"><i class="layui-icon layui-icon-right"></i></div>
|
|
</a>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
</section>
|
|
{% endblock %} |