作者 jinglong

修改公共内容

... ... @@ -16,6 +16,6 @@ class IndexController extends HomeBaseController
{
public function index()
{
return $this->fetch(':index');
return $this->fetch();
}
}
... ...
... ... @@ -5,7 +5,7 @@
<!-- Set render engine for 360 browser -->
<meta name="renderer" content="webkit">
<meta charset="utf-8">
<title>ThinkCMF {:lang('ADMIN_CENTER')}</title>
<title>中英文网站 {:lang('ADMIN_CENTER')}</title>
<meta name="description" content="This is page-header (.page-header &gt; h1)">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- HTML5 shim for IE8 support of HTML5 elements -->
... ... @@ -185,7 +185,7 @@
<div class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a href="{:url('admin/index/index')}" class="navbar-brand" style="min-width: 200px;text-align: center;">ThinkCMF</a>
<a href="{:url('admin/index/index')}" class="navbar-brand" style="min-width: 200px;text-align: center;">中英文网站</a>
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#navbar-main">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
... ...
... ... @@ -2,7 +2,7 @@
<html>
<head>
<meta charset="UTF-8"/>
<title>ThinkCMF {:lang('ADMIN_CENTER')}</title>
<title>中英文网站 {:lang('ADMIN_CENTER')}</title>
<meta http-equiv="X-UA-Compatible" content="chrome=1,IE=edge"/>
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta name="robots" content="noindex,nofollow">
... ... @@ -31,7 +31,7 @@
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<h1 class="text-center">ThinkCMF</h1>
<h1 class="text-center">中英文网站</h1>
<form class="js-ajax-form" action="{:url('public/doLogin')}" method="post">
<div class="form-group">
<input type="text" id="input_username" class="form-control" name="username"
... ... @@ -48,8 +48,7 @@
<div class="form-group">
<div style="position: relative;">
<input type="text" name="captcha" placeholder="验证码" class="form-control captcha">
<captcha height="32" width="150" font-size="18"
style="cursor: pointer;position:absolute;right:1px;top:1px;"/>
<captcha height="32" width="150" font-size="18" style="cursor: pointer;position:absolute;right:1px;top:1px;"/>
</div>
</div>
... ...
<php>
if (!function_exists('_get_system_widget')) {
function _get_system_widget($name){
</php>
<php>function _get_system_widget($name){</php>
<switch name="name">
<case value="CmfHub">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">交流方式</h3>
</div>
<div class="panel-body home-info">
<ul class="list-unstyled">
<li>
<em>官网</em> <span><a href="http://www.thinkcmf.com" target="_blank">www.thinkcmf.com</a></span>
</li>
<li><em>QQ 群</em> <span>100828313,316669417</span></li>
<li><em>联系邮箱</em> <span>catman@thinkcmf.com</span></li>
</ul>
</div>
</div>
</case>
<case value="CmfDocuments">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">开发手册</h3>
</div>
<div class="panel-body home-info">
<ul class="list-unstyled">
<li>
<em>完全开发手册</em>
<span>
<a class="label label-success" href="http://www.thinkcmf.com/doc.html"
target="_blank">立即阅读</a>
</span>
</li>
<li>
<em>常见问题手册</em>
<span>
<a class="label label-success" href="http://www.thinkcmf.com/faq.html"
target="_blank">立即阅读</a>
</span>
</li>
<li>
<em>模板开发教程</em>
<span>
<a class="label label-success" href="http://www.thinkcmf.com/theme_tutorial.html"
target="_blank">立即阅读</a>
</span>
</li>
<li>
<em>API开发手册</em>
<span>
<a class="label label-success" href="http://www.thinkcmf.com/cmf5api.html"
target="_blank">立即阅读</a>
</span>
</li>
</ul>
</div>
</div>
</case>
<case value="MainContributors">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">主要贡献者</h3>
<h3 class="panel-title">技术支持</h3>
</div>
<div class="panel-body home-info">
<ul class="list-inline">
<li>老猫</li>
<li>Sam</li>
<li>Tuolaji</li>
<li>睡不醒的猪</li>
<li>小夏</li>
<li>Powerless</li>
<li>WelKinVan</li>
<li>Kane</li>
<li>iYting</li>
<li>pl125</li>
<li>五五</li>
</ul>
</div>
</div>
</case>
<case value="Contributors">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">贡献者</h3>
</div>
<div class="panel-body home-info">
<ul class="list-inline">
<li>Kin Ho</li>
<li><a href="https://www.wzxaini9.cn/" target="_blank">Powerless</a></li>
<li>Jess</li>
<li>木兰情</li>
<li>Labulaka</li>
<li><a href="http://www.syousoft.com/" target="_blank">WelKinVan</a></li>
<li><a href="http://blog.sina.com.cn/u/1918098881" target="_blank">Jeson</a></li>
<li>Yim</li>
<li><a href="http://www.jamlee.cn/" target="_blank">Jamlee</a></li>
<li>香香咸蛋黄</li>
<li><a href="http://www.xdmeng.cn" target="_blank">小凯</a></li>
<li>Co</li>
<li>Rainfer</li>
<li><a href="http://www.yaoweixiu.cn/" target="_blank">Kane</a></li>
<li>北岸的云</li>
<li>pl125</li>
<li><a href="http://www.wuwuseo.com/" target="_blank">五五</a></li>
<li>银河百荣科技</li>
</ul>
</div>
</div>
</case>
</switch>
<php>
}
}
</php>
<php>}</php>
<include file="public@header"/>
<style>
... ... @@ -152,18 +53,6 @@
</head>
<body>
<div class="wrap">
<empty name="has_smtp_setting">
<div class="grid-item col-md-12">
<div class="alert alert-danger alert-dismissible fade in" role="alert" style="margin-bottom: 0;">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<strong>提示!</strong> 邮箱配置未完成,无法进行邮件发送!
<a href="#" data-dismiss="alert" aria-label="Close"
onclick="parent.openapp('{:url('Mailer/index')}','admin_mailer_index','邮箱配置');">现在设置</a>
</div>
</div>
</empty>
<if condition="!extension_loaded('fileinfo')">
<div class="grid-item col-md-12">
... ... @@ -176,24 +65,6 @@
</div>
</if>
<div class="grid-item col-md-12" id="thinkcmf-notices-grid" style="display:none;">
<div class="dashboard-box">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{:lang('SYSTEM_NOTIFICATIONS')}</h3>
</div>
<div class="panel-body home-info">
<ul id="thinkcmf-notices" class="list-unstyled">
<li>
<img src="__TMPL__/public/assets/images/loading.gif" style="vertical-align: middle;"/>
<span style="display: inline-block; vertical-align: middle;">加载中...</span>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="home-grid">
<!-- width of .grid-sizer used for columnWidth -->
<div class="grid-sizer"></div>
... ... @@ -218,7 +89,7 @@
<script src="__STATIC__/js/admin.js"></script>
<php>
$lang_set=defined('LANG_SET')?LANG_SET:'';
$thinkcmf_version=cmf_version();
$BRONET_VERSION=defined('BRONET_VERSION')?BRONET_VERSION:'';
</php>
<script>
... ... @@ -320,26 +191,6 @@
}
});
}
//获取官方通知
$.getJSON("//www.thinkcmf.com/service/sms_jsonp.php?lang={$lang_set}&v={$thinkcmf_version}&callback=?",
function (data) {
var tpl = '<li><em class="title"></em><span class="content"></span></li>';
var $notices = $("#thinkcmf-notices");
$notices.empty();
if (data.length > 0) {
$('#thinkcmf-notices-grid').show();
$.each(data, function (i, n) {
var $tpl = $(tpl);
$(".title", $tpl).html(n.title);
$(".content", $tpl).html(n.content);
$notices.append($tpl);
});
} else {
$notices.append("<li>^_^,{:lang('NO_NOTICE')}~~</li>");
}
});
</script>
<hook name="admin_before_body_end"/>
</body>
... ...
<!DOCTYPE html>
<html>
<head>
<title>{$article.post_title}</title>
<meta name="keywords" content="{$site_info.site_seo_keywords|default=''}"/>
<meta name="description" content="{$site_info.site_seo_description|default=''}">
<include file="public@head"/>
<style>
#article_content img {
height: auto !important;
max-width: 100%;
}
#article_content {
word-wrap: break-word;
}
</style>
<hook name="before_head_end"/>
</head>
<body class="body-white">
<include file="public@nav"/>
<div class="container tc-main">
<div class="row">
<div class="col-md-9">
<div class="tc-box article-box">
<h2>{$article.post_title}</h2>
<div class="article-infobox">
<span>{:date('Y-m-d H:i',$article.published_time)} by {$article.user.user_nickname}</span>
<span>
<a href="javascript:;"><i class="fa fa-eye"></i><span>{$article.post_hits}</span></a>
<a href="{:url('portal/Article/doLike',array('id'=>$article['id']))}" class="js-count-btn"><i
class="fa fa-thumbs-up"></i><span class="count">{$article.post_like}</span></a>
<a href="{:url('user/favorite/add')}"
class="js-favorite-btn"
data-title="{:base64_encode($article.post_title)}"
data-url="{:cmf_url_encode('portal/Article/index',array('id'=>$article['id']))}"
data-table="portal_post"
data-id="{$article['id']}"
>
<i class="fa fa-star-o"></i>
</a>
</span>
</div>
<hr>
<php>
$before_content_hook_param=[
'object_id'=>$article['id'],
'table_name'=>'portal_post',
'object_title'=>$article['post_title'],
'user_id'=>$article['user_id'],
'url'=>cmf_url_encode('portal/Article/index',array('id'=>$article['id'],'cid'=>$category['id'])),
'object'=>$article
];
</php>
<hook name="before_content" param="before_content_hook_param"/>
<div id="article_content">
{$article.post_content}
</div>
<if condition="!empty($article['post_source'])">
<div>
<b>注:本文转载自{$article.post_source},转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除。</b>
</div>
</if>
<php>
$after_content_hook_param=[
'object_id'=>$article['id'],
'table_name'=>'portal_post',
'object_title'=>$article['post_title'],
'user_id'=>$article['user_id'],
'url'=>cmf_url_encode('portal/Article/index',array('id'=>$article['id'],'cid'=>$category['id'])),
'object'=>$article
];
</php>
<hook name="after_content" param="after_content_hook_param"/>
<php>
$comment_hook_param=[
'object_id'=>$article['id'],
'table_name'=>'portal_post',
'object_title'=>$article['post_title'],
'url'=>cmf_url_encode('portal/Article/index',array('id'=>$article['id'],'cid'=>$category['id'])),
'user_id'=>$article['user_id'],
];
$comment=hook_one('comment',$comment_hook_param);
</php>
<if condition="empty($comment) && cmf_get_current_admin_id()">
<div style="border: 1px dashed #ddd;min-height: 200px;padding-top: 50px;">
<div class="alert alert-warning" role="alert">
此区域这为评论区,请安装评论插件!<br>
<em>注:普通用户不会看到此提示!</em>
</div>
</div>
</if>
{$comment}
</div>
</div>
<div class="col-md-3">
<div class="tc-box first-box">
<div class="headtitle">
<h2>热门文章</h2>
</div>
<div class="ranking">
<php>
$hot_articles=[];
</php>
<ul class="list-unstyled">
<portal:articles limit="5" order="post.post_hits DESC">
<php>$top=$key<3?"top3":"";</php>
<li class="{$top}">
<i>{$key+1}</i>
<a title="{$vo.post_title}"
href="{:url('portal/article/index',array('id'=>$vo['id']))}">
{$vo.post_title}
</a>
</li>
</portal:articles>
</ul>
</div>
</div>
</div>
</div>
<include file="public@footer"/>
</div>
<include file="public@scripts"/>
<hook name="before_body_end"/>
</body>
</html>
\ No newline at end of file
{
"name": "文章页",
"action": "portal/Article/index",
"description": "文章页模板文件",
"order": 10.0,
"more": {
"vars": {
"hot_articles_category_id": {
"title": "Hot Articles分类ID",
"value": "1",
"type": "text",
"tip": "",
"rule": []
}
}
}
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>联系我们</title>
<meta name="keywords" content="{$site_info.site_seo_keywords|default=''}"/>
<meta name="description" content="{$site_info.site_seo_description|default=''}">
<include file="public@head"/>
<script src="//api.map.baidu.com/api?v=1.3"></script>
<style>
img {
max-width: none;
}
</style>
<hook name="before_head_end"/>
</head>
<body class="body-white">
<include file="public@nav"/>
<div class="section slice no-padding">
<div id="mapCanvas" class="map-canvas no-margin" style="height: 450px;">
<php>
$company_location=empty($theme_vars['company_location'])?'121.449222,31.193348':$theme_vars['company_location'];
$company_location=explode(',',$company_location);
$company_location_lng=$company_location[0];
$company_location_lat=$company_location[1];
</php>
<script type="text/javascript">
var map = new BMap.Map("mapCanvas"); // 创建Map实例
var point = new BMap.Point("{$company_location_lng}", "{$company_location_lat}"); // 创建点坐标
map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别。
//map.enableScrollWheelZoom(); //启用滚轮放大缩小
//添加缩放控件
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.OverviewMapControl());
var marker = new BMap.Marker(point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
var infoWindow = new BMap.InfoWindow("{$theme_vars.baidu_map_info_window_text|htmlspecialchars_decode|default=''}"); // 创建信息窗口对象
marker.openInfoWindow(infoWindow);
</script>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-6">
<php>$guestbook=hook_one('guestbook');</php>
<if condition="empty($guestbook) && cmf_get_current_admin_id()">
<div style="border: 1px dashed #ddd;min-height: 300px;padding-top: 100px;">
<div class="alert alert-warning" role="alert">
此区域这为留言区,请安装留言插件!<br>
<em>注:普通用户不会看到此提示!</em>
</div>
</div>
</if>
{$guestbook}
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-6">
<h3 class="section-title">联系方式</h3>
<div class="contact-info">
<h5>地址</h5>
<p>{$theme_vars.address_cn|default=''}</p>
<h5>邮箱</h5>
<p>{$theme_vars.email|default=''}</p>
<h5>电话</h5>
<p>{$theme_vars.phone_cn|default=''}</p>
</div>
</div>
<div class="col-md-6">
<h3>Contact</h3>
<div class="contact-info">
<h5>Address</h5>
<p>{$theme_vars.address_en|default=''}</p>
<h5>Email</h5>
<p>{$theme_vars.email|default=''}</p>
<h5>Phone</h5>
<p>{$theme_vars.phone_en|default=''}</p>
</div>
</div>
</div>
<php>
$company_qq=empty($theme_vars['qq'])?'':$theme_vars['qq'];
$company_qq=explode(',',$company_qq);
</php>
<notempty name="company_qq">
<h3 class="section-title">快捷交流</h3>
<p>点击以下QQ图标,免加好友即时洽谈合作</p>
<div class="social-media">
<foreach name="company_qq" item="qq">
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin={$qq}&site=qq&menu=yes">
<img border="0"
src="http://wpa.qq.com/pa?p=2:{$qq}:51"
alt="点击这里给我发消息"
title="点击这里给我发消息"/>
</a>
</foreach>
</div>
</notempty>
</div>
</div>
<include file="public@footer"/>
</div>
<include file="public@scripts"/>
<hook name="before_body_end"/>
</body>
</html>
\ No newline at end of file
{
"name": "联系我们页",
"action": "portal/Page/index",
"description": "联系我们页模板文件",
"order": 10.0,
"more": {
"vars": {
"baidu_map_info_window_text": {
"title": "百度地图标注文字",
"name": "baidu_map_info_window_text",
"value": "ThinkCMF<br/><span class=''>地址:上海市徐汇区斜土路2601号</span>",
"type": "text",
"tip": "百度地图标注文字,支持简单html代码",
"rule": []
},
"company_location": {
"title": "公司坐标",
"value": "",
"type": "location",
"tip": "",
"rule": {
"require": true
}
},
"address_cn": {
"title": "公司地址",
"value": "上海市徐汇区斜土路0001号",
"type": "text",
"tip": "",
"rule": {
"require": true
}
},
"address_en": {
"title": "公司地址(英文)",
"value": "NO.0001 Xie Tu Road, Shanghai China",
"type": "text",
"tip": "",
"rule": {
"require": true
}
},
"email": {
"title": "公司邮箱",
"value": "catman@thinkcmf.com",
"type": "text",
"tip": "",
"rule": {
"require": true
}
},
"phone_cn": {
"title": "公司电话",
"value": "021 1000 0001",
"type": "text",
"tip": "",
"rule": {
"require": true
}
},
"phone_en": {
"title": "公司电话(英文)",
"value": "+8621 1000 0001",
"type": "text",
"tip": "",
"rule": {
"require": true
}
},
"qq": {
"title": "联系QQ",
"value": "478519726",
"type": "text",
"tip": "多个 QQ以英文逗号隔开",
"rule": {
"require": true
}
}
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>首页 {$site_info.site_name|default=''}</title>
<meta name="keywords" content="{$site_info.site_seo_keywords|default=''}"/>
<meta name="description" content="{$site_info.site_seo_description|default=''}">
<include file="public@head"/>
<link href="__TMPL__/public/assets/css/slippry/slippry.css" rel="stylesheet">
<style>
.caption-wraper {
position: absolute;
left: 50%;
bottom: 2em;
}
.caption-wraper .caption {
position: relative;
left: -50%;
background-color: rgba(0, 0, 0, 0.54);
padding: 0.4em 1em;
color: #fff;
-webkit-border-radius: 1.2em;
-moz-border-radius: 1.2em;
-ms-border-radius: 1.2em;
-o-border-radius: 1.2em;
border-radius: 1.2em;
}
.tc-gridbox {
margin: 0;
}
@media (max-width: 767px) {
.caption-wraper {
left: 0;
bottom: 0.4em;
}
.caption-wraper .caption {
left: 0;
padding: 0.2em 0.4em;
font-size: 0.92em;
-webkit-border-radius: 0;
-moz-border-radius: 0;
-ms-border-radius: 0;
-o-border-radius: 0;
border-radius: 0;
}
}
</style>
<hook name="before_head_end"/>
</head>
<body class="body-white">
<include file="public@nav"/>
<ul id="home-slider" class="list-unstyled">
<php>
$top_slide_id=empty($theme_vars['top_slide'])?1:$theme_vars['top_slide'];
</php>
<slides id="$top_slide_id">
<li>
<div class="caption-wraper">
<div class="caption">{$vo.title|default=''}</div>
</div>
<a href="{$vo.url|default=''}"><img src="{:cmf_get_image_url($vo.image)}" alt=""></a>
</li>
</slides>
<noslides id="$top_slide_id">
<li>
<div class="caption-wraper">
<div class="caption">此幻灯片只是演示,您没有设置任何幻灯片,请到后台模板设置!</div>
</div>
<a href=""><img src="__TMPL__/public/assets/images/demo/1.jpg" alt=""></a>
</li>
<li>
<div class="caption-wraper">
<div class="caption">此幻灯片只是演示,您没有设置任何幻灯片,请到后台模板设置!</div>
</div>
<a href=""><img src="__TMPL__/public/assets/images/demo/2.jpg" alt=""></a>
</li>
<li>
<div class="caption-wraper">
<div class="caption">此幻灯片只是演示,您没有设置任何幻灯片,请到后台模板设置!</div>
</div>
<a href=""><img src="__TMPL__/public/assets/images/demo/3.jpg" alt=""></a>
</li>
</noslides>
</ul>
<div class="container">
<widget name="features">
<div>
<h1 class="text-center">{$widget.title}</h1>
<h3 class="text-center">{$widget.vars.sub_title}</h3>
</div>
<php>
$features_count = count($widget['vars']['features']);
$rows = ceil($features_count/3);
</php>
<for start="1" end="$rows" comparison="elt" step="1" name="row">
<php>
$first_row = ($row-1)*3;
$features = array_slice($widget['vars']['features'],$first_row,3);
</php>
<div class="row">
<foreach name="features" item="vo">
<div class="col-md-4">
<h2 class="font-large nospace"><i class="fa fa-{$vo.icon}"></i> {$vo.title}</h2>
<p>{$vo.content}</p>
</div>
</foreach>
</div>
</for>
</widget>
<widget name="last_news">
<div>
<h1 class="text-center">{$widget.title}</h1>
</div>
<div class="row">
<php>
$widget["vars"]["last_news_category_id"] = empty($widget["vars"]["last_news_category_id"])?1:$widget["vars"]["last_news_category_id"];
$last_news_limit=4;
</php>
<portal:articles limit="$last_news_limit" order="post.published_time DESC"
categoryIds="$widget.vars.last_news_category_id">
<div class="col-md-3">
<div class="tc-gridbox">
<div class="header">
<div class="item-image">
<a href="{:cmf_url('portal/Article/index',array('id'=>$vo.id,'cid'=>$vo.category_id))}">
<present name="vo.more.thumbnail">
<empty name="vo.more.thumbnail">
<img src="__TMPL__/public/assets/images/default-thumbnail.png"
class="img-responsive"
alt="">
<else/>
<img src="{:cmf_get_image_url($vo.more.thumbnail)}"
class="img-responsive"
alt="">
</empty>
<else/>
<img src="__TMPL__/public/assets/images/default-thumbnail.png"
class="img-responsive"
alt="">
</present>
</a>
</div>
<h3>
<a href="{:cmf_url('portal/Article/index',array('id'=>$vo.id,'cid'=>$vo.category_id))}">{$vo.post_title}</a>
</h3>
<hr>
</div>
<div class="body">
<p>
<a href="{:cmf_url('portal/Article/index',array('id'=>$vo.id,'cid'=>$vo.category_id))}">...</a>
</p>
</div>
</div>
</div>
</portal:articles>
</div>
</widget>
<include file="public@footer"/>
</div>
<!-- /container -->
<include file="public@scripts"/>
<script src="__TMPL__/public/assets/js/slippry.min.js"></script>
<script>
$(function () {
$("#home-slider").slippry({
transition: 'fade',
useCSS: true,
captions: false,
speed: 1000,
pause: 3000,
auto: true,
preload: 'visible'
});
$("#home-slider").show();
});
</script>
<hook name="before_body_end"/>
</body>
</html>
{
"name": "首页",
"action": "portal/Index/index",
"description": "首页模板文件",
"order": 5.0,
"more": {
"vars": {
"top_slide": {
"title": "顶部幻灯片",
"value": "",
"type": "text",
"dataSource": {
"api": "admin/Slide/index",
"multi": false
},
"placeholder": "请选择顶部幻灯片",
"tip": "顶部幻灯片",
"rule": {
"require": true
}
}
},
"widgets": {
"features": {
"title": "快速了解ThinkCMF",
"display": "1",
"vars": {
"sub_title": {
"title": "副标题",
"value": "Quickly understand the ThinkCMF",
"type": "text",
"placeholder": "请输入副标题",
"tip": "",
"rule": {
"require": true
}
},
"features": {
"title": "特性介绍",
"value": [
{
"title": "MVC分层模式",
"icon": "bars",
"content": "使用MVC应用程序被分成三个核心部件:模型(M)、视图(V)、控制器(C),他不是一个新的概念,只是ThinkCMF将其发挥到了极致。"
},
{
"title": "用户管理",
"icon": "group",
"content": "ThinkCMF内置了灵活的用户管理方式,并可直接与第三方站点进行互联互通,如果你愿意甚至可以对单个用户或群体用户的行为进行记录及分享,为您的运营决策提供有效参考数据。"
},
{
"title": "云端部署",
"icon": "cloud",
"content": "通过驱动的方式可以轻松支持云平台的部署,让你的网站无缝迁移,内置已经支持SAE、BAE,正式版将对云端部署进行进一步优化。"
},
{
"title": "安全策略",
"icon": "heart",
"content": "提供的稳健的安全策略,包括备份恢复,容错,防治恶意攻击登陆,网页防篡改等多项安全管理功能,保证系统安全,可靠,稳定的运行。"
},
{
"title": "应用模块化",
"icon": "cubes",
"content": "提出全新的应用模式进行扩展,不管是你开发一个小功能还是一个全新的站点,在ThinkCMF中你只是增加了一个APP,每个独立运行互不影响,便于灵活扩展和二次开发。"
},
{
"title": "免费开源",
"icon": "certificate",
"content": "代码遵循Apache2开源协议,免费使用,对商业用户也无任何限制。"
}
],
"type": "array",
"item": {
"title": {
"title": "标题",
"value": "",
"type": "text",
"rule": {
"require": true
}
},
"icon": {
"title": "图标",
"value": "",
"type": "text"
},
"content": {
"title": "描述",
"value": "",
"type": "textarea"
}
},
"tip": ""
}
}
},
"last_news": {
"title": "最新资讯",
"display": "1",
"vars": {
"last_news_category_id": {
"title": "文章分类ID",
"value": "",
"type": "text",
"dataSource": {
"api": "portal/Category/index",
"multi": true
},
"placeholder": "请选择分类",
"tip": "",
"rule": {
"require": true
}
}
}
}
}
}
}
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
6666666
</body>
</html>
\ No newline at end of file
... ...
<!DOCTYPE html>
<html>
<head>
<title>{$category.name} {$category.seo_title} {$site_info.site_name|default=''}</title>
<meta name="keywords" content="{$category.seo_keywords},{$site_info.site_seo_keywords|default=''}"/>
<meta name="description" content="{$category.seo_description},{$site_info.site_seo_description|default=''}">
<include file="public@head"/>
<hook name="before_head_end"/>
</head>
<body class="body-white">
<include file="public@nav"/>
<div class="container">
<php>$demo_time=2;</php>
<h2>{$category.name}</h2>
<div class="row">
<div class="col-md-9">
<div class="">
<php>
$where= function($query){
$query->where('post.create_time','egt',0);
};
$page=[
'list_rows'=>10,
'next'=>'下一页',
'prev'=>'上一页'
];
</php>
<portal:articles item="vo" where="$where" order="post.create_time DESC" page="$page"
relation="categories"
categoryIds="$category.id"
returnVarName="articles_data">
<div class="list-boxes">
<h2><a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">{$vo.post_title}</a>
</h2>
<p>{$vo.post_excerpt}</p>
<div>
<div class="pull-left">
<div class="list-actions">
<a href="javascript:;"><i class="fa fa-eye"></i><span>{$vo.post_hits}</span></a>
<a href="{:url('portal/Article/doLike',array('id'=>$vo['id']))}"
class="js-count-btn"><i class="fa fa-thumbs-up"></i><span class="count">{$vo.post_like}</span></a>
<a href="{:url('user/Favorite/add',array('id'=>$vo['id'],'cid'=>$category['id']))}"
class="js-favorite-btn"
data-id="{$vo.id}"
data-table="portal_post"
data-title="{:base64_encode($vo.post_title)}"
data-url="{:cmf_url_encode('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}"
>
<i class="fa fa-star-o"></i>
</a>
</div>
</div>
<a class="btn btn-warning btn-sm pull-right"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id'],'cid'=>$category['id']))}">查看更多</a>
</div>
</div>
</portal:articles>
</div>
<ul class="pagination">
<page/>
</ul>
</div>
<div class="col-md-3">
<widget name="hottest_articles">
<div class="tc-box">
<div class="headtitle">
<h2>{$widget.title}</h2>
</div>
<div class="ranking">
<php>
$hot_articles=[];
</php>
<ul class="list-unstyled">
<portal:articles limit="5" order="post.post_hits DESC"
categoryIds="$widget.vars.hottest_articles_category_id">
<php>$top=$key<3?"top3":"";</php>
<li class="{$top}">
<i>{$key+1}</i>
<a title="{$vo.post_title}"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">
{$vo.post_title}
</a>
</li>
</portal:articles>
</ul>
</div>
</div>
</widget>
<widget name="last_articles">
<div class="tc-box">
<div class="headtitle">
<h2>{$widget.title}</h2>
</div>
<div class="posts">
<portal:articles limit="5" order="post.published_time DESC"
categoryIds="$widget.vars.last_articles_category_id">
<dl class="dl-horizontal">
<dt>
<a class="img-wraper"
href="{:cmf_url('portal/Article/index',array('id'=>$vo.id))}">
<if condition="empty($vo.more.thumbnail)">
<img src="__TMPL__/public/assets/images/default_tupian4.png"
class="img-responsive" alt="{$vo.post_title}"/>
<else/>
<img src="{:cmf_get_image_url($vo.more.thumbnail)}"
class="img-responsive" alt="{$vo.post_title}"/>
</if>
</a>
</dt>
<dd>
<a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">{$vo.post_title}</a>
</dd>
</dl>
</portal:articles>
</div>
</div>
</widget>
</div>
</div>
<include file="public@footer"/>
</div>
<include file="public@scripts"/>
<hook name="before_body_end"/>
</body>
</html>
\ No newline at end of file
{
"name": "文章列表页",
"action": "portal/List/index",
"description": "文章列表模板文件",
"order": 10.0,
"more": {
"vars": {
},
"widgets":{
"hottest_articles": {
"title": "热门文章",
"display": "1",
"vars": {
"hottest_articles_category_id": {
"title": "文章分类ID",
"value": "",
"type": "text",
"dataSource": {
"api": "portal/category/index",
"multi": true
},
"placeholder": "请选择分类",
"tip": "",
"rule": {
"require": true
}
}
}
},
"last_articles": {
"title": "最新发布",
"display": "1",
"vars": {
"last_articles_category_id": {
"title": "文章分类ID",
"value": "",
"type": "text",
"dataSource": {
"api": "portal/category/index",
"multi": true
},
"placeholder": "请选择分类",
"tip": "",
"rule": {
"require": true
}
}
}
}
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>{$page.post_title}</title>
<meta name="keywords" content="{$page.post_keywords}"/>
<meta name="description" content="{$page.post_excerpt}">
<include file="public@head"/>
<style>
#article_content img {
height: auto !important;
max-width: 100%;
}
</style>
<hook name="before_head_end"/>
</head>
<body class="body-white">
<include file="public@nav"/>
<div class="container tc-main">
<div class="row">
<div class="col-md-9">
<div class="tc-box article-box">
<h2>{$page.post_title|default=''}</h2>
<hr>
<div id="article_content">
{$page.post_content|default=''}
</div>
</div>
</div>
<div class="col-md-3">
<widget name="hottest_articles">
<div class="tc-box">
<div class="headtitle">
<h2>{$widget.title}</h2>
</div>
<div class="ranking">
<php>
$hot_articles=[];
</php>
<ul class="list-unstyled">
<portal:articles limit="5" order="post.post_hits DESC"
categoryIds="$widget.vars.hottest_articles_category_id">
<php>$top=$key<3?"top3":"";</php>
<li class="{$top}">
<i>{$key+1}</i>
<a title="{$vo.post_title}"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">
{$vo.post_title}
</a>
</li>
</portal:articles>
</ul>
</div>
</div>
</widget>
<widget name="last_articles">
<div class="tc-box">
<div class="headtitle">
<h2>{$widget.title}</h2>
</div>
<div class="posts">
<portal:articles limit="5" order="post.published_time DESC"
categoryIds="$widget.vars.last_articles_category_id">
<dl class="dl-horizontal">
<dt>
<a class="img-wraper"
href="{:cmf_url('portal/Article/index',array('id'=>$vo.id))}">
<if condition="empty($vo.more.thumbnail)">
<img src="__TMPL__/public/assets/images/default_tupian4.png"
class="img-responsive" alt="{$vo.post_title}"/>
<else/>
<img src="{:cmf_get_image_url($vo.more.thumbnail)}"
class="img-responsive" alt="{$vo.post_title}"/>
</if>
</a>
</dt>
<dd>
<a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">{$vo.post_title}</a>
</dd>
</dl>
</portal:articles>
</div>
</div>
</widget>
</div>
</div>
<include file="public@footer"/>
</div>
<include file="public@scripts"/>
<hook name="before_body_end"/>
</body>
</html>
\ No newline at end of file
{
"name": "单页面",
"action": "portal/Page/index",
"description": "单页面模板文件",
"order": 10.0,
"more": {
"widgets":{
"hottest_articles": {
"title": "热门文章",
"display": "1",
"vars": {
"hottest_articles_category_id": {
"title": "文章分类ID",
"value": "",
"type": "text",
"dataSource": {
"api": "portal/category/index",
"multi": true
},
"placeholder": "请选择分类",
"tip": "",
"rule": {
"require": true
}
}
}
},
"last_articles": {
"title": "最新发布",
"display": "1",
"vars": {
"last_articles_category_id": {
"title": "文章分类ID",
"value": "",
"type": "text",
"dataSource": {
"api": "portal/category/index",
"multi": true
},
"placeholder": "请选择分类",
"tip": "",
"rule": {
"require": true
}
}
}
}
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>搜索 {$theme_vars.varName1|default=''} </title>
<meta name="keywords" content="" />
<meta name="description" content="">
<include file="public@head"/>
<hook name="before_head_end"/>
</head>
<body class="">
<include file="public@nav"/>
<div class="container tc-main">
<div class="row">
<div class="col-md-9">
<div class="main-title">
<h3>'{$keyword}' 搜索结果 </h3>
</div>
<php>
$where=function($query)use($keyword){
$query->where('post.create_time','egt',0)->where('post.post_title','like',"%$keyword%");
};
</php>
<portal:articles item="vo" where="$where" order="post.create_time DESC" page="10">
<div class="list-boxes">
<h2><a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">{$vo.post_title}</a>
</h2>
<p>{$vo.post_excerpt}</p>
<div>
<div class="pull-left">
<div class="list-actions">
<a href="javascript:;"><i class="fa fa-eye"></i><span>{$vo.post_hits}</span></a>
<a href="{:cmf_url('portal/Article/doLike',array('id'=>$vo['id']))}"
class="js-count-btn"><i class="fa fa-thumbs-up"></i><span class="count">{$vo.post_like}</span></a>
<i class="fa fa-star-o"></i>
</a>
</div>
</div>
<a class="btn btn-warning btn-sm pull-right"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">查看更多</a>
</div>
</div>
</portal:articles>
<div class="pagination">
<page/>
</div>
</div>
</div>
<include file="public@footer"/>
</div>
<include file="public@scripts"/>
<hook name="before_body_end"/>
</body>
</html>
\ No newline at end of file
{
"name": "搜索页面",
"action": "portal/search/index",
"description": "搜索模板文件",
"order": 10.0,
"more": {
"vars": {
"varName1": {
"title": "热门搜索",
"value": "1",
"type": "text",
"tip": "这是一个text",
"rule": {
"require": true
}
}
}
}
}
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<title>{$tag.name} {$site_info.site_name|default=''}</title>
<meta name="keywords" content="{$site_info.site_seo_keywords|default=''}"/>
<meta name="description" content="{$site_info.site_seo_description|default=''}">
<include file="public@head"/>
<hook name="before_head_end"/>
</head>
<body class="body-white">
<include file="public@nav"/>
<div class="container">
<php>$demo_time=2;</php>
<h2>{$tag.name}</h2>
<div class="row">
<div class="col-md-9">
<div class="">
<php>
$where= function($query){
$query->where('post.create_time','egt',0);
};
$page=[
'list_rows'=>1,
'next'=>'下一页',
'prev'=>'上一页'
];
</php>
<portal:tagArticles item="vo" where="$where" order="post.create_time DESC" page="$page"
relation="categories"
tagId="$tag.id"
returnVarName="articles_data">
<div class="list-boxes">
<h2><a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">{$vo.post_title}</a>
</h2>
<p>{$vo.post_excerpt}</p>
<div>
<div class="pull-left">
<div class="list-actions">
<a href="javascript:;"><i class="fa fa-eye"></i><span>{$vo.post_hits}</span></a>
<a href="{:url('portal/Article/doLike',array('id'=>$vo['id']))}"
class="js-count-btn"><i class="fa fa-thumbs-up"></i><span class="count">{$vo.post_like}</span></a>
<a href="{:url('user/Favorite/add',array('id'=>$vo['id']))}"
class="js-favorite-btn"
data-id="{$vo.id}"
data-table="portal_post"
data-title="{:base64_encode($vo.post_title)}"
data-url="{:cmf_url_encode('portal/Article/index',array('id'=>$vo['id']))}"
>
<i class="fa fa-star-o"></i>
</a>
</div>
</div>
<a class="btn btn-warning btn-sm pull-right"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">查看更多</a>
</div>
</div>
</portal:tagArticles>
</div>
<ul class="pagination">
<page/>
</ul>
</div>
<div class="col-md-3">
<widget name="hottest_articles">
<div class="tc-box">
<div class="headtitle">
<h2>{$widget.title}</h2>
</div>
<div class="ranking">
<php>
$hot_articles=[];
</php>
<ul class="list-unstyled">
<portal:articles limit="5" order="post.post_hits DESC"
categoryIds="$widget.vars.hottest_articles_category_id">
<php>$top=$key<3?"top3":"";</php>
<li class="{$top}">
<i>{$key+1}</i>
<a title="{$vo.post_title}"
href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">
{$vo.post_title}
</a>
</li>
</portal:articles>
</ul>
</div>
</div>
</widget>
<widget name="last_articles">
<div class="tc-box">
<div class="headtitle">
<h2>{$widget.title}</h2>
</div>
<div class="posts">
<portal:articles limit="5" order="post.published_time DESC"
categoryIds="$widget.vars.last_articles_category_id">
<dl class="dl-horizontal">
<dt>
<a class="img-wraper"
href="{:cmf_url('portal/Article/index',array('id'=>$vo.id))}">
<if condition="empty($vo.more.thumbnail)">
<img src="__TMPL__/public/assets/images/default_tupian4.png"
class="img-responsive" alt="{$vo.post_title}"/>
<else/>
<img src="{:cmf_get_image_url($vo.more.thumbnail)}"
class="img-responsive" alt="{$vo.post_title}"/>
</if>
</a>
</dt>
<dd>
<a href="{:cmf_url('portal/Article/index',array('id'=>$vo['id']))}">{$vo.post_title}</a>
</dd>
</dl>
</portal:articles>
</div>
</div>
</widget>
</div>
</div>
<include file="public@footer"/>
</div>
<include file="public@scripts"/>
<hook name="before_body_end"/>
</body>
</html>
\ No newline at end of file