diff --git a/app.py b/app.py index 4688a2f..1cd12a2 100644 --- a/app.py +++ b/app.py @@ -738,6 +738,11 @@ def api_knowledge(): """获取知识列表""" knowledge = load_data(KNOWLEDGE_FILE) + # 过滤隐藏项(前台默认隐藏) + hide_hidden = request.args.get('all', '0') == '0' + if hide_hidden: + knowledge = [k for k in knowledge if k.get('visible', True)] + keyword = request.args.get('q', '').strip().lower() if keyword: knowledge = [k for k in knowledge if keyword in k.get('title', '').lower() or keyword in k.get('content', '').lower()] @@ -767,6 +772,7 @@ def api_create_knowledge(): data['id'] = uuid.uuid4().hex[:12] data['created_at'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S') + data['visible'] = data.get('visible', True) # 默认显示 if 'order' not in data: data['order'] = len(knowledge) @@ -800,6 +806,19 @@ def api_delete_knowledge(knowledge_id): return jsonify({'success': True}) +@app.route('/api/knowledge//visible', methods=['POST']) +def api_toggle_knowledge_visible(knowledge_id): + """切换知识显示状态""" + knowledge = load_data(KNOWLEDGE_FILE) + item = next((k for k in knowledge if k['id'] == knowledge_id), None) + if not item: + return jsonify({'error': 'Knowledge not found'}), 404 + + item['visible'] = not item.get('visible', True) + save_data(KNOWLEDGE_FILE, knowledge) + + return jsonify({'success': True, 'visible': item['visible']}) + # ============ 动态分类数据API ============ @app.route('/api/items/') diff --git a/data/config.json b/data/config.json new file mode 100644 index 0000000..4831da4 --- /dev/null +++ b/data/config.json @@ -0,0 +1,10 @@ +{ + "site_name": "ParamHub", + "site_subtitle": "参数百科", + "footer_text": "ParamHub - 模型与硬件参数速查平台", + "icp_number": "", + "copyright_year": "2026", + "contact_email": "wlq@tphai.com", + "github_url": "", + "updated_at": "2026-04-11 02:28:39" +} \ No newline at end of file diff --git a/templates/admin.html b/templates/admin.html index e15dfd1..c83fae7 100644 --- a/templates/admin.html +++ b/templates/admin.html @@ -235,10 +235,11 @@ 分类 简介 排序 + 显示 操作 - 加载中... + 加载中... @@ -702,20 +703,25 @@ GPT-4是OpenAI发布的大语言模型,参数量约1.8万亿,支持128K上 categories = await catRes.json(); document.getElementById('category-filters').innerHTML = categories.map(c => ``).join(''); - let url = '/api/knowledge'; - if (currentFilter) url += `?category=${currentFilter}`; + let url = '/api/knowledge?all=1'; + if (currentFilter) url += `&category=${currentFilter}`; const res = await fetch(url); const knowledge = await res.json(); - if (knowledge.length === 0) { document.getElementById('admin-knowledge-table').innerHTML = '暂无数据'; return; } + if (knowledge.length === 0) { document.getElementById('admin-knowledge-table').innerHTML = '暂无数据'; return; } document.getElementById('admin-knowledge-table').innerHTML = knowledge.map(k => { const cat = categories.find(c => c.id === k.category); - return ` + return ` ${k.title} ${cat ? cat.name : '-'} ${k.content || '-'} ${k.order || 0} + + + @@ -1027,6 +1033,7 @@ GPT-4是OpenAI发布的大语言模型,参数量约1.8万亿,支持128K上 else if (type === 'model') endpoint = `/api/models/${id}/visible`; else if (type === 'gpu') endpoint = `/api/gpus/${id}/visible`; else if (type === 'cpu') endpoint = `/api/cpus/${id}/visible`; + else if (type === 'knowledge') endpoint = `/api/knowledge/${id}/visible`; else if (type === 'dynamic') endpoint = `/api/items/${dynamicCategoryId}/${id}/visible`; try { @@ -1035,7 +1042,7 @@ GPT-4是OpenAI发布的大语言模型,参数量约1.8万亿,支持128K上 // 刷新列表 if (type === 'dynamic') showDynamicCategory(dynamicCategoryId); else { - const loaders = {category: loadAdminCategories, model: loadAdminModels, gpu: loadAdminGpus, cpu: loadAdminCpus}; + const loaders = {category: loadAdminCategories, model: loadAdminModels, gpu: loadAdminGpus, cpu: loadAdminCpus, knowledge: loadAdminKnowledge}; loaders[type](); } } catch (e) {