feat(journalism): 录入8篇深度架构与技术洞察长文,全面升级文章资讯列表与详情页为现代中式浅色专业风并联动首页精选板块

这个提交包含在:
wikiboss
2026-10-09 09:26:32 +08:00
父节点 12793dabd6
当前提交 619bf30315
共有 21 个文件被更改,包括 2627 次插入 和 267 次删除

查看文件

@@ -45,6 +45,7 @@
<h4 class="nhc-footer-col-title">案例与支持</h4>
<ul class="nhc-footer-links">
<li><a href="{:addon_url('official/web.official_case_show/list',[':pid'=>14,':sid'=>14])}" class="nhc-footer-link">标杆案例</a></li>
<li><a href="{:addon_url('official/web.official_journalism/list',[':pid'=>6,':sid'=>6])}" class="nhc-footer-link">技术洞察</a></li>
<li><a href="{:addon_url('official/web.official_home/single',[':pid'=>1,':sid'=>1])}" class="nhc-footer-link">关于我们</a></li>
<li><a href="{:addon_url('official/web.official_online_message/list',[':pid'=>18,':sid'=>18])}" class="nhc-footer-link">需求预约</a></li>
<li><a href="{:addon_url('official/web.official_home/index')}#process" class="nhc-footer-link">交付流程</a></li>

查看文件

@@ -445,7 +445,7 @@
</li>
<li class="nhc-product-feat-item">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg>
<span>弹性容器集群与自动故障转移,99.99% 高可用</span>
<span>弹性容器集群与自动故障转移,保障企业级高可用</span>
</li>
<li class="nhc-product-feat-item">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg>
@@ -501,16 +501,16 @@
</div>
<div class="nhc-case-metrics-bar">
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">65%</div>
<div class="nhc-case-metric-sub">订单处理效率提升</div>
<div class="nhc-case-metric-num">自动化分单</div>
<div class="nhc-case-metric-sub">多渠道订单校验拆单</div>
</div>
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">0.02%</div>
<div class="nhc-case-metric-sub">人工错单率降至</div>
<div class="nhc-case-metric-num">阶梯账期</div>
<div class="nhc-case-metric-sub">信用额度与授信管控</div>
</div>
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">10W+</div>
<div class="nhc-case-metric-sub">日峰值订单处理</div>
<div class="nhc-case-metric-num">高并发承载</div>
<div class="nhc-case-metric-sub">微服务弹性横向扩容</div>
</div>
</div>
<div style="margin-top: 20px; display: flex; justify-content: flex-end;">
@@ -543,16 +543,16 @@
</div>
<div class="nhc-case-metrics-bar">
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">70%</div>
<div class="nhc-case-metric-sub">排队结算耗时缩短</div>
<div class="nhc-case-metric-num">断网收银</div>
<div class="nhc-case-metric-sub">脱机挂单无感重发</div>
</div>
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">28%</div>
<div class="nhc-case-metric-sub">物料损耗有效降低</div>
<div class="nhc-case-metric-num">后厨联动</div>
<div class="nhc-case-metric-sub">KDS看板与物料扣减</div>
</div>
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">300+</div>
<div class="nhc-case-metric-sub">全国门店稳定部署</div>
<div class="nhc-case-metric-num">多端适配</div>
<div class="nhc-case-metric-sub">收银机/打印机/扫码枪</div>
</div>
</div>
<div style="margin-top: 20px; display: flex; justify-content: flex-end;">
@@ -582,16 +582,16 @@
</div>
<div class="nhc-case-metrics-bar">
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">42%</div>
<div class="nhc-case-metric-sub">综合库存周转率提升</div>
<div class="nhc-case-metric-num">动态BOM</div>
<div class="nhc-case-metric-sub">多层装配与缺料预警</div>
</div>
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">55%</div>
<div class="nhc-case-metric-sub">呆滞积压料降低</div>
<div class="nhc-case-metric-num">批次追溯</div>
<div class="nhc-case-metric-sub">一物一码生命周期</div>
</div>
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">35%</div>
<div class="nhc-case-metric-sub">采购采购周期缩短</div>
<div class="nhc-case-metric-num">协同门户</div>
<div class="nhc-case-metric-sub">供应商在线协同送货</div>
</div>
</div>
<div style="margin-top: 20px; display: flex; justify-content: flex-end;">
@@ -621,16 +621,16 @@
</div>
<div class="nhc-case-metrics-bar">
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">&lt;1.5s</div>
<div class="nhc-case-metric-sub">复杂问答检索耗时</div>
<div class="nhc-case-metric-num">纯内网部署</div>
<div class="nhc-case-metric-sub">物理隔离不外泄</div>
</div>
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">85%</div>
<div class="nhc-case-metric-sub">初审人工耗时缩减</div>
<div class="nhc-case-metric-num">法规溯源</div>
<div class="nhc-case-metric-sub">标注原文出处</div>
</div>
<div class="nhc-case-metric-box">
<div class="nhc-case-metric-num">94.6%</div>
<div class="nhc-case-metric-sub">业务采纳准确率</div>
<div class="nhc-case-metric-num">人机协同</div>
<div class="nhc-case-metric-sub">初审辅助专家终审</div>
</div>
</div>
<div style="margin-top: 20px; display: flex; justify-content: flex-end;">
@@ -759,7 +759,7 @@
<div class="nhc-testimonial-card">
<div class="nhc-quote-icon">“</div>
<p class="nhc-testimonial-text">
收银与门店进销存系统在 300 多家连锁门店上线后,收银员上手迅速,几乎没有出现过死机或掉单情况。即使遇到网络故障,离线记账功能也能平稳过度,让我们非常安心。
收银与门店进销存系统在多区域连锁门店上线后,收银员上手迅速,几乎没有出现过死机或掉单情况。即使遇到网络故障,离线记账功能也能平稳过度,让我们非常安心。
</p>
<div class="nhc-testimonial-author">
<div class="nhc-author-avatar">李</div>
@@ -819,6 +819,121 @@
</section>
<!-- 客户评价与合作伙伴 结束 -->
<!-- 6.5 技术洞察与研发动态 (Insights & Engineering Section) 开始 -->
<section id="insights" class="nhc-section nhc-insights-section" style="background: var(--bg-secondary); border-top: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color); padding: 80px 0;">
<div class="nhc-container">
<!-- 章节标题栏 -->
<div style="display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-bottom: 40px;">
<div>
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 10px;">
<span class="nhc-seal">技术洞察</span>
<span style="font-size: 13px; color: var(--primary); font-weight: 600; letter-spacing: 1px;">ENGINEERING INSIGHTS</span>
</div>
<h2 style="font-family: var(--font-serif); font-size: 28px; font-weight: 700; color: var(--text-primary); margin: 0 0 8px 0;">
架构实践与研发动态
</h2>
<p style="font-size: 14px; color: var(--text-secondary); margin: 0; max-width: 640px; line-height: 1.6;">
坚持测试驱动开发(TDD)与白盒源码交付。持续沉淀复杂中台重构、私域大模型 RAG 落地与高可用容灾实战思考。
</p>
</div>
<a href="{:addon_url('official/web.official_journalism/list',[':pid'=>6,':sid'=>6])}" class="nhc-btn nhc-btn-outline nhc-btn-sm" style="display: inline-flex; align-items: center; gap: 6px;">
<span>浏览全部技术动态</span>
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
</a>
</div>
<!-- 文章四列/两列响应式卡片网格 -->
<div class="nhc-article-grid">
{if !empty($information['data']) && count($information['data']) > 0}
{foreach $information['data'] as $idx => $art}
{if $idx < 4}
<article class="nhc-article-card">
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>$art['official_category_id'],':id'=>$art['id']])}" class="nhc-article-card-thumb">
{if !empty($art['image'])}
<img src="{$art['image']}" alt="{$art['title']}" loading="lazy">
{else/}
<div style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: #F1F5F9; color: #94A3B8; font-size: 14px;">纳海川技术洞察</div>
{/if}
</a>
<div class="nhc-article-card-body">
<div class="nhc-article-meta">
<span class="nhc-article-category-badge">{if $art['official_category_id'] == 7}公司动态{else/}行业与技术洞察{/if}</span>
<span>{:date('Y-m-d', $art['createtime'])}</span>
<span>·</span>
<span>纳海川研发</span>
</div>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>$art['official_category_id'],':id'=>$art['id']])}">
<h3 class="nhc-article-card-title">{$art['title']}</h3>
</a>
<p class="nhc-article-card-desc">
{$art['subheading']}
</p>
<div class="nhc-article-card-footer">
<span>阅读耗时约 4 分钟</span>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>$art['official_category_id'],':id'=>$art['id']])}" class="nhc-article-read-btn">
<span>阅读全文</span>
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
</a>
</div>
</div>
</article>
{/if}
{/foreach}
{else/}
<!-- 静态默认标杆文章卡片 -->
<article class="nhc-article-card">
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>8,':id'=>201])}" class="nhc-article-card-thumb">
<img src="/assets/addons/official/images/articles/article_microservice.svg" alt="高并发商城中台架构设计" loading="lazy">
</a>
<div class="nhc-article-card-body">
<div class="nhc-article-meta">
<span class="nhc-article-category-badge">技术洞察</span>
<span>纳海川技术委员会</span>
</div>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>8,':id'=>201])}">
<h3 class="nhc-article-card-title">高并发商城中台架构设计:从单体拆分到微服务与分布式事务实践</h3>
</a>
<p class="nhc-article-card-desc">
系统解构纳海川在千万级商品与高并发秒杀场景下的微服务架构演进,详解分布式锁、RocketMQ可靠消息一致性及多租户分库分表工程实践。
</p>
<div class="nhc-article-card-footer">
<span>阅读耗时约 5 分钟</span>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>8,':id'=>201])}" class="nhc-article-read-btn">
<span>阅读全文</span>
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
</a>
</div>
</div>
</article>
<article class="nhc-article-card">
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>8,':id'=>202])}" class="nhc-article-card-thumb">
<img src="/assets/addons/official/images/articles/article_ai_agent.svg" alt="企业私域 AI 智能体落地指南" loading="lazy">
</a>
<div class="nhc-article-card-body">
<div class="nhc-article-meta">
<span class="nhc-article-category-badge">技术洞察</span>
<span>纳海川技术委员会</span>
</div>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>8,':id'=>202])}">
<h3 class="nhc-article-card-title">企业私域 AI 智能体落地指南:基于 RAG 的本地化知识库与安全隔离工程</h3>
</a>
<p class="nhc-article-card-desc">
围绕政企内网物理隔离与核心数据安全底线,阐述纳海川私域智能体开发范式:大模型本地量化部署、向量多路召回与知识溯源防幻觉机制。
</p>
<div class="nhc-article-card-footer">
<span>阅读耗时约 4 分钟</span>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>6,':sid'=>8,':id'=>202])}" class="nhc-article-read-btn">
<span>阅读全文</span>
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
</a>
</div>
</div>
</article>
{/if}
</div>
</div>
</section>
<!-- 技术洞察与研发动态 结束 -->
<!-- 7. 底部行动号召 (CTA Section) 开始 -->
<section id="contact" class="nhc-cta">

查看文件

@@ -1,61 +1,121 @@
{extend name="web/official_common/pc/base" /}
{block name="content"}
<!--主体内容 开始-->
<div class="download">
<!--右侧区域 开始-->
<div id="right">
<div class="right_title"></div>
<div class="right_body">
<div class="InfoTitle"><h1>{$data['title']}</h1></div>
<div class="info_from_wrap">
{if $data['source']}
<b>{:__l('index','Source')}:</b>
{if $data['source_url']}
<a href="{$data['source_url']}">{$data['source']}</a>&nbsp;
{else/}
<a href="javascript:;">{$data['source']}</a>&nbsp;
{/if}
{/if}
<b>{:__l('index','Date')}:</b>{:date('Y-m-d H:i:s',$data['createtime'])}&nbsp;
<b>{:__l('index','Click')}:</b>{$data['click']}&nbsp;
<b>{:__l('index','Belong to')}:</b><a href="javascript:;">{:ze($category,'name')}</a>
</div>
<!-- 文章内容 开始-->
<div class="InfoSContent"></div>
<div class="InfoContent">
<div>
{$data['content']|htmlspecialchars_decode}
</div>
</div>
<!-- 文章内容 结束-->
<!-- 当前信息 上一条 下一条 开始-->
<div class="info_previous_next_wrap">
<div class="Previous">
<b>{:__l('index','Previous page')}:</b>
{if empty($before)}
{:__l('index','There no data')}
{else/}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$before['id']])}" title="{$before['title']}">{$before['title']}</a>
{/if}
</div>
<div class="Next">
<b>{:__l('index','Page down')}:</b>
{if empty($after)}
{:__l('index','There no data')}
{else/}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$after['id']])}" title="{$after['title']}">{$after['title']}</a>
{/if}
</div>
</div>
<!-- 当前信息 上一条 下一条 结束-->
</div>
<div class="right_bottom"></div>
</div>
<!--右侧区域 结束-->
<div class="clear"></div>
</div>
<!--主体内容 结束-->
{extend name="web/official_common/pc/base" /}
{block name="content"}
<!-- 纳海川官方网站 现代中式技术文章与资讯详情页 开始 -->
<div class="nhc-article-detail-wrap">
<div class="nhc-container" style="max-width: 980px;">
<!-- 面包屑导航 -->
<nav class="nhc-breadcrumb">
<a href="/">{:__l('index','Website homepage')}</a>
<span class="sep">&gt;</span>
<a href="{:addon_url('official/web.official_journalism/list',[':pid'=>6,':sid'=>6])}">新闻资讯</a>
<span class="sep">&gt;</span>
<a href="{:addon_url('official/web.official_journalism/list',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid')])}">{:ze($category,'name')}</a>
<span class="sep">&gt;</span>
<span style="color: var(--text-primary); font-weight: 500;">正文</span>
</nav>
<!-- 文章主体卡片 -->
<article style="background: #FFFFFF; border: 1px solid var(--border-color); border-radius: var(--radius-sm); padding: 48px; box-shadow: var(--shadow-subtle);">
<!-- 文章头部信息 -->
<header class="nhc-article-header">
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 16px;">
<span class="nhc-seal">纳海川研发</span>
<span class="nhc-article-category-badge">{:ze($category,'name')}</span>
</div>
<h1 class="nhc-article-detail-title">{$data['title']}</h1>
<div class="nhc-article-detail-meta">
{if !empty($data['source'])}
<span>
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>
<strong>出处:</strong>
{if !empty($data['source_url'])}
<a href="{$data['source_url']}" target="_blank" rel="noopener noreferrer" style="color: var(--primary);">{$data['source']}</a>
{else/}
<span>{$data['source']}</span>
{/if}
</span>
{/if}
<span>
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/></svg>
{:date('Y-m-d H:i', $data['createtime'])}
</span>
<span>
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
阅读浏览 {$data['click']} 次
</span>
<span>
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 14 14"/></svg>
审核机构:贵阳纳海川技术委员会
</span>
</div>
</header>
<!-- 文章摘要引用条 -->
{if !empty($data['subheading'])}
<div style="background: #F8FAFC; border-left: 3px solid var(--primary); padding: 16px 20px; margin-bottom: 32px; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; font-size: 14px; color: var(--text-secondary); line-height: 1.7;">
<strong>核心要点:</strong>{$data['subheading']}
</div>
{/if}
<!-- 正文区域 -->
<div class="nhc-article-body">
{$data['content']|htmlspecialchars_decode}
</div>
<!-- 文末技术团队背书与工程申明 -->
<div style="margin-top: 48px; padding: 24px; background: #F8FAFC; border: 1px solid var(--border-color); border-radius: var(--radius-sm); display: flex; align-items: flex-start; gap: 16px;">
<div style="width: 44px; height: 44px; border-radius: var(--radius-sm); background: var(--primary); color: #FFFFFF; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 18px; flex-shrink: 0;">川</div>
<div>
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 6px;">
<span style="font-family: var(--font-serif); font-size: 16px; font-weight: 700; color: var(--text-primary);">贵阳纳海川科技有限公司 · 研发委员会</span>
<span class="nhc-seal" style="font-size: 10px; padding: 1px 6px;">原创技术资产</span>
</div>
<p style="font-size: 13px; color: var(--text-secondary); line-height: 1.6; margin: 0;">
本文由纳海川资深系统架构师团队撰写并审校。纳海川坚持测试驱动开发(TDD)与完整工程源码移交,立足西南数谷、服务全国实体客户。如需系统架构评审或专有云部署咨询,欢迎联系技术委员会。
</p>
</div>
</div>
<!-- 上一篇与下一篇导航结构 (info_previous_next_wrap) -->
<div class="info_previous_next_wrap nhc-article-nav-wrap">
<div class="nhc-article-nav-grid">
<div class="Previous">
{if empty($before)}
<div class="nhc-article-nav-item" style="opacity: 0.6; cursor: not-allowed;">
<span class="nhc-article-nav-label">上一篇动态</span>
<span class="nhc-article-nav-title">{:__l('index','There no data')}</span>
</div>
{else/}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$before['id']])}" class="nhc-article-nav-item" title="{$before['title']}">
<span class="nhc-article-nav-label">&larr; 上一篇动态</span>
<span class="nhc-article-nav-title">{$before['title']}</span>
</a>
{/if}
</div>
<div class="Next">
{if empty($after)}
<div class="nhc-article-nav-item" style="opacity: 0.6; cursor: not-allowed; text-align: right;">
<span class="nhc-article-nav-label">下一篇动态</span>
<span class="nhc-article-nav-title">{:__l('index','There no data')}</span>
</div>
{else/}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$after['id']])}" class="nhc-article-nav-item" style="text-align: right;" title="{$after['title']}">
<span class="nhc-article-nav-label">下一篇动态 &rarr;</span>
<span class="nhc-article-nav-title">{$after['title']}</span>
</a>
{/if}
</div>
</div>
</div>
</article>
</div>
</div>
<!-- 现代中式技术文章与资讯详情页 结束 -->
{/block}

查看文件

@@ -1,61 +1,76 @@
{extend name="web/official_common/mobile/base" /}
{block name="content"}
<!--主体内容 开始-->
<div class="download">
<!--右侧区域 开始-->
<div id="right">
<div class="right_title"></div>
<div class="right_body">
<div class="InfoTitle"><h1>{$data['title']}</h1></div>
<div class="info_from_wrap">
{if $data['source']}
<b>{:__l('index','Source')}:</b>
{if $data['source_url']}
<a href="{$data['source_url']}">{$data['source']}</a>&nbsp;
{else/}
<a href="javascript:;">{$data['source']}</a>&nbsp;
{/if}
{/if}
<b>{:__l('index','Date')}:</b>{:date('Y-m-d H:i:s',$data['createtime'])}&nbsp;
<b>{:__l('index','Click')}:</b>{$data['click']}&nbsp;
<b>{:__l('index','Belong to')}:</b><a href="/official_video/list{:get_pid_sid()}" target="_blank">{:ze($category,'name')}</a>
</div>
<!-- 文章内容 开始-->
<div class="InfoSContent"></div>
<div class="InfoContent">
<div>
{$data['content']|htmlspecialchars_decode}
</div>
</div>
<!-- 文章内容 结束-->
<!-- 当前信息 上一条 下一条 开始-->
<div class="info_previous_next_wrap">
<div class="Previous">
<b>{:__l('index','Previous page')}:</b>
{if empty($before)}
{:__l('index','There no data')}
{else/}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$before['id']])}" title="{$before['title']}">{$before['title']}</a>
{/if}
</div>
<div class="Next">
<b>{:__l('index','Page down')}:</b>
{if empty($after)}
{:__l('index','There no data')}
{else/}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$after['id']])}" title="{$after['title']}">{$after['title']}</a>
{/if}
</div>
</div>
<!-- 当前信息 上一条 下一条 结束-->
</div>
<div class="right_bottom"></div>
</div>
<!--右侧区域 结束-->
<div class="clear"></div>
</div>
<!--主体内容 结束-->
{extend name="web/official_common/mobile/base" /}
{block name="content"}
<!-- 纳海川移动端文章详情页 开始 -->
<div class="nhc-mobile-wrap" style="padding: 16px; background: var(--bg-primary);">
<!-- 移动端面包屑导航 -->
<div style="font-size: 12px; color: var(--text-muted); margin-bottom: 16px; display: flex; align-items: center; gap: 6px;">
<a href="/" style="color: var(--text-secondary);">首页</a>
<span>&gt;</span>
<a href="{:addon_url('official/web.official_journalism/list',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid')])}" style="color: var(--primary);">{:ze($category,'name')}</a>
<span>&gt;</span>
<span>正文</span>
</div>
<!-- 文章卡片主体 -->
<article style="background: #FFFFFF; border: 1px solid var(--border-color); border-radius: var(--radius-sm); padding: 20px; box-shadow: var(--shadow-subtle);">
<header style="border-bottom: 1px solid var(--border-color); padding-bottom: 16px; margin-bottom: 20px;">
<div style="display: flex; align-items: center; gap: 6px; margin-bottom: 10px;">
<span class="nhc-seal" style="font-size: 10px; padding: 1px 5px;">纳海川研发</span>
<span style="font-size: 11px; padding: 1px 6px; background: var(--primary-light); color: var(--primary); border-radius: 2px;">{:ze($category,'name')}</span>
</div>
<h1 style="font-family: var(--font-serif); font-size: 20px; font-weight: 700; color: var(--text-primary); line-height: 1.4; margin: 0 0 12px 0;">
{$data['title']}
</h1>
<div style="display: flex; flex-wrap: wrap; gap: 12px; font-size: 12px; color: var(--text-muted);">
<span>{:date('Y-m-d H:i', $data['createtime'])}</span>
<span>浏览 {$data['click']} 次</span>
{if !empty($data['source'])}
<span>来源: {$data['source']}</span>
{/if}
</div>
</header>
{if !empty($data['subheading'])}
<div style="background: #F8FAFC; border-left: 3px solid var(--primary); padding: 12px 14px; font-size: 13px; color: var(--text-secondary); line-height: 1.6; margin-bottom: 20px; border-radius: 0 var(--radius-sm) var(--radius-sm) 0;">
{$data['subheading']}
</div>
{/if}
<!-- 正文排版 -->
<div class="nhc-article-body" style="font-size: 15px; line-height: 1.75;">
{$data['content']|htmlspecialchars_decode}
</div>
<!-- 移动端文末背书 -->
<div style="margin-top: 32px; padding: 16px; background: #F8FAFC; border: 1px solid var(--border-color); border-radius: var(--radius-sm); font-size: 12px; color: var(--text-secondary); line-height: 1.6;">
<strong>纳海川工程受控说明:</strong>贵阳纳海川科技有限公司坚持测试驱动开发(TDD)与白盒源码交付,支持企业专有云与纯内网物理隔离部署。
</div>
<!-- 移动端上一篇/下一篇自然导流 -->
<div class="info_previous_next_wrap" style="margin-top: 24px; padding-top: 16px; border-top: 1px dashed var(--border-color); display: flex; flex-direction: column; gap: 10px;">
<div class="Previous" style="font-size: 13px;">
<span style="color: var(--text-muted);">上一篇:</span>
{if empty($before)}
<span style="color: #94A3B8;">{:__l('index','There no data')}</span>
{else/}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$before['id']])}" style="color: var(--primary);">{$before['title']}</a>
{/if}
</div>
<div class="Next" style="font-size: 13px;">
<span style="color: var(--text-muted);">下一篇:</span>
{if empty($after)}
<span style="color: #94A3B8;">{:__l('index','There no data')}</span>
{else/}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$after['id']])}" style="color: var(--primary);">{$after['title']}</a>
{/if}
</div>
</div>
</article>
</div>
<!-- 纳海川移动端文章详情页 结束 -->
{/block}

查看文件

@@ -1,69 +1,102 @@
{extend name="web/official_common/pc/base" /}
{block name="content"}
<!--主体内容 开始-->
<div class="article">
<!--右侧区域 开始-->
<div id="right">
<div class="right_title">
<!--当前位置 开始-->
<div id="location">
<b>{:__l('index','Current position')}:</b>
<a href="/" target="_self">{:__l('index','Website homepage')}</a> &nbsp;&gt;&gt;&nbsp;
<a href="javascript:;">{:ze($res,'name')}</a> &nbsp;&gt;&gt;&nbsp;
{if !empty($son_data)}
<a href="javascript:;">{:ze($son_data,'name')}</a>
{/if}
</div>
<!--当前位置 结束-->
<h2>
<img src="__ADDON__/images/titleleftbg.png" align="absmiddle">{:ze($res,'name')}
<img src="__ADDON__/images/titlerightbg.png" align="absmiddle">
</h2>
</div>
<div id="subchannel_main">
<div id="subchannel">
<ul class="subchannellist">
{foreach $res['son'] as $item}
<li class="depth1" {if $item['is_choose']} id="current" {/if}>
<a href="{:get_cate_url($item)}">{:ze($item,'name')}</a>
</li>
{/foreach}
</ul>
</div>
</div>
<div class="right_body minwidth">
<ul class="thumblist">
<!--循环开始-->
{foreach $data as $index => $item}
<li>
<a class="InfoPicture" href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$item['id']])}" target="_blank">
<img src="{$item['image']}" title="{$item['title']}" alt="{$item['title']}">
</a>
<div class="info_wrap">
<a class="InfoTitle" href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$item['id']])}" target="_blank">{$item['title']}</a>
<p>{$item['subheading']}</p>
<span class="InfoTime">{:date('Y-m-d',$item['createtime'])}</span>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$item['id']])}" class="more">MORE &gt;</a>
</div>
</li>
{/foreach}
<!--循环结束-->
</ul>
<div class="page_custom">
<div class="page_son">
{$data->render(['pid'=>(int)input('param.pid'),'sid'=>(int)input('param.sid')])}
</div>
</div>
</div>
<div class="right_bottom"></div>
</div>
<!--右侧区域 结束-->
<div class="clear"></div>
</div>
<!--主体内容 结束-->
{extend name="web/official_common/pc/base" /}
{block name="content"}
<!-- 纳海川官方网站 现代中式技术洞察与新闻资讯列表 开始 -->
<!-- 1. 顶部 Hero Banner -->
<section class="nhc-article-hero">
<div class="nhc-container">
<div class="nhc-article-hero-inner">
<div style="display: flex; align-items: center; gap: 10px; margin-bottom: 12px;">
<span class="nhc-seal">技术洞察</span>
<span style="font-size: 13px; color: var(--primary); font-weight: 600; letter-spacing: 1px;">ENGINEERING & PERSPECTIVES</span>
</div>
<h1 class="nhc-article-hero-title">
贵阳纳海川科技 · 技术洞察与研发动态
</h1>
<p class="nhc-article-hero-subtitle">
扎根西南数谷,专注企业级软件定制开发、高可用微服务中台、移动端全生态与私域 AI 智能体工程落地。深入解构系统架构设计考量,沉淀务实严谨的工程经验。
</p>
</div>
</div>
</section>
<!-- 2. 主体内容区 -->
<section style="background: var(--bg-primary); padding: 40px 0 72px 0;">
<div class="nhc-container">
<!-- 分类导航栏 -->
<div class="nhc-category-bar">
<div class="nhc-category-tags">
<a href="{:addon_url('official/web.official_journalism/list',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.pid')])}"
class="nhc-category-tag {if input('param.sid') == input('param.pid') || empty(input('param.sid'))}active{/if}">
<span>全部动态</span>
</a>
{foreach $res['son'] as $subcat}
<a href="{:get_cate_url($subcat)}"
class="nhc-category-tag {if $subcat['is_choose']}active{/if}">
<span>{:ze($subcat,'name')}</span>
</a>
{/foreach}
</div>
<div style="font-size: 13px; color: var(--text-muted);">
<span>严谨工程实录 · 持续技术沉淀</span>
</div>
</div>
<!-- 文章网格 -->
{if count($data) > 0}
<div class="nhc-article-grid">
{foreach $data as $index => $item}
<article class="nhc-article-card">
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$item['id']])}" class="nhc-article-card-thumb">
{if !empty($item['image'])}
<img src="{$item['image']}" alt="{$item['title']}" loading="lazy">
{else/}
<div style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: #F1F5F9; color: #94A3B8; font-size: 14px;">纳海川技术洞察</div>
{/if}
</a>
<div class="nhc-article-card-body">
<div class="nhc-article-meta">
<span class="nhc-article-category-badge">{if !empty($son_data)}{:ze($son_data,'name')}{else/}{:ze($res,'name')}{/if}</span>
<span>{:date('Y-m-d', $item['createtime'])}</span>
<span>·</span>
<span>纳海川研发</span>
</div>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$item['id']])}">
<h2 class="nhc-article-card-title">{$item['title']}</h2>
</a>
<p class="nhc-article-card-desc">
{$item['subheading']}
</p>
<div class="nhc-article-card-footer">
<span>阅读耗时约 4 分钟</span>
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$item['id']])}" class="nhc-article-read-btn">
<span>阅读全文</span>
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12h14M12 5l7 7-7 7"/></svg>
</a>
</div>
</div>
</article>
{/foreach}
</div>
<!-- 现代化分页组件 -->
<div class="page_custom" style="display: flex; justify-content: center; margin-top: 40px;">
<div class="page_son">
{$data->render(['pid'=>(int)input('param.pid'),'sid'=>(int)input('param.sid')])}
</div>
</div>
{else/}
<!-- 空状态展示 -->
<div style="text-align: center; padding: 80px 20px; background: #F8FAFC; border: 1px solid var(--border-color); border-radius: var(--radius-sm);">
<div class="nhc-seal" style="margin-bottom: 12px;">纳海川</div>
<p style="color: var(--text-secondary); font-size: 15px;">暂无相关动态,技术团队持续更新中</p>
</div>
{/if}
</div>
</section>
<!-- 现代中式技术洞察与新闻资讯列表 结束 -->
{/block}

查看文件

@@ -1,62 +1,80 @@
{extend name="web/official_common/mobile/base" /}
{block name="content"}
<!--主体内容 开始-->
<div class="article">
<!--右侧区域 开始-->
<div id="right">
<div class="right_title">
<h2 class="right_title_2">
<img src="__ADDON__/images/titleleftbg.png" align="absmiddle">{:ze($res,'name')}
<img src="__ADDON__/images/titlerightbg.png" align="absmiddle">
</h2>
<!-- 纳海川移动端技术洞察与研发动态列表 开始 -->
<div class="nhc-mobile-wrap" style="padding: 16px; background: var(--bg-primary);">
<!-- 顶部移动端标题条 -->
<div style="margin-bottom: 20px; border-bottom: 1px solid var(--border-color); padding-bottom: 14px;">
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 6px;">
<span class="nhc-seal" style="font-size: 11px; padding: 1px 6px;">技术动态</span>
<span style="font-size: 12px; color: var(--primary); font-weight: 600;">纳海川研发</span>
</div>
<div id="subchannel_main">
<div id="subchannel">
<ul class="subchannellist">
{foreach $res['son'] as $item}
<li class="depth1" {if $item['is_choose']} id="current" {/if}>
<a href="{:get_cate_url($item)}" class="current_a">{:ze($item,'name')}</a>
</li>
{/foreach}
</ul>
<h1 style="font-family: var(--font-serif); font-size: 22px; font-weight: 700; color: var(--text-primary); margin: 0 0 6px 0;">
技术洞察与研发动态
</h1>
<p style="font-size: 13px; color: var(--text-secondary); margin: 0; line-height: 1.6;">
贵阳纳海川科技 · 企业级软件定制与高可用系统架构实录
</p>
</div>
<!-- 移动端分类水平滑动条 -->
<div style="display: flex; gap: 8px; overflow-x: auto; padding-bottom: 12px; margin-bottom: 20px; -webkit-overflow-scrolling: touch;">
<a href="{:addon_url('official/web.official_journalism/list',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.pid')])}"
style="white-space: nowrap; padding: 6px 14px; border-radius: var(--radius-sm); font-size: 13px; font-weight: 500; {if input('param.sid') == input('param.pid') || empty(input('param.sid'))}background: var(--primary); color: #FFFFFF;{else/}background: #F8FAFC; color: var(--text-secondary); border: 1px solid var(--border-color);{/if}">
全部动态
</a>
{foreach $res['son'] as $subcat}
<a href="{:get_cate_url($subcat)}"
style="white-space: nowrap; padding: 6px 14px; border-radius: var(--radius-sm); font-size: 13px; font-weight: 500; {if $subcat['is_choose']}background: var(--primary); color: #FFFFFF;{else/}background: #F8FAFC; color: var(--text-secondary); border: 1px solid var(--border-color);{/if}">
{:ze($subcat,'name')}
</a>
{/foreach}
</div>
<!-- 移动端文章列表卡片 -->
{if count($data) > 0}
<div style="display: flex; flex-direction: column; gap: 16px;">
{foreach $data as $index => $val}
<a href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$val['id']])}"
style="display: block; background: #FFFFFF; border: 1px solid var(--border-color); border-radius: var(--radius-sm); overflow: hidden; box-shadow: var(--shadow-subtle);">
{if !empty($val['image'])}
<div style="width: 100%; aspect-ratio: 16 / 9; overflow: hidden; background: #F8FAFC;">
<img src="{$val['image']}" alt="{$val['title']}" style="width: 100%; height: 100%; object-fit: cover;">
</div>
</div>
<div class="right_body minwidth">
<ul class="thumblist">
<!--循环开始-->
<li class="journalism_box">
{foreach $data as $index => $val}
<a class="journalism_list" href="{:addon_url('official/web.official_journalism/details',[':pid'=>(int)input('param.pid'),':sid'=>(int)input('param.sid'),':id'=>$item['id']])}">
<div class="InfoPicture" title="{$val['title']}">
<img class="InfoPicture_img" src="{$val['image']}">
<span class="InfoTime">{:date('Y-m-d H:i',$val['createtime'])}</span>
</div>
<div class="InfoWrap">
<span class="InfoTitle">{$val['title']}</span>
<p class="InfoTitleP">{$val['subheading']}</p>
</div>
</a>
{/foreach}
</li>
<!--循环结束-->
</ul>
<div class="page_custom">
<div class="page_son">
{$data->render(['pid'=>(int)input('param.pid'),'sid'=>(int)input('param.sid')])}
{/if}
<div style="padding: 16px;">
<div style="display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--text-muted); margin-bottom: 8px;">
<span style="color: var(--primary); font-weight: 600;">纳海川技术洞察</span>
<span>{:date('Y-m-d', $val['createtime'])}</span>
</div>
<h2 style="font-family: var(--font-serif); font-size: 16px; font-weight: 700; color: var(--text-primary); line-height: 1.45; margin: 0 0 8px 0;">
{$val['title']}
</h2>
<p style="font-size: 13px; color: var(--text-secondary); line-height: 1.6; margin: 0 0 12px 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;">
{$val['subheading']}
</p>
<div style="display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--primary); font-weight: 600; padding-top: 10px; border-top: 1px dashed var(--border-color);">
<span>阅读全文</span>
<span>&rarr;</span>
</div>
</div>
</div>
<div class="right_bottom"></div>
</a>
{/foreach}
</div>
<!--右侧区域 结束-->
<div class="clear"></div>
</div>
<!--主体内容 结束-->
<!-- 移动端分页 -->
<div class="page_custom" style="display: flex; justify-content: center; margin-top: 24px;">
<div class="page_son">
{$data->render(['pid'=>(int)input('param.pid'),'sid'=>(int)input('param.sid')])}
</div>
</div>
{else/}
<div style="text-align: center; padding: 48px 16px; background: #F8FAFC; border: 1px solid var(--border-color); border-radius: var(--radius-sm); color: var(--text-secondary); font-size: 14px;">
暂无相关动态,技术团队持续更新中
</div>
{/if}
</div>
<!-- 纳海川移动端技术洞察与研发动态列表 结束 -->
{/block}