ujcms-v10.1.3/src/main/webapp/templates/1/default/channel.html

80 lines
3.6 KiB
HTML
Raw Normal View History

2026-03-11 09:48:21 +08:00
<!doctype html>
[#escape x as (x)!?html]
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>${channel.title} - ${site.title}</title>
<meta name="keywords" content="${channel.seoKeywords}">
<meta name="description" content="${channel.seoDescription}">
[#include 'inc_meta.html'/]
[#include 'inc_css.html'/]
[#include 'inc_js.html'/]
</head>
<body>
[#include 'inc_header.html'/]
<div class="bg-gray-200">
<div class="container">
<nav class="row" aria-label="breadcrumb">
<ol class="col list-inline my-2">
[#assign parent = channel.parent!channel/]
<li class="list-inline-item"><a class="btn btn-sm [#if parent.id == channel.id]btn-primary[#else]btn-link[/#if]" href="${parent.url}">全部</a></li>
[@ChannelList parentId=parent.id isNav='true'; list]
[#list list as bean]
<li class="list-inline-item"><a class="btn btn-sm [#if channel.id == bean.id]btn-primary[#else]btn-link[/#if]" href="${bean.url}">${bean.name}</a></li>
[/#list]
[/@ChannelList]
</ol>
</nav>
</div>
</div>
<div class="container mt-3">
<div class="row">
<div class="col-lg-8">
<div>
[#assign customsQueryMap={}/]
[#list channel.articleModel.fieldList?filter(field->['radio','checkbox','select','multipleSelect']?seqContains(field.type)) as field]
<div class="py-1 border-bottom">
[#assign param=field.code+'Key'/]
<a href="${addParam(channel.url, channel.dynamicUrl, param)}" class="btn btn-sm[#if !Params[param]??] btn-secondary[#else] btn-link text-reset[/#if]">全部${field.name}</a>
[@DictList typeId=field.dictTypeId; list]
[#list list as dict]
<a href="${addParam(channel.url, channel.dynamicUrl, param, dict.value)}" class="btn btn-sm [#if Params[param]! == dict.value]btn-secondary[#else]btn-link text-reset[/#if]">${dict.name}</a>
[/#list]
[/@DictList]
</div>
[#assign customsQueryMap=customsQueryMap + {'ArrayEQ_@articleExt-mainsJson$'+param+(field.dataType != 'string')?string('_Int',''): Params[param]!}/]
[/#list]
</div>
[@ArticlePage channelId=channel.id isIncludeSubChannel="true" Q_=customsQueryMap orderBy=channel.orderDesc?string("sticky_desc,order_desc","sticky_desc,order_asc"); pagedList]
<ul class="list-unstyled">
[#list pagedList.content as bean]
<li class="mt-3 media border-bottom position-relative pb-3">
[#if bean.image??][@A bean=bean class="mr-3"]<img src="${bean.image}" class="rounded-sm cm-media-img" alt="${bean.title}">[/@A][/#if]
<div class="media-body">
<p class="mt-0 mb-1">[@A bean=bean class="cm-link text-decoration-none"/]</p>
<p class="text-muted d-none d-sm-block mb-2">
[@A bean=bean class="text-reset small text-decoration-none"]${substring(bean.description,60,'...')}[/@A]
</p>
<div class="small text-muted mt-3 clearfix">
<div class="float-left">
<span>[#list bean.channel.paths as c][@A bean=c/][#if c_has_next] > [/#if][/#list]</span>
<i class="ml-2 far fa-eye"></i> ${bean.views}
</div>
<div class="float-right"><i class="ml-2 far fa-clock"></i> ${format(bean.publishDate, 'yyyy-MM-dd')}</div>
</div>
</div>
</li>
[/#list]
</ul>
[#include 'inc_page.html'/]
[/@ArticlePage]
</div>
[#include 'inc_right.html'/]
</div>
</div>
[#include 'inc_footer.html'/]
<script>axios.get('${api}/channel/view/${channel.id?c}');</script>
</body>
</html>
[/#escape]