This commit is contained in:
Gitea
2022-01-24 10:43:35 +08:00
commit 15dfc6576b
786 changed files with 219240 additions and 0 deletions

View File

@@ -0,0 +1,551 @@
<?php
/**
* @copyright (C)2016-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2017年12月15日
* 文章控制器
*/
namespace app\admin\controller\content;
use core\basic\Controller;
use app\admin\model\content\ContentModel;
class ContentController extends Controller
{
private $model;
private $blank;
public function __construct()
{
$this->model = new ContentModel();
}
// 文章列表
public function index()
{
if ((! ! $id = get('id', 'int')) && $result = $this->model->getContent($id)) {
$this->assign('more', true);
$this->assign('content', $result);
} else {
$this->assign('list', true);
if (! $mcode = get('mcode', 'var')) {
error('传递的模型编码参数有误,请核对后重试!');
}
if (isset($_GET['keyword'])) {
if (! ! $scode = get('scode', 'var')) {
$result = $this->model->findContent($mcode, $scode, get('keyword', 'vars'));
} else {
$result = $this->model->findContentAll($mcode, get('keyword', 'vars'));
}
} else {
$result = $this->model->getList($mcode);
}
$this->assign('contents', $result);
// 文章分类下拉列表
$sort_model = model('admin.content.ContentSort');
$sort_select = $sort_model->getListSelect($mcode);
$this->assign('search_select', $this->makeSortSelect($sort_select, get('scode')));
$this->assign('sort_select', $this->makeSortSelect($sort_select, session('addscode')));
$this->assign('subsort_select', $this->makeSortSelect($sort_select));
// 模型名称
$this->assign('model_name', model('admin.content.Model')->getName($mcode));
// 扩展字段
$this->assign('extfield', model('admin.content.ExtField')->getModelField($mcode));
$this->assign('baidu_zz_token', $this->config('baidu_zz_token'));
$this->assign('baidu_ks_token', $this->config('baidu_ks_token'));
// 前端地址连接符判断
$url_break_char = $this->config('url_break_char') ?: '_';
$this->assign('url_break_char', $url_break_char);
// 获取会员分组
$this->assign('groups', model('admin.member.MemberGroup')->getSelect());
}
$this->display('content/content.html');
}
// 文章增加
public function add()
{
if ($_POST) {
// 获取数据
$scode = post('scode');
$subscode = post('subscode');
$title = post('title');
$titlecolor = post('titlecolor');
$subtitle = post('subtitle');
$filename = post('filename');
$author = post('author');
$source = post('source');
$outlink = post('outlink');
$date = post('date');
$ico = post('ico');
$pics = post('pics');
// 获取多图标题
$picstitle = post('picstitle');
if ($picstitle) {
$picstitle = implode(',', $picstitle);
}
$content = post('content');
$tags = str_replace('', ',', post('tags'));
$enclosure = post('enclosure');
$keywords = post('keywords');
$description = post('description');
$status = post('status', 'int');
$istop = post('istop', 'int', '', '', 0);
$isrecommend = post('isrecommend', 'int', '', '', 0);
$isheadline = post('isheadline', 'int', '', '', 0);
$gid = post('gid', 'int') ?: 0;
$gtype = post('gtype', 'int') ?: 4;
$gnote = post('gnote');
if (! $scode) {
alert_back('内容分类不能为空!');
}
if (! $title) {
alert_back('文章标题不能为空!');
}
if ($filename && ! preg_match('/^[a-zA-Z0-9\-]+$/', $filename)) {
alert_back('内容URL名称只允许字母、数字、横线组成!');
}
// 自动提起前一百个字符为描述
if (! $description && isset($_POST['content'])) {
$description = escape_string(clear_html_blank(substr_both(strip_tags($_POST['content']), 0, 150)));
}
// 缩放缩略图
if ($ico) {
resize_img(ROOT_PATH . $ico, '', $this->config('ico.max_width'), $this->config('ico.max_height'));
}
// 检查自定义URL名称
if ($filename) {
while ($this->model->checkFilename($filename)) {
$filename = $filename . '-' . mt_rand(1, 20);
}
}
// 记住新增栏目
session('addscode', $scode);
// 构建数据
$data = array(
'acode' => session('acode'),
'scode' => $scode,
'subscode' => $subscode,
'title' => $title,
'titlecolor' => $titlecolor,
'subtitle' => $subtitle,
'filename' => $filename,
'author' => $author,
'source' => $source,
'outlink' => $outlink,
'date' => $date,
'ico' => $ico,
'pics' => $pics,
'picstitle' => $picstitle,
'content' => $content,
'tags' => $tags,
'enclosure' => $enclosure,
'keywords' => $keywords,
'description' => clear_html_blank($description),
'sorting' => 255,
'status' => $status,
'istop' => $istop,
'isrecommend' => $isrecommend,
'isheadline' => $isheadline,
'gid' => $gid,
'gtype' => $gtype,
'gnote' => $gnote,
'visits' => 0,
'likes' => 0,
'oppose' => 0,
'create_user' => session('username'),
'update_user' => session('username')
);
// 执行添加
if (! ! $id = $this->model->addContent($data)) {
// 扩展内容添加
foreach ($_POST as $key => $value) {
if (preg_match('/^ext_[\w\-]+$/', $key)) {
if (! isset($data2['contentid'])) {
$data2['contentid'] = $id;
}
$temp = post($key);
if (is_array($temp)) {
$data2[$key] = implode(',', $temp);
} else {
$data2[$key] = str_replace("\r\n", '<br>', $temp);
}
}
}
if (isset($data2)) {
if (! $this->model->addContentExt($data2)) {
$this->model->delContent($id);
$this->log('新增文章失败!');
error('新增失败!', - 1);
}
}
$this->log('新增文章成功!');
if (! ! $backurl = get('backurl')) {
success('新增成功!', base64_decode($backurl));
} else {
success('新增成功!', url('/admin/Content/index/mcode/' . get('mcode')));
}
} else {
$this->log('新增文章失败!');
error('新增失败!', - 1);
}
}
}
// 生成分类选择
private function makeSortSelect($tree, $selectid = null)
{
$list_html = '';
foreach ($tree as $value) {
// 默认选择项
if ($selectid == $value->scode) {
$select = "selected='selected'";
} else {
$select = '';
}
$list_html .= "<option value='{$value->scode}' $select>{$this->blank}{$value->name}";
// 子菜单处理
if ($value->son) {
$this->blank .= '  ';
$list_html .= $this->makeSortSelect($value->son, $selectid);
}
}
// 循环完后回归位置
$this->blank = substr($this->blank, 0, - 6);
return $list_html;
}
// 文章删除
public function del()
{
// 执行批量删除
if ($_POST) {
if (! ! $list = post('list')) {
if ($this->model->delContentList($list)) {
$this->model->delContentExtList($list);
$this->log('批量删除文章成功!');
success('批量删除成功!', - 1);
} else {
$this->log('批量删除文章失败!');
error('批量删除失败!', - 1);
}
} else {
alert_back('请选择要删除的内容!');
}
}
if (! $id = get('id', 'int')) {
error('传递的参数值错误!', - 1);
}
if ($this->model->delContent($id)) {
$this->model->delContentExt($id);
$this->log('删除文章' . $id . '成功!');
success('删除成功!', - 1);
} else {
$this->log('删除文章' . $id . '失败!');
error('删除失败!', - 1);
}
}
// 文章修改
public function mod()
{
if (! ! $submit = post('submit')) {
switch ($submit) {
case 'sorting': // 修改列表排序
$listall = post('listall');
if ($listall) {
$sorting = post('sorting');
foreach ($listall as $key => $value) {
if ($sorting[$key] === '' || ! is_numeric($sorting[$key]))
$sorting[$key] = 255;
$this->model->modContent($value, "sorting=" . $sorting[$key]);
}
$this->log('修改内容排序成功!');
success('修改成功!', - 1);
} else {
alert_back('排序失败,无任何内容!');
}
break;
case 'copy':
$list = post('list');
$scode = post('scode');
if (! $list) {
alert_back('请选择要复制的内容!');
}
if (! $scode) {
alert_back('请选择目标栏目!');
}
if ($this->model->copyContent($list, $scode)) {
$this->log('复制内容成功!');
success('复制内容成功!', - 1);
} else {
alert_back('复制内容失败!');
}
break;
case 'move':
$list = post('list');
$scode = post('scode');
if (! $list) {
alert_back('请选择要移动的内容!');
}
if (! $scode) {
alert_back('请选择目标栏目!');
}
if ($this->model->modContent($list, "scode='" . $scode . "'")) {
$this->log('移动内容成功!');
success('移动内容成功!', - 1);
} else {
alert_back('移动内容失败!');
}
break;
case 'baiduzz':
$list = post('list');
$urls = post('urls');
if (! $list) {
alert_back('请选择要推送的内容!');
}
// 依次推送
$domain = get_http_url();
if (! $token = $this->config('baidu_zz_token')) {
alert_back('请先到系统配置中填写百度普通收录推送token值');
}
$api = "http://data.zz.baidu.com/urls?site=$domain&token=$token";
foreach ($list as $key => $value) {
$url = $domain . $urls[$value];
$this->log('百度普通收录推送:' . $url);
$post_urls[] = $url;
}
$result = post_baidu($api, $post_urls);
if (isset($result->error)) {
alert_back('百度普通收录推送发生错误:' . $result->message);
} elseif (isset($result->success)) {
alert_back('成功推送' . $result->success . '条,今天剩余可推送' . $result->remain . '条数!');
} else {
alert_back('发生未知错误!');
}
case 'baiduks':
$list = post('list');
$urls = post('urls');
if (! $list) {
alert_back('请选择要推送的内容!');
}
// 依次推送
$domain = get_http_url();
if (! $token = $this->config('baidu_ks_token')) {
alert_back('请先到系统配置中填写百度快速收录推送token值');
}
$api = "http://data.zz.baidu.com/urls?site=$domain&token=$token&type=daily";
foreach ($list as $key => $value) {
$url = $domain . $urls[$value];
$this->log('百度快速收录推送:' . $url);
$post_urls[] = $url;
}
$result = post_baidu($api, $post_urls);
if (isset($result->error)) {
alert_back('百度快速收录推送发生错误:' . $result->message);
} elseif (isset($result->success_daily)) {
alert_back('成功推送' . $result->success_daily . '条,今天剩余可推送' . $result->remain_daily . '条数!');
} else {
alert_back('发生未知错误!');
}
}
}
if (! $id = get('id', 'int')) {
error('传递的参数值错误!', - 1);
}
// 单独修改状态
if (($field = get('field', 'var')) && ! is_null($value = get('value', 'var'))) {
if ($this->model->modContent($id, "$field='$value',update_user='" . session('username') . "'")) {
location(- 1);
} else {
alert_back('修改失败!');
}
}
// 修改操作
if ($_POST) {
// 获取数据
$scode = post('scode');
$subscode = post('subscode');
$title = post('title');
$titlecolor = post('titlecolor');
$subtitle = post('subtitle');
$filename = post('filename');
$author = post('author');
$source = post('source');
$outlink = post('outlink');
$date = post('date');
$ico = post('ico');
$pics = post('pics');
// 获取多图标题
$picstitle = post('picstitle');
if ($picstitle) {
$picstitle = implode(',', $picstitle);
}
$content = post('content');
$tags = str_replace('', ',', post('tags'));
$enclosure = post('enclosure');
$keywords = post('keywords');
$description = post('description');
$status = post('status', 'int');
$istop = post('istop', 'int', '', '', 0);
$isrecommend = post('isrecommend', 'int', '', '', 0);
$isheadline = post('isheadline', 'int', '', '', 0);
$gid = post('gid', 'int') ?: 0;
$gtype = post('gtype', 'int') ?: 4;
$gnote = post('gnote');
if (! $scode) {
alert_back('内容分类不能为空!');
}
if (! $title) {
alert_back('文章标题不能为空!');
}
if ($filename && ! preg_match('/^[a-zA-Z0-9\-]+$/', $filename)) {
alert_back('内容URL名称只允许字母、数字、横线组成!');
}
// 自动提起前一百个字符为描述
if (! $description && isset($_POST['content'])) {
$description = escape_string(clear_html_blank(substr_both(strip_tags($_POST['content']), 0, 150)));
}
// 缩放缩略图
if ($ico) {
resize_img(ROOT_PATH . $ico, '', $this->config('ico.max_width'), $this->config('ico.max_height'));
}
if ($filename) {
while ($this->model->checkFilename($filename, "id<>$id")) {
$filename = $filename . '-' . mt_rand(1, 20);
}
}
// 构建数据
$data = array(
'scode' => $scode,
'subscode' => $subscode,
'title' => $title,
'titlecolor' => $titlecolor,
'subtitle' => $subtitle,
'filename' => $filename,
'author' => $author,
'source' => $source,
'outlink' => $outlink,
'date' => $date,
'ico' => $ico,
'pics' => $pics,
'picstitle' => $picstitle,
'content' => $content,
'tags' => $tags,
'enclosure' => $enclosure,
'keywords' => $keywords,
'description' => clear_html_blank($description),
'status' => $status,
'istop' => $istop,
'isrecommend' => $isrecommend,
'isheadline' => $isheadline,
'gid' => $gid,
'gtype' => $gtype,
'gnote' => $gnote,
'update_user' => session('username')
);
// 执行添加
if ($this->model->modContent($id, $data)) {
// 扩展内容修改
foreach ($_POST as $key => $value) {
if (preg_match('/^ext_[\w\-]+$/', $key)) {
$temp = post($key);
if (is_array($temp)) {
$data2[$key] = implode(',', $temp);
} else {
$data2[$key] = str_replace("\r\n", '<br>', $temp);
}
}
}
if (isset($data2)) {
if ($this->model->findContentExt($id)) {
$this->model->modContentExt($id, $data2);
} else {
$data2['contentid'] = $id;
$this->model->addContentExt($data2);
}
}
$this->log('修改文章' . $id . '成功!');
if (! ! $backurl = get('backurl')) {
success('修改成功!', base64_decode($backurl));
} else {
success('修改成功!', url('/admin/Content/index/mcode/2'));
}
} else {
location(- 1);
}
} else {
// 调取修改内容
$this->assign('mod', true);
if (! $result = $this->model->getContent($id)) {
error('编辑的内容已经不存在!', - 1);
}
$this->assign('content', $result);
if (! $mcode = get('mcode', 'var')) {
error('传递的模型编码参数有误,请核对后重试!');
}
// 文章分类
$sort_model = model('admin.content.ContentSort');
$sort_select = $sort_model->getListSelect($mcode);
$this->assign('sort_select', $this->makeSortSelect($sort_select, $result->scode));
$this->assign('subsort_select', $this->makeSortSelect($sort_select, $result->subscode));
// 模型名称
$this->assign('model_name', model('admin.content.Model')->getName($mcode));
// 扩展字段
$this->assign('extfield', model('admin.content.ExtField')->getModelField($mcode));
// 获取会员分组
$this->assign('groups', model('admin.member.MemberGroup')->getSelect());
$this->display('content/content.html');
}
}
}

View File

@@ -0,0 +1,557 @@
<?php
/**
* @copyright (C)2016-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2017年12月26日
* 内容栏目控制器
*/
namespace app\admin\controller\content;
use core\basic\Controller;
use app\admin\model\content\ContentSortModel;
class ContentSortController extends Controller
{
private $count;
private $blank;
private $outData = array();
private $model;
public function __construct()
{
$this->model = new ContentSortModel();
}
// 内容栏目列表
public function index()
{
$this->assign('list', true);
$tree = $this->model->getList();
$sorts = $this->makeSortList($tree);
$this->assign('sorts', $sorts);
// 内容模型
$models = model('admin.content.Model');
$this->assign('allmodels', $models->getSelectAll());
$this->assign('models', $models->getSelect());
// 内容栏目下拉表
$sort_tree = $this->model->getSelect();
$sort_select = $this->makeSortSelect($sort_tree);
$this->assign('sort_select', $sort_select);
// 模板文件
$htmldir = $this->config('tpl_html_dir') ? '/' . $this->config('tpl_html_dir') : '';
$this->assign('tpls', file_list(ROOT_PATH . current($this->config('tpl_dir')) . '/' . $this->model->getTheme() . $htmldir));
// 前端地址连接符判断
$url_break_char = $this->config('url_break_char') ?: '_';
$this->assign('url_break_char', $url_break_char);
// 获取会员分组
$this->assign('groups', model('admin.member.MemberGroup')->getSelect());
$this->display('content/contentsort.html');
}
// 生成无限级内容栏目列表
private function makeSortList($tree)
{
// 循环生成
foreach ($tree as $value) {
$this->count ++;
$this->outData[$this->count] = new \stdClass();
$this->outData[$this->count]->id = $value->id;
$this->outData[$this->count]->blank = $this->blank;
$this->outData[$this->count]->name = $value->name;
$this->outData[$this->count]->subname = $value->subname;
$this->outData[$this->count]->scode = $value->scode;
$this->outData[$this->count]->pcode = $value->pcode;
$this->outData[$this->count]->mcode = $value->mcode;
$this->outData[$this->count]->listtpl = $value->listtpl;
$this->outData[$this->count]->contenttpl = $value->contenttpl;
$this->outData[$this->count]->ico = $value->ico;
$this->outData[$this->count]->pic = $value->pic;
$this->outData[$this->count]->keywords = $value->keywords;
$this->outData[$this->count]->description = $value->description;
$this->outData[$this->count]->outlink = $value->outlink;
$this->outData[$this->count]->sorting = $value->sorting;
$this->outData[$this->count]->status = $value->status;
$this->outData[$this->count]->filename = $value->filename;
$this->outData[$this->count]->type = $value->type;
$this->outData[$this->count]->urlname = $value->urlname;
$this->outData[$this->count]->create_user = $value->create_user;
$this->outData[$this->count]->update_user = $value->update_user;
$this->outData[$this->count]->create_time = $value->create_time;
$this->outData[$this->count]->update_time = $value->update_time;
if ($value->son) {
$this->outData[$this->count]->son = true;
} else {
$this->outData[$this->count]->son = false;
}
// 子菜单处理
if ($value->son) {
$this->blank .= '  ';
$this->makeSortList($value->son);
}
}
// 循环完后回归缩进位置
$this->blank = substr($this->blank, 6);
return $this->outData;
}
// 内容栏目增加
public function add()
{
if ($_POST) {
if (! ! $multiplename = post('multiplename')) {
$multiplename = str_replace('', ',', $multiplename);
$pcode = post('pcode', 'var');
$type = post('type');
$mcode = post('mcode');
$listtpl = basename(post('listtpl'));
$contenttpl = basename(post('contenttpl'));
$status = post('status');
if (! $pcode) { // 父编码默认为0
$pcode = 0;
}
if (! $mcode) {
alert_back('栏目模型必须选择!');
}
if (! $type) {
alert_back('栏目类型不能为空!');
}
$names = explode(',', $multiplename);
$lastcode = $this->model->getLastCode();
$scode = get_auto_code($lastcode);
foreach ($names as $key => $value) {
$data[] = array(
'acode' => session('acode'),
'pcode' => $pcode,
'scode' => $scode,
'name' => $value,
'mcode' => $mcode,
'listtpl' => $listtpl,
'contenttpl' => $contenttpl,
'status' => $status,
'gid' => 0,
'gtype' => 4,
'subname' => '',
'filename' => '',
'outlink' => '',
'ico' => '',
'pic' => '',
'title' => '',
'keywords' => '',
'description' => '',
'sorting' => 255,
'create_user' => session('username'),
'update_user' => session('username')
);
$scode = get_auto_code($scode);
}
} else {
// 获取数据
$scode = get_auto_code($this->model->getLastCode()); // 自动编码;
$pcode = post('pcode', 'var');
$name = post('name');
$type = post('type');
$mcode = post('mcode');
$listtpl = basename(post('listtpl'));
$contenttpl = basename(post('contenttpl'));
$status = post('status');
$subname = post('subname');
$filename = post('filename');
$outlink = post('outlink');
$ico = post('ico');
$pic = post('pic');
$title = post('title');
$keywords = post('keywords');
$description = post('description');
$gid = post('gid', 'int') ?: 0;
$gtype = post('gtype', 'int') ?: 4;
$gnote = post('gnote');
$def1 = post('def1');
$def2 = post('def2');
$def3 = post('def3');
if (! $scode) {
alert_back('编码不能为空!');
}
if (! $pcode) { // 父编码默认为0
$pcode = 0;
}
if (! $name) {
alert_back('栏目名不能为空!');
}
if (! $mcode) {
alert_back('栏目模型必须选择!');
}
if (! $type) {
alert_back('栏目类型不能为空!');
}
if ($filename && ! preg_match('/^[a-zA-Z0-9\-\/]+$/', $filename)) {
alert_back('URL名称只允许字母、数字、横线、斜线组成!');
}
if ($filename && $this->model->checkUrlname($filename)) {
alert_back('URL名称与模型URL名称冲突请换一个名称');
}
// 缩放缩略图
if ($ico) {
resize_img(ROOT_PATH . $ico, '', $this->config('ico.max_width'), $this->config('ico.max_height'));
}
// 检查编码
if ($this->model->checkSort("scode='$scode'")) {
alert_back('该内容栏目编号已经存在,不能再使用!');
}
// 检查自定义URL名称
if ($filename) {
while ($this->model->checkFilename($filename)) {
$filename = $filename . '_' . mt_rand(1, 20);
}
}
// 构建数据
$data = array(
'acode' => session('acode'),
'pcode' => $pcode,
'scode' => $scode,
'name' => $name,
'mcode' => $mcode,
'listtpl' => $listtpl,
'contenttpl' => $contenttpl,
'status' => $status,
'gid' => $gid,
'gtype' => $gtype,
'gnote' => $gnote,
'subname' => $subname,
'def1' => $def1,
'def2' => $def2,
'def3' => $def3,
'filename' => $filename,
'outlink' => $outlink,
'ico' => $ico,
'pic' => $pic,
'title' => $title,
'keywords' => $keywords,
'description' => $description,
'sorting' => 255,
'create_user' => session('username'),
'update_user' => session('username')
);
}
// 执行添加
if ($this->model->addSort($data)) {
if ($type == 1 && ! $outlink) { // 在填写了外链时不生成单页
if ($multiplename) {
foreach ($data as $key => $value) {
$this->addSingle($value['scode'], $value['name']);
}
} else {
$this->addSingle($scode, $name);
}
}
$this->log('新增数据内容栏目' . $scode . '成功!');
success('新增成功!', url('/admin/ContentSort/index'));
} else {
$this->log('新增数据内容栏目' . $scode . '失败!');
error('新增失败!', - 1);
}
}
}
// 生成内容栏目下拉选择
private function makeSortSelect($tree, $selectid = null)
{
$list_html = '';
foreach ($tree as $value) {
// 默认选择项
if ($selectid == $value->scode) {
$select = "selected='selected'";
} else {
$select = '';
}
if (get('scode') != $value->scode) { // 不显示本身,避免出现自身为自己的父节点
$list_html .= "<option value='{$value->scode}' $select>{$this->blank}{$value->name}</option>";
}
// 子菜单处理
if ($value->son) {
$this->blank .= '  ';
$list_html .= $this->makeSortSelect($value->son, $selectid);
}
}
// 循环完后回归位置
$this->blank = substr($this->blank, 0, - 6);
return $list_html;
}
// 内容栏目删除
public function del()
{
// 执行批量删除
if ($_POST) {
if (! ! $list = post('list')) {
if ($this->model->delSortList($list)) {
$this->log('批量删除栏目成功!');
success('批量删除成功!', - 1);
} else {
$this->log('批量删除栏目失败!');
error('批量删除失败!', - 1);
}
} else {
alert_back('请选择要删除的栏目!');
}
}
if (! $scode = get('scode', 'var')) {
error('传递的参数值错误!', - 1);
}
if ($this->model->delSort($scode)) {
$this->log('删除数据内容栏目' . $scode . '成功!');
success('删除成功!', - 1);
} else {
$this->log('删除数据内容栏目' . $scode . '失败!');
error('删除失败!', - 1);
}
}
// 内容栏目修改
public function mod()
{
if (! ! $submit = post('submit')) {
switch ($submit) {
case 'sorting': // 修改列表排序
$listall = post('listall');
if ($listall) {
$sorting = post('sorting');
foreach ($listall as $key => $value) {
if ($sorting[$key] === '' || ! is_numeric($sorting[$key]))
$sorting[$key] = 255;
$this->model->modSortSorting($value, "sorting=" . $sorting[$key]);
}
$this->log('批量修改栏目排序成功!');
success('修改成功!', - 1);
} else {
alert_back('排序失败,无任何内容!');
}
break;
}
}
if (! $scode = get('scode', 'var')) {
error('传递的参数值错误!', - 1);
}
// 单独修改状态
if (($field = get('field', 'var')) && ! is_null($value = get('value', 'var'))) {
if ($this->model->modSort($scode, "$field='$value',update_user='" . session('username') . "'")) {
$this->log('修改数据内容栏目' . $scode . '状态' . $value . '成功!');
location(- 1);
} else {
$this->log('修改数据内容栏目' . $scode . '状态' . $value . '失败!');
alert_back('修改失败!');
}
}
// 修改操作
if ($_POST) {
// 获取数据
$pcode = post('pcode', 'var');
$name = post('name');
$mcode = post('mcode');
$type = post('type');
$listtpl = basename(post('listtpl'));
$contenttpl = basename(post('contenttpl'));
$status = post('status');
$subname = post('subname');
$filename = post('filename');
$outlink = post('outlink');
$ico = post('ico');
$pic = post('pic');
$title = post('title');
$keywords = post('keywords');
$description = post('description');
$modsub = post('modsub', 'int');
$gid = post('gid', 'int') ?: 0;
$gtype = post('gtype', 'int') ?: 4;
$gnote = post('gnote');
$def1 = post('def1');
$def2 = post('def2');
$def3 = post('def3');
if (! $pcode) { // 父编码默认为0
$pcode = 0;
}
if (! $name) {
alert_back('栏目名不能为空!');
}
if (! $mcode) {
alert_back('栏目模型必须选择!');
}
if (! $type) {
alert_back('栏目类型不能为空!');
}
if ($filename && ! preg_match('/^[a-zA-Z0-9\-\/]+$/', $filename)) {
alert_back('URL名称只允许字母、数字、横线、斜线组成!');
}
if ($filename && $this->model->checkUrlname($filename)) {
alert_back('URL名称与模型URL名称冲突请换一个名称');
}
// 缩放缩略图
if ($ico) {
resize_img(ROOT_PATH . $ico, '', $this->config('ico.max_width'), $this->config('ico.max_height'));
}
if ($filename) {
while ($this->model->checkFilename($filename, "scode<>'$scode'")) {
$filename = $filename . '-' . mt_rand(1, 20);
}
}
// 构建数据
$data = array(
'pcode' => $pcode,
'name' => $name,
'mcode' => $mcode,
'listtpl' => $listtpl,
'contenttpl' => $contenttpl,
'status' => $status,
'gid' => $gid,
'gtype' => $gtype,
'gnote' => $gnote,
'subname' => $subname,
'def1' => $def1,
'def2' => $def2,
'def3' => $def3,
'filename' => $filename,
'outlink' => $outlink,
'ico' => $ico,
'pic' => $pic,
'title' => $title,
'keywords' => $keywords,
'description' => $description,
'update_user' => session('username')
);
// 执行添加
if ($this->model->modSort($scode, $data, $modsub)) {
// 如果修改为单页并且跳转,则删除单页内容,否则判断是否存在内容,不存在则添加
if ($type == 1 && $outlink) {
$this->model->delContent($scode);
} elseif ($type == 1 && ! $this->model->findContent($scode)) {
$this->addSingle($scode, $name);
}
$this->log('修改数据内容栏目' . $scode . '成功!');
success('修改成功!', url('/admin/ContentSort/index'));
} else {
location(- 1);
}
} else { // 调取修改内容
$this->assign('mod', true);
$sort = $this->model->getSort($scode);
if (! $sort) {
error('编辑的内容已经不存在!', - 1);
}
$this->assign('sort', $sort);
// 父编码下拉选择
$sort_tree = $this->model->getSelect();
$sort_select = $this->makeSortSelect($sort_tree, $sort->pcode);
$this->assign('sort_select', $sort_select);
// 模板文件
$htmldir = $this->config('tpl_html_dir') ? '/' . $this->config('tpl_html_dir') : '';
$this->assign('tpls', file_list(ROOT_PATH . current($this->config('tpl_dir')) . '/' . $this->model->getTheme() . $htmldir));
// 内容模型
$models = model('admin.content.Model');
$this->assign('models', $models->getSelect());
// 获取会员分组
$this->assign('groups', model('admin.member.MemberGroup')->getSelect());
$this->display('content/contentsort.html');
}
}
// 添加栏目时执行单页内容增加
public function addSingle($scode, $title)
{
// 构建数据
$data = array(
'acode' => session('acode'),
'scode' => $scode,
'subscode' => '',
'title' => $title,
'titlecolor' => '#333333',
'subtitle' => '',
'filename' => '',
'author' => session('realname'),
'source' => '本站',
'outlink' => '',
'date' => date('Y-m-d H:i:s'),
'ico' => '',
'pics' => '',
'content' => '',
'tags' => '',
'enclosure' => '',
'keywords' => '',
'description' => '',
'sorting' => 255,
'status' => 1,
'istop' => 0,
'isrecommend' => 0,
'isheadline' => 0,
'gid' => 0,
'gtype' => 4,
'gnote' => '',
'visits' => 0,
'likes' => 0,
'oppose' => 0,
'create_user' => session('username'),
'update_user' => session('username')
);
// 执行添加
if ($this->model->addSingle($data)) {
return true;
} else {
return false;
}
}
}

View File

@@ -0,0 +1,134 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="renderer" content="webkit">
<title>{CMSNAME}管理中心-V{APP_VERSION}-{RELEASE_TIME}</title>
<link rel="shortcut icon" href="{SITE_DIR}/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="{APP_THEME_DIR}/layui/css/layui.css?v=v2.5.4">
<link rel="stylesheet" href="{APP_THEME_DIR}/font-awesome/css/font-awesome.min.css?v=v4.7.0" type="text/css">
<link rel="stylesheet" href="{APP_THEME_DIR}/css/comm.css?v=v3.0.6">
<link href="{APP_THEME_DIR}/css/jquery.treetable.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="{APP_THEME_DIR}/js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="{APP_THEME_DIR}/js/jquery.treetable.js"></script>
</head>
<body class="layui-layout-body">
<!--定义部分地址方便JS调用-->
<div style="display: none">
<span id="controller" data-controller="{C}"></span>
<span id="url" data-url="{URL}"></span>
<span id="preurl" data-preurl="{fun=url('/admin',false)}"></span>
<span id="sitedir" data-sitedir="{SITE_DIR}"></span>
<span id="mcode" data-mcode="{$get.mcode}"></span>
</div>
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo">
<a href="{url./admin/Index/home}">
后台管理
{if(LICENSE==3)}
<span class="layui-badge">SVIP</span>
{else}
<span class="layui-badge layui-bg-gray">V{APP_VERSION}</span>
{/if}
</a>
</div>
<ul class="menu">
<li class="menu-ico" title="显示或隐藏侧边栏"><i class="fa fa-bars" aria-hidden="true"></i></li>
</ul>
{if(![$one_area])}
<form method="post" action="{url./admin/Index/area}" class="area-select">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-col-xs8">
<select name="acode">
{$area_html}
</select>
</div>
<div class="layui-col-xs4">
<button type="submit" class="layui-btn layui-btn-sm">切换</button>
</div>
</form>
{/if}
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item layui-hide-xs">
<a href="{SITE_DIR}/" target="_blank"><i class="fa fa-home" aria-hidden="true"></i> 网站主页</a>
</li>
<li class="layui-nav-item layui-hide-xs">
<a href="{url./admin/Index/clearCache}"><i class="fa fa-trash-o" aria-hidden="true"></i> 清理缓存</a>
</li>
<li class="layui-nav-item layui-hide-xs">
<a href="javascript:;">
<i class="fa fa-user-circle-o" aria-hidden="true"></i> {$session.realname}
</a>
<dl class="layui-nav-child">
<dd><a href="{url./admin/Index/ucenter}"><i class="fa fa-address-card-o" aria-hidden="true"></i> 密码修改</a></dd>
<dd><a href="{url./admin/Index/loginOut}"><i class="fa fa-sign-out" aria-hidden="true"></i> 退出登录</a></dd>
<dd><a href="{url./admin/Upgrade/index}"><i class="fa fa-cloud-upload" aria-hidden="true"></i> 在线更新</a></dd>
<dd><a href="{url./admin/Index/clearSession}"><i class="fa fa-trash-o" aria-hidden="true"></i> 清理会话</a></dd>
</dl>
</li>
</ul>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域可配合layui已有的垂直导航 -->
<ul class="layui-nav layui-nav-tree" id="nav" lay-shrink="all">
{foreach $menu_tree(key,value)}
<li class="layui-nav-item nav-item {if([$primary_menu_url]==$value->url)}layui-nav-itemed{/if}">
<a class="" href="javascript:;"><i class="fa [value->ico]" aria-hidden="true"></i>[value->name]</a>
<dl class="layui-nav-child">
{if($value->mcode=='M130')}
{foreach $menu_models(key3,value3,num3)}
{if($value3->type==1)}
<dd><a href="{url./admin/Single/index/mcode/'.$value3->mcode.'}"><i class="fa fa-file-text-o" aria-hidden="true"></i>[value3->name]内容</a></dd>
{/if}
{if($value3->type==2)}
<dd><a href="{url./admin/Content/index/mcode/'.$value3->mcode.'}"><i class="fa fa-file-text-o" aria-hidden="true"></i>[value3->name]内容</a></dd>
{/if}
{/foreach}
{else}
{foreach $value->son(key2,value2,num2)}
{if(!isset($value2->status)|| $value2->status==1)}
<dd><a href="{url.'.$value2->url.'}"><i class="fa [value2->ico]" aria-hidden="true"></i>[value2->name]</a></dd>
{/if}
{/foreach}
{if($value->mcode=='M101' && session('ucode')==10001)}
<dd><a href="{url./admin/Upgrade/index}"><i class="fa fa-cloud-upload" aria-hidden="true"></i>在线更新</a></dd>
{/if}
{/if}
</dl>
</li>
{/foreach}
<li style="height:1px;background:#666" class="layui-hide-sm"></li>
<li class="layui-nav-item layui-hide-sm">
<a href="{SITE_DIR}/" target="_blank"><i class="fa fa-home" aria-hidden="true"></i> 网站主页</a>
</li>
<li class="layui-nav-item layui-hide-sm">
<a href="{url./admin/Index/ucenter}"><i class="fa fa-address-card-o" aria-hidden="true"></i> 资料修改</a>
</li>
<li class="layui-nav-item layui-hide-sm">
<a href="{url./admin/Index/clearCache}"><i class="fa fa-trash-o" aria-hidden="true"></i> 清理缓存</a>
</li>
<li class="layui-nav-item layui-hide-sm">
<a href="{url./admin/Index/loginOut}"><i class="fa fa-sign-out" aria-hidden="true"></i> 退出登录</a>
</li>
</ul>
</div>
</div>

View File

@@ -0,0 +1,113 @@
{include file='common/head.html'}
<div class="layui-body">
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this">公司信息</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="{url./admin/Company/mod}" method="post">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">公司名称</label>
<div class="layui-input-block">
<input type="text" name="name" value="{$companys->name}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">公司地址</label>
<div class="layui-input-block">
<input type="text" name="address" value="{$companys->address}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮政编码</label>
<div class="layui-input-block">
<input type="text" name="postcode" value="{$companys->postcode}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系人</label>
<div class="layui-input-block">
<input type="text" name="contact" value="{$companys->contact}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机号码</label>
<div class="layui-input-block">
<input type="text" name="mobile" value="{$companys->mobile}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">电话号码</label>
<div class="layui-input-block">
<input type="text" name="phone" value="{$companys->phone}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">传真号码</label>
<div class="layui-input-block">
<input type="text" name="fax" value="{$companys->fax}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">电子邮箱</label>
<div class="layui-input-block">
<input type="text" name="email" value="{$companys->email}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">QQ号码</label>
<div class="layui-input-block">
<input type="text" name="qq" value="{$companys->qq}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">微信二维码</label>
<div class="layui-input-inline">
<input type="text" name="weixin" id="weixin" value="{$companys->weixin}" placeholder="" class="layui-input">
</div>
<button type="button" class="layui-btn upload" data-des="weixin">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div id="weixin_box" class="pic"><dl><dt>{if(@[$companys->weixin])}<img src="{SITE_DIR}{$companys->weixin}" data-url="{$companys->weixin}"></dt><dd>删除</dd></dl>{/if}</div>
</div>
<!--<div class="layui-form-item">
<label class="layui-form-label">营业执照代码</label>
<div class="layui-input-block">
<input type="text" name="blicense" value="{$companys->blicense}" placeholder="" class="layui-input">
</div>
</div>-->
<div class="layui-form-item">
<label class="layui-form-label">其它信息</label>
<div class="layui-input-block">
<input type="text" name="other" value="{$companys->other}" placeholder="" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit>立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{include file='common/foot.html'}

View File

@@ -0,0 +1,615 @@
{include file='common/head.html'}
<div class="layui-body">
{if([$list])}
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="t1">栏目列表</li>
<li lay-id="t2">栏目新增</li>
<li lay-id="t3">批量新增</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="{url./admin/ContentSort/mod}" method="post" id="sortForm" name="sortForm">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<table class="layui-table" id="sortTable">
<thead>
<tr>
<th><input type="checkbox" lay-ignore id="checkall" title="全选"></th>
<th>栏目名称</th>
<th>编码</th>
<th>URL名称</th>
<th>模型</th>
<th>列表页模板</th>
<th>详情页模板</th>
<th>排序</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{foreach $sorts(key,value)}
<tr data-tt-id='[value->scode]' data-tt-parent-id="[value->pcode]">
<td>
<input type="checkbox" class="checkitem" lay-ignore name="list[]" value="[value->scode]">
<input type="hidden" name="listall[]" value="[value->id]">
</td>
<td>
{if($value->son)}
<i class="fa fa-folder-o" aria-hidden="true"></i>
{else}
<i class="fa fa-folder-open-o" aria-hidden="true"></i>
{/if}
[value->name]
{if($value->outlink)}
<span class="layui-badge layui-bg-black"></span>
{/if}
</td>
<td>[value->scode]</td>
<td>[value->filename]</td>
<td>
{foreach $allmodels(key2,value2)}
{if($value2->mcode==$value->mcode)}
[value2->name]
{/if}
{/foreach}
</td>
<td>[value->listtpl]</td>
<td>[value->contenttpl]</td>
<td class="table-input"><input type="text" name="sorting[]" value="[value->sorting]" class="layui-input"></td>
<td>
{if($value->status)}
<a href="{url./admin/'.C.'/mod/scode/'.$value->scode.'/field/status/value/0}"><i class='fa fa-toggle-on' title="点击禁用"></i></a>
{else}
<a href="{url./admin/'.C.'/mod/scode/'.$value->scode.'/field/status/value/1}"><i class='fa fa-toggle-off' title="点击启用"></i></a>
{/if}
</td>
<td>
{if(!$value->outlink)}
{if($value->type==1)}
{php}$value->urlname=$value->urlname?:'about';{/php}
{else}
{php}$value->urlname=$value->urlname?:'list';{/php}
{/if}
{php} $url_rule_sort_suffix = \core\basic\Config::get('url_rule_sort_suffix') ? true : false;{/php}
{if($value->filename)}
<a href="{fun=homeurl('/home/Index/'.$value->filename,$url_rule_sort_suffix)}" class="layui-btn layui-btn-xs layui-btn-primary" target="_blank">查看</a>
{else}
<a href="{fun=homeurl('/home/Index/'.$value->urlname.[$url_break_char].$value->scode,$url_rule_sort_suffix)}" class="layui-btn layui-btn-xs layui-btn-primary" target="_blank">查看</a>
{/if}
{/if}
{fun=get_btn_del($value->scode,'scode')}
{fun=get_btn_mod($value->scode,'scode')}
</td>
</tr>
{/foreach}
</tbody>
</table>
<button type="submit" name="submit" value="sorting" class="layui-btn">保存排序</button>
<button type="submit" name="submit" onclick="return setDelAction();" class="layui-btn">批量删除</button>
<script>
function setDelAction(){
document.sortForm.action = "{url./admin/ContentSort/del}";
return confirm("您确定要删除选中的栏目么?");
}
$("#sortTable").treetable({ expandable: true,column: 1,indent:20,stringCollapse:'收缩',stringExpand:'展开' });
</script>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/ContentSort/add}" method="post" class="layui-form" lay-filter="sort">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this">基本选项</li>
<li>高级选项</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label class="layui-form-label">父栏目</label>
<div class="layui-input-block">
<select name="pcode">
<option value="0" >顶级栏目</option>
{$sort_select}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目名称 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<input type="text" name="name" required lay-verify="required" placeholder="请输入栏目名称" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">URL名称 </label>
<div class="layui-input-block">
<input type="text" name="filename" placeholder="请输入URL名称如:test" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容模型 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<select name="mcode" lay-filter="model" lay-verify="required" >
<option value="">请选择内容模型</option>
{foreach $models(key,value)}
<option value="[value->mcode]" data-type="[value->type]" data-listtpl="[value->listtpl]" data-contenttpl="[value->contenttpl]" >[value->name]</option>
{/foreach}
</select>
</div>
</div>
<input type="hidden" value="1" name="type" id="type">
<div class="layui-form-item">
<label class="layui-form-label">列表页模板</label>
<div class="layui-input-block">
<select name="listtpl" id="listtpl">
<option value=""></option>
{foreach $tpls(key,value)}
<option value="[value]">[value]</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">详情页模板</label>
<div class="layui-input-block">
<select name="contenttpl" id="contenttpl" >
<option value=""></option>
{foreach $tpls(key,value)}
<option value="[value]">[value]</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" checked>
<input type="radio" name="status" value="0" title="隐藏">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">浏览权限</label>
<div class="layui-input-block">
<select name="gid">
<option value="">不限制</option>
{foreach $groups(key,value)}
<option value="[value->id]">[value->gname]</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限类型</label>
<div class="layui-input-block">
<select name="gtype" id="gtype" >
<option value="1">小于</option>
<option value="2">小于等于</option>
<option value="3">等于</option>
<option value="4" selected>大于等于</option>
<option value="5">大于</option>
</select>
</div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-form-item">
<label class="layui-form-label">栏目副名称</label>
<div class="layui-input-block">
<input type="text" name="subname" placeholder="请输入栏目副名称" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目描述1</label>
<div class="layui-input-block">
<input type="text" name="def1" placeholder="请输入栏目描述1内容" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目描述2</label>
<div class="layui-input-block">
<input type="text" name="def2" placeholder="请输入栏目描述2内容" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目描述3</label>
<div class="layui-input-block">
<input type="text" name="def3" placeholder="请输入栏目描述3内容" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跳转链接</label>
<div class="layui-input-block">
<input type="text" name="outlink" placeholder="请输入跳转链接" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限不足提示</label>
<div class="layui-input-block">
<input type="text" name="gnote" placeholder="请输入权限不足时提示文本" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目缩略图</label>
<div class="layui-input-inline">
<input type="text" name="ico" id="ico" placeholder="请上传栏目缩略图" class="layui-input">
</div>
<button type="button" class="layui-btn upload" data-des="ico">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div id="ico_box" class="pic"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目大图</label>
<div class="layui-input-inline">
<input type="text" name="pic" id="pic" placeholder="请上传栏目大图" class="layui-input">
</div>
<button type="button" class="layui-btn upload" data-des="pic">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div id="pic_box" class="pic"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO标题</label>
<div class="layui-input-block">
<input type="text" name="title" placeholder="请输入栏目SEO标题需前端调用" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO关键字</label>
<div class="layui-input-block">
<input type="text" name="keywords" placeholder="请输入栏目SEO关键字需前端调用" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO描述</label>
<div class="layui-input-block">
<textarea name="description" placeholder="请输入栏目SEO描述需前端调用" class="layui-textarea"></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit>立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<!-- 批量新增 -->
<div class="layui-tab-item">
<form action="{url./admin/ContentSort/add}" method="post" class="layui-form" lay-filter="sort">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">父栏目</label>
<div class="layui-input-block">
<select name="pcode">
<option value="0" >顶级栏目</option>
{$sort_select}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目名称</label>
<div class="layui-input-block">
<input type="text" name="multiplename" required lay-verify="required" placeholder="请输入栏目名称,多个栏目用逗号隔开" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容模型</label>
<div class="layui-input-block">
<select name="mcode" lay-filter="model" lay-verify="required" >
<option value="">请选择内容模型</option>
{foreach $models(key,value)}
<option value="[value->mcode]" data-type="[value->type]" data-listtpl="[value->listtpl]" data-contenttpl="[value->contenttpl]" >[value->name]</option>
{/foreach}
</select>
</div>
</div>
<input type="hidden" value="1" name="type" id="type">
<div class="layui-form-item">
<label class="layui-form-label">列表页模板</label>
<div class="layui-input-block">
<select name="listtpl" id="listtpl">
<option value=""></option>
{foreach $tpls(key,value)}
<option value="[value]">[value]</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">详情页模板</label>
<div class="layui-input-block">
<select name="contenttpl" id="contenttpl" >
<option value=""></option>
{foreach $tpls(key,value)}
<option value="[value]">[value]</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" checked>
<input type="radio" name="status" value="0" title="隐藏">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit>立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
{/if}
{if([$mod])}
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this">栏目修改</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="{url./admin/ContentSort/mod/scode/'.[$get.scode].'}{$backurl}" method="post" class="layui-form" lay-filter="sort">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this">基本选项</li>
<li>高级选项</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label class="layui-form-label">父栏目</label>
<div class="layui-input-block">
<select name="pcode" id="pcode">
<option value="0" >顶级栏目</option>
{$sort_select}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目名称 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<input type="text" name="name" required lay-verify="required" value="{$sort->name}" placeholder="请输入栏目名称" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">URL名称 </label>
<div class="layui-input-block">
<input type="text" name="filename" value="{$sort->filename}" placeholder="请输入URL名称如:test" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容模型 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<select name="mcode" lay-filter="model" lay-verify="required" >
<option value="">请选择内容模型</option>
{foreach $models(key,value)}
<option value="[value->mcode]" {if($value->mcode==[$sort->mcode])}selected{/if} data-type="[value->type]" data-listtpl="[value->listtpl]" data-contenttpl="[value->contenttpl]" >[value->name]</option>
{/foreach}
</select>
</div>
</div>
<input type="hidden" name="type" id="type" value="{$sort->type}">
<div class="layui-form-item">
<label class="layui-form-label">列表页模板</label>
<div class="layui-input-block">
<select name="listtpl" id="listtpl">
<option value="{$sort->listtpl}">{$sort->listtpl}</option>
<option value=""></option>
{foreach $tpls(key,value)}
{if($value!=[$sort->listtpl])}
<option value="[value]">[value]</option>
{/if}
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">详情页模板</label>
<div class="layui-input-block">
<select name="contenttpl" id="contenttpl" >
<option value="{$sort->contenttpl}">{$sort->contenttpl}</option>
<option value=""></option>
{foreach $tpls(key,value)}
{if($value!=[$sort->contenttpl])}
<option value="[value]">[value]</option>
{/if}
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">同步子栏目模板</label>
<div class="layui-input-block">
<input type="radio" name="modsub" value="1" title="是">
<input type="radio" name="modsub" value="0" title="否" checked>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" {if([$sort->status]==1)}checked="checked"{/if}>
<input type="radio" name="status" value="0" title="隐藏" {if([$sort->status]==0)}checked="checked"{/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">浏览权限</label>
<div class="layui-input-block">
<select name="gid">
<option value="">不限制</option>
{foreach $groups(key,value)}
<option value="[value->id]" {if([$sort->gid]==$value->id)}selected="selected"{/if}>[value->gname]</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限类型</label>
<div class="layui-input-block">
<select name="gtype" id="gtype" >
<option value="1" {if([$sort->gtype]==1)}selected="selected"{/if}>小于</option>
<option value="2" {if([$sort->gtype]==2)}selected="selected"{/if}>小于等于</option>
<option value="3" {if([$sort->gtype]==3)}selected="selected"{/if}>等于</option>
<option value="4" {if([$sort->gtype]==4||(![$sort->gtype]))}selected="selected"{/if}>大于等于</option>
<option value="5" {if([$sort->gtype]==5)}selected="selected"{/if}>大于</option>
</select>
</div>
</div>
</div>
<div class="layui-tab-item">
<div class="layui-form-item">
<label class="layui-form-label">栏目副名称</label>
<div class="layui-input-block">
<input type="text" name="subname" value="{$sort->subname}" placeholder="请输入栏目副名称" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目描述1</label>
<div class="layui-input-block">
<input type="text" name="def1" value="{$sort->def1}" placeholder="请输入栏目描述1内容" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目描述2</label>
<div class="layui-input-block">
<input type="text" name="def2" value="{$sort->def2}" placeholder="请输入栏目描述2内容" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目描述3</label>
<div class="layui-input-block">
<input type="text" name="def3" value="{$sort->def3}" placeholder="请输入栏目描述3内容" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跳转链接</label>
<div class="layui-input-block">
<input type="text" name="outlink" value="{$sort->outlink}" placeholder="请输入跳转链接" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">权限不足提示</label>
<div class="layui-input-block">
<input type="text" name="gnote" value="{$sort->gnote}" placeholder="请输入权限不足时提示文本" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目缩略图</label>
<div class="layui-input-inline">
<input type="text" name="ico" id="ico" value="{$sort->ico}" placeholder="请上传栏目缩略图" class="layui-input">
</div>
<button type="button" class="layui-btn upload" data-des="ico">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div id="ico_box" class="pic"><dl><dt>{if([$sort->ico])}<img src='{SITE_DIR}{$sort->ico}' data-url="{$sort->ico}"></dt><dd>删除</dd></dl>{/if}</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目大图</label>
<div class="layui-input-inline">
<input type="text" name="pic" id="pic" value="{$sort->pic}" placeholder="请上传栏目大图" class="layui-input">
</div>
<button type="button" class="layui-btn upload" data-des="pic">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div id="pic_box" class="pic"><dl><dt>{if([$sort->pic])}<img src='{SITE_DIR}{$sort->pic}' data-url="{$sort->pic}"></dt><dd>删除</dd></dl>{/if}</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO标题</label>
<div class="layui-input-block">
<input type="text" name="title" value="{$sort->title}" placeholder="请输入栏目SEO标题需前端调用" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO关键字</label>
<div class="layui-input-block">
<input type="text" name="keywords" value="{$sort->keywords}" placeholder="请输入栏目SEO关键字需前端调用" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO描述</label>
<div class="layui-input-block">
<textarea name="description" placeholder="请输入栏目SEO描述需前端调用" class="layui-textarea">{$sort->description}</textarea>
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit>立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
{fun=get_btn_back()}
</div>
</div>
</form>
</div>
</div>
</div>
{/if}
</div>
{include file='common/foot.html'}

View File

@@ -0,0 +1,431 @@
{include file='common/head.html'}
<div class="layui-body">
{if([$list])}
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="t1">{$model_name}内容</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="{url./admin/Single/index/mcode/'.get('mcode').'}" method="get" class="layui-form">
<div class="layui-form-item nospace">
<div class="layui-input-inline">
{$pathinfo}
<select name="field" class="form-control input-sm" style="width:auto;">
<option value="b.name" {if(get('field')=='b.name')}selected="selected" {/if}>栏目名称</option>
<option value="a.title" {if(get('field')=='a.title')}selected="selected" {/if} >文章标题</option>
<option value="a.content" {if(get('field')=='a.content')}selected="selected" {/if}>文章内容</option>
</select>
</div>
<div class="layui-input-inline">
<input type="text" name="keyword" value="{$get.keyword}" placeholder="请输入搜索关键字" class="layui-input">
</div>
<div class="layui-input-inline">
<button class="layui-btn" lay-submit>搜索</button>
<a class="layui-btn layui-btn-primary" href="{url./admin/Single/index/mcode/'.get('mcode').'}">清除搜索</a>
</div>
</div>
</form>
<table class="layui-table">
<thead>
<tr>
<th>ID</th>
<th>栏目</th>
<th>标题</th>
<th>时间</th>
<th>状态</th>
<th>访问量</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{foreach $contents(key,value)}
<tr>
<td>[value->id]</td>
<td title="[value->scode]">[value->sortname]</td>
<td title="[value->title]">
{fun=substr_both($value->title,0,15)}
{if($value->ico)}
<span class="layui-badge layui-bg-orange"></span>
{/if}
{if($value->pics)}
<span class="layui-badge"></span>
{/if}
{if($value->outlink)}
<span class="layui-badge layui-bg-black"></span>
{/if}
</td>
<td>[value->date]</td>
<td>
{if($value->status)}
<a href="{url./admin/'.C.'/mod/id/'.$value->id.'/field/status/value/0}"><i class='fa fa-toggle-on' title="点击关闭"></i></a>
{else}
<a href="{url./admin/'.C.'/mod/id/'.$value->id.'/field/status/value/1}"><i class='fa fa-toggle-off' title="点击开启"></i></a>
{/if}
</td>
<td>[value->visits]</td>
<td>
{if(!$value->outlink)}
{php}
$value->urlname=$value->urlname?:'about';
$url_rule_sort_suffix = \core\basic\Config::get('url_rule_sort_suffix') ? true : false;
{/php}
{if($value->filename)}
<a href="{fun=homeurl('/home/Index/'.$value->filename,$url_rule_sort_suffix)}" class="layui-btn layui-btn-xs layui-btn-primary" target="_blank">查看</a>
{else}
<a href="{fun=homeurl('/home/Index/'.$value->urlname.[$url_break_char].$value->scode,$url_rule_sort_suffix)}" class="layui-btn layui-btn-xs layui-btn-primary" target="_blank">查看</a>
{/if}
{/if}
{if(check_level('mod'))}
<a href="{url./admin/Single/mod/mcode/'.$value->mcode.'/id/'.$value->id.'}{$btnqs}" class="layui-btn layui-btn-xs" >修改</a>
{if([$baidu_zz_token] && !$value->outlink)}
<a href="{url./admin/'.C.'/mod/baiduzz/'.$value->id.'}" class="layui-btn layui-btn-xs layui-btn-primary" >百度普通推送</a>
{/if}
{if([$baidu_ks_token] && !$value->outlink)}
<a href="{url./admin/'.C.'/mod/baiduks/'.$value->id.'}" class="layui-btn layui-btn-xs layui-btn-primary" >百度快速推送</a>
{/if}
{/if}
</td>
</tr>
{/foreach}
</tbody>
</table>
</div>
</div>
</div>
{/if}
{if([$mod])}
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this">单页修改</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="{url./admin/Single/mod/id/'.[$get.id].'}{$backurl}" method="post" class="layui-form" id="edit">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this">基本内容</li>
<li>高级内容</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<div class="layui-form-item">
<label class="layui-form-label">内容标题 <span class="layui-text-red">*</span></label>
<div class="layui-input-block">
<input type="text" name="title" required lay-verify="required" value="{$content->title}" placeholder="请输入内容标题" class="layui-input">
</div>
</div>
{foreach $extfield(key,value)}
{if($value->type==1)} <!-- 单行文本 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-block">
<input type="text" name="[value->name]" value="{$content->{$value->name}}" placeholder="请输入[value->description]" class="layui-input">
</div>
</div>
{/if}
{if($value->type==2)}<!-- 多行文本 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-block">
<textarea name="[value->name]" class="layui-textarea" placeholder="请输入[value->description]">{php}$name=$value->name;echo str_replace('<br>', "\r\n",$this->vars['content']->$name);{/php}</textarea>
</div>
</div>
{/if}
{if($value->type==3)}<!-- 单选 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-block">
<div>
{php}
$radios=explode(',',$value->value);
$name=$value->name;
foreach ($radios as $value2) {
if($this->vars['content']->$name==$value2){
echo '<input type="radio" name="'.$value->name.'" value="'.$value2.'" title="'.$value2.'" checked>';
}else{
echo '<input type="radio" name="'.$value->name.'" value="'.$value2.'" title="'.$value2.'">';
}
}
{/php}
</div>
</div>
</div>
{/if}
{if($value->type==4)}<!-- 多选 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-block">
<div>
{php}
$checkboxs=explode(',',$value->value);
$name=$value->name;
echo '<input name="'.$value->name.'" type="hidden">';//占位清空
$values=explode(',',$this->vars['content']->$name);
foreach ($checkboxs as $value2) {
if(in_array($value2,$values)){
echo '<input type="checkbox" name="'.$value->name.'[]" value="'.$value2.'" title="'.$value2.'" checked>';
}else{
echo '<input type="checkbox" name="'.$value->name.'[]" value="'.$value2.'" title="'.$value2.'">';
}
}
{/php}
</div>
</div>
</div>
{/if}
{if($value->type==5)}<!-- 图片 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-inline">
<input type="text" name="[value->name]" id="[value->name]" value="{$content->{$value->name}}" placeholder="请上传[value->description]" class="layui-input">
</div>
<button type="button" class="layui-btn upload watermark" data-des="[value->name]">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
{php}$name=$value->name; {/php}
<div id="[value->name]_box" class="pic"><dl><dt>{if([$content]->$name)}<img src='{SITE_DIR}{$content->{$value->name}}' data-url="{$content->{$value->name}}"></dt><dd>删除</dd></dl>{/if}</div>
</div>
{/if}
{if($value->type==6)}<!-- 文件 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-inline">
<input type="text" name="[value->name]" id="[value->name]" value="{$content->{$value->name}}" placeholder="请上传[value->description]" class="layui-input">
</div>
<button type="button" class="layui-btn file" data-des="[value->name]">
<i class="layui-icon">&#xe67c;</i>上传文件
</button>
</div>
{/if}
{if($value->type==7)}<!-- 日期 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-block">
<input type="text" name="[value->name]" value="{$content->{$value->name}}" readonly placeholder="请选择[value->description]" class="layui-input datetime">
</div>
</div>
{/if}
{if($value->type==8)}<!-- 编辑器 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-block">
{php}
$name=@$value->name;
{/php}
<script type="text/plain" id="editor_[value->name]" name="[value->name]" style="width:100%;height:240px;">{fun=decode_string([$content->$name])}</script>
<script>
//初始化编辑器
$(document).ready(function (e) {
var ue = UE.getEditor('editor_[value->name]',{
maximumWords:10000
});
})
</script>
</div>
</div>
{/if}
{if($value->type==9)}<!-- 下拉 -->
<div class="layui-form-item">
<label class="layui-form-label">[value->description]</label>
<div class="layui-input-block">
<select name="[value->name]">
{php}
$selects=explode(',',$value->value);
$name=$value->name;
foreach ($selects as $value2) {
if($this->vars['content']->$name==$value2){
echo '<option value="'.$value2.'" selected>'.$value2.'</option>';
}else{
echo '<option value="'.$value2.'">'.$value2.'</option>';
}
}
{/php}
</select>
</div>
</div>
{/if}
{/foreach}
<div class="layui-form-item">
<label class="layui-form-label">内容</label>
<div class="layui-input-block">
<script type="text/plain" id="editor" name="content" style="width:100%;height:240px;">{fun=decode_string([$content->content])}</script>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">tags</label>
<div class="layui-input-block">
<input type="text" name="tags" placeholder="请输入文章tag英文逗号隔开" value="{$content->tags}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">作者</label>
<div class="layui-input-block">
<input type="text" name="author" placeholder="请输入作者" value="{$content->author}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">来源</label>
<div class="layui-input-block">
<input type="text" name="source" placeholder="请输入来源" value="{$content->source}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">缩略图</label>
<div class="layui-input-inline">
<input type="text" name="ico" id="ico" value="{$content->ico}" placeholder="请上传缩略图" class="layui-input">
</div>
<button type="button" class="layui-btn upload watermark" data-des="ico">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div id="ico_box" class="pic addedit">{if([$content->ico])}<dl><dt><img src="{SITE_DIR}{$content->ico}" data-url="{$content->ico}"></dt><dd>删除</dd></dl>{/if}</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">轮播多图</label>
<div class="layui-input-inline">
<input type="text" name="pics" id="pics" value="{$content->pics}" placeholder="请上传轮播多图" class="layui-input">
</div>
<button type="button" class="layui-btn uploads watermark" data-des="pics">
<i class="layui-icon">&#xe67c;</i>上传多图
</button>
<div id="pics_box" class="pic addedit">
<dl></dl> <!-- 规避空内容拖动bug -->
{php}
if([$content->pics]){
$pics=explode(',',[$content->pics]);
}else{
$pics = array();
}
if([$content->picstitle]){
$picstitle=explode(',',[$content->picstitle]);
}else{
$picstitle = array();
}
foreach ($pics as $key=>$value) {
//需要留一个空,不然被解析为标签了
echo "<dl><dt><img src='".SITE_DIR.$value."' data-url='".$value."'></dt><dd>删除</dd><dt><input type='text' value='".$picstitle[$key ]."' name='picstitle[]' style='width:95%' /></dt></dl>";
}
{/php}
</div>
</div>
</div>
<div class="layui-tab-item ">
<div class="layui-form-item">
<label class="layui-form-label">标题颜色</label>
<div class="layui-input-inline">
<input type="text" name="titlecolor" value="{$content->titlecolor}" placeholder="请选择标题颜色" class="layui-input jscolor {hash:true}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">副标题</label>
<div class="layui-input-block">
<input type="text" name="subtitle" value="{$content->subtitle}" placeholder="请输入副标题" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">时间</label>
<div class="layui-input-inline">
<input type="text" name="date" value="{$content->date}" readonly placeholder="请选择发布时间" class="layui-input datetime">
</div>
<div class="layui-form-mid layui-word-aux">温馨提示:单页不支持定时发布!</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">附件</label>
<div class="layui-input-inline">
<input type="text" name="enclosure" id="enclosure" value="{$content->enclosure}" placeholder="请上传附件" class="layui-input">
</div>
<button type="button" class="layui-btn file" data-des="enclosure">
<i class="layui-icon">&#xe67c;</i>上传附件
</button>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO关键字</label>
<div class="layui-input-block">
<input type="text" name="keywords" value="{$content->keywords}" placeholder="请输入详情页SEO关键字" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SEO描述</label>
<div class="layui-input-block">
<textarea name="description" placeholder="请输入详情页SEO描述" class="layui-textarea">{$content->description}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="status" value="1" title="显示" {if([$content->status]==1)} checked="checked"{/if}>
<input type="radio" name="status" value="0" title="隐藏" {if([$content->status]==0)} checked="checked"{/if}>
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit>立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
{fun=get_btn_back()}
</div>
</div>
</form>
</div>
</div>
</div>
{/if}
</div>
<style>.placeHolder {border:dashed 2px gray; }</style>
<script type="text/javascript" src="{APP_THEME_DIR}/js/jquery.dragsort-0.5.2.min.js"></script>
<script type="text/javascript">
$("#pics_box").dragsort({
dragSelector: "dl",
dragSelectorExclude: "input,textarea,dd",
dragBetween: false,
dragEnd: saveOrder,
placeHolderTemplate: "<dl class='placeHolder'><dt></dt></dl>"
});
function saveOrder() {
var data = $("#pics_box dl dt img").map(function() {
return $(this).data("url");
}).get();
$("input[name=pics]").val(data.join(","))
};
</script>
<script type="text/javascript" src="{APP_THEME_DIR}/js/jscolor.js"></script>
{include file='common/ueditor.html'}
{include file='common/foot.html'}

View File

@@ -0,0 +1,107 @@
{include file='common/head.html'}
<div class="layui-body">
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this">站点信息</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="{url./admin/Site/mod}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">站点标题</label>
<div class="layui-input-block">
<input type="text" name="title" value="{$sites->title}" placeholder="请输入站点标题" class="layui-input">
</div>
</div>
<!-- <div class="layui-form-item">
<label class="layui-form-label">站点副标题</label>
<div class="layui-input-block">
<input type="text" name="subtitle" value="{$sites->subtitle}" placeholder="请输入站点副标题" class="layui-input">
</div>
</div>-->
<div class="layui-form-item">
<label class="layui-form-label">站点域名</label>
<div class="layui-input-block">
<input type="text" name="domain" value="{$sites->domain}" placeholder="请输入站点域名" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">站点LOGO</label>
<div class="layui-input-inline">
<input type="text" name="logo" id="logo" value="{$sites->logo}" placeholder="请上传站点LOGO图" class="layui-input">
</div>
<button type="button" class="layui-btn upload" data-des="logo">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div id="logo_box" class="pic"><dl><dt>{if(@[$sites->logo])}<img src="{SITE_DIR}{$sites->logo}" data-url="{$sites->logo}"></dt><dd>删除</dd></dl>{/if}</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">站点关键字</label>
<div class="layui-input-block">
<input type="text" name="keywords" value="{$sites->keywords}" placeholder="请输入站点关键字" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">站点描述</label>
<div class="layui-input-block">
<textarea name="description" placeholder="请输入站点描述" class="layui-textarea">{$sites->description}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">站点备案</label>
<div class="layui-input-block">
<input type="text" name="icp" value="{$sites->icp}" placeholder="请输入站点备案" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">站点模板</label>
<div class="layui-input-block">
<select name="theme">
{foreach $themes(key,value)}
{if($value == [$sites->theme])}
<option value="[value]" selected='selected'>[value]</option>
{else}
<option value="[value]">[value]</option>
{/if}
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">统计代码</label>
<div class="layui-input-block">
<textarea name="statistical" placeholder="请输入统计代码" class="layui-textarea">{$sites->statistical}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">尾部信息</label>
<div class="layui-input-block">
<textarea name="copyright" placeholder="请输入尾部信息" class="layui-textarea">{$sites->copyright}</textarea>
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit>立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{include file='common/foot.html'}

View File

@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="renderer" content="webkit">
<title>{CMSNAME}管理中心-V{APP_VERSION}-{RELEASE_TIME}</title>
<link rel="shortcut icon" href="{SITE_DIR}/favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="{APP_THEME_DIR}/layui/css/layui.css?v=v2.5.4">
<link rel="stylesheet" href="{APP_THEME_DIR}/font-awesome/css/font-awesome.min.css?v=v4.7.0" type="text/css">
<link rel="stylesheet" href="{APP_THEME_DIR}/css/login.css?v=v1.1.6">
<script type="text/javascript" src="{APP_THEME_DIR}/js/jquery-1.12.4.min.js"></script>
</head>
<body>
<div class="user-login" >
<div class="user-login-main">
<div class="user-login-header">
<h2>
网站管理中心
</h2>
<p>高效、简洁、强悍的PHP企业网站管理系统</p>
</div>
<form action="{url./admin/Index/login}" onsubmit="return false" class="layui-form" id="dologin">
<input type="hidden" name="formcheck" id="formcheck" value="{$formcheck}" >
<div class="user-login-box">
<div class="layui-form-item">
<label class="user-login-icon layui-icon layui-icon-username"></label>
<input name="username" id="username" type="text" lay-verify="required" placeholder="用户名" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-item">
<label class="user-login-icon layui-icon layui-icon-password"></label>
<input name="password" id="password" type="password" lay-verify="required" placeholder="密码" autocomplete="off" class="layui-input">
</div>
{if([$config.admin_check_code])}
<div class="layui-form-item">
<div class="layui-row">
<div class="layui-col-xs7 layui-col-sm8">
<label class="user-login-icon layui-icon layui-icon-vercode" ></label>
<input name="checkcode" id="checkcode" type="text" lay-verify="required" placeholder="验证码" autocomplete="off" class="layui-input">
</div>
<div class="layui-col-xs5 layui-col-sm4">
<div style="margin-left: 10px;">
<img title="点击刷新" src="{CORE_DIR}/code.php" class="user-login-codeimg" id="codeimg" onclick="this.src='{CORE_DIR}/code.php?'+Math.round(Math.random()*10);" />
</div>
</div>
</div>
</div>
{/if}
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="login-submit" >登 录</button>
</div>
<div style="color:red;" id="note"></div>
</div>
</form>
</div>
<div class="layui-trans user-login-footer">
<p>© 2018-{fun=date('Y')}</p>
</div>
</div>
<script type="text/javascript" src="{APP_THEME_DIR}/layui/layui.all.js?v=v2.5.4"></script>
<script type="text/javascript" src="{APP_THEME_DIR}/js/mylayui.js?v=v1.1.6"></script>
<!-- 让IE8/9支持媒体查询从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</body>
</html>

View File

@@ -0,0 +1,806 @@
{include file='common/head.html'}
<div class="layui-body">
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="t1">基本配置</li>
<li lay-id="t2">邮件通知</li>
<li lay-id="t3">百度接口</li>
<li lay-id="t4">WebAPI</li>
<li lay-id="t5">图片水印</li>
<li lay-id="t6">安全配置</li>
<li lay-id="t7">URL规则</li>
<li lay-id="t8">标题样式</li>
<li lay-id="t9">会员配置</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">网站状态</label>
<div class="layui-input-block">
<input type="radio" name="close_site" value="1" {if([$configs.close_site.value]==1)} checked="checked" {/if} title="关闭">
<input type="radio" name="close_site" value="0" {if([$configs.close_site.value]==0)} checked="checked" {/if} title="开启">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">关站提示</label>
<div class="layui-input-inline">
<textarea name="close_site_note" placeholder="" class="layui-textarea">{$configs.close_site_note.value}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">独立手机版</label>
<div class="layui-input-block">
<input type="radio" name="open_wap" value="1" {if([$configs.open_wap.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="open_wap" value="0" {if([$configs.open_wap.value]==0)} checked="checked" {/if} title="禁用">
<span class="layui-icon layui-icon-about tips" data-content="使用响应式模板的用户请不要开启!"></span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">手机版域名绑定</label>
<div class="layui-input-inline">
<input type="text" name="wap_domain" value="{$configs.wap_domain.value}" placeholder="如m.baidu.com" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">动态缓存</label>
<div class="layui-input-block">
<input type="radio" name="tpl_html_cache" value="1" {if([$configs.tpl_html_cache.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="tpl_html_cache" value="0" {if([$configs.tpl_html_cache.value]==0)} checked="checked" {/if} title="禁用">
<span class="layui-icon layui-icon-about tips" data-content="本功能效果接近生成静态,开启后将提高前端访问速度及并发能力!"></span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">缓存有效期(秒)</label>
<div class="layui-input-inline">
<input type="text" name="tpl_html_cache_time" value="{$configs.tpl_html_cache_time.value}" placeholder="请输入缓存有效期(秒)" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">Gzip页面压缩</label>
<div class="layui-input-block">
<input type="radio" name="gzip" value="1" {if([$configs.gzip.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="gzip" value="0" {if([$configs.gzip.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会话文件路径</label>
<div class="layui-input-block">
<input type="radio" name="session_in_sitepath" value="1" {if([$configs.session_in_sitepath.value]==1)} checked="checked" {/if} title="站内">
<input type="radio" name="session_in_sitepath" value="0" {if([$configs.session_in_sitepath.value]==0)} checked="checked" {/if} title="系统">
<span class="layui-icon layui-icon-about tips" data-content="站内则使用站点下runtime路径系统则使用操作系统的缓存路径"></span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">跨语言自动切换</label>
<div class="layui-input-block">
<input type="radio" name="lgautosw" value="1" {if([$configs.lgautosw.value]=='1'||[$configs.lgautosw.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="lgautosw" value="0" {if([$configs.lgautosw.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">自动转HTTPS</label>
<div class="layui-input-block">
<input type="radio" name="to_https" value="1" {if([$configs.to_https.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="to_https" value="0" {if([$configs.to_https.value]==0)} checked="checked" {/if} title="禁用">
<span class="layui-icon layui-icon-about tips" data-content="访问非HTPPS地址时自动跳转"></span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">自动转主域名</label>
<div class="layui-input-block">
<input type="radio" name="to_main_domain" value="1" {if([$configs.to_main_domain.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="to_main_domain" value="0" {if([$configs.to_main_domain.value]==0)} checked="checked" {/if} title="禁用">
<span class="layui-icon layui-icon-about tips" data-content="访问非主域名地址时自动跳转!"></span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">网站主域名</label>
<div class="layui-input-inline">
<input type="text" name="main_domain" value="{$configs.main_domain.value}" placeholder="如www.baidu.com" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">分页数字条数量</label>
<div class="layui-input-inline">
<input type="text" name="pagenum" value="{$configs.pagenum.value}" placeholder="请输入前端分页数字条显示数量" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内链替换次数</label>
<div class="layui-input-inline">
<input type="text" name="content_tags_replace_num" value="{$configs.content_tags_replace_num.value}" placeholder="请输入文章内链替换次数默认3次" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">敏感词过滤</label>
<div class="layui-input-inline">
<textarea name="content_keyword_replace" placeholder="请输入需要过滤的关键词,多个之间逗号隔开" class="layui-textarea">{$configs.content_keyword_replace.value}</textarea>
<div class="layui-form-mid layui-word-aux">注:多个敏感词之间用逗号隔开!</div>
</div>
</div>
{if(LICENSE<2)}
<div class="layui-form-item">
<label class="layui-form-label">系统授权码</label>
<div class="layui-input-inline">
<input type="text" name="sn" value="{$configs.sn.value}" placeholder="请输入授权码,多个授权码用逗号隔开" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">授权码手机</label>
<div class="layui-input-inline">
<input type="text" name="sn_user" value="{$configs.sn_user.value}" placeholder="请购买了万能授权码的用户填写" class="layui-input">
</div>
</div>
{/if}
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="basic">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">服务器状态 </label>
<div class="layui-input-block" style="line-height:36px;">
stream_socket_client函数<i class="layui-icon layui-icon-ok-circle" style="color: {php}echo function_exists('stream_socket_client')?'#5FB878':'#f2f2f2';{/php}"></i>&nbsp;&nbsp;&nbsp;
fsockopen函数 <i class="layui-icon layui-icon-ok-circle" style="color: {php}echo function_exists('fsockopen')?'#5FB878':'#f2f2f2';{/php}"></i>
<span class="layui-icon layui-icon-about tips" data-content="至少需要支持其中一个函数才能正常使用!"></span>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SMTP服务器</label>
<div class="layui-input-inline">
<input type="text" name="smtp_server" value="{$configs.smtp_server.value}" placeholder="请输入SMTP服务器" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">SMTP端口</label>
<div class="layui-input-inline">
<input type="text" name="smtp_port" value="{$configs.smtp_port.value}" placeholder="请输入SMTP端口,一般SSL为465普通为25" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否为SSL</label>
<div class="layui-input-block">
<input type="radio" name="smtp_ssl" value="1" {if([$configs.smtp_ssl.value]==1)} checked="checked" {/if} title="是">
<input type="radio" name="smtp_ssl" value="0" {if([$configs.smtp_ssl.value]==0)} checked="checked" {/if} title="否">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱账号</label>
<div class="layui-input-inline">
<input type="text" name="smtp_username" value="{$configs.smtp_username.value}" placeholder="请输入邮箱账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">邮箱密码</label>
<div class="layui-input-inline">
<input type="password" name="smtp_password" value="{$configs.smtp_password.value}" placeholder="请输入邮箱密码或邮箱授权码" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">测试账号</label>
<div class="layui-input-inline">
<input type="text" name="smtp_username_test" id="smtp_username_test" value="{$configs.smtp_username_test.value}" placeholder="请输入用于接受测试邮件的账号" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">留言发送邮件</label>
<div class="layui-input-block">
<input type="radio" name="message_send_mail" value="1" {if([$configs.message_send_mail.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="message_send_mail" value="0" {if([$configs.message_send_mail.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">表单发送邮件</label>
<div class="layui-input-block">
<input type="radio" name="form_send_mail" value="1" {if([$configs.form_send_mail.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="form_send_mail" value="0" {if([$configs.form_send_mail.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">评论发送邮件</label>
<div class="layui-input-block">
<input type="radio" name="comment_send_mail" value="1" {if([$configs.comment_send_mail.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="comment_send_mail" value="0" {if([$configs.comment_send_mail.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">信息接收邮箱</label>
<div class="layui-input-inline">
<input type="text" name="message_send_to" value="{$configs.message_send_to.value}" placeholder="请输入信息接收邮箱" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="email">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<a href="{url./admin/Config/index/action/sendemail}" onclick="return sendtest(this,'#smtp_username_test')" class="layui-btn layui-btn-primary">发送测试邮件</a>
</div>
</div>
<script>
function sendtest(obj,to){
$(obj).attr('href',$(obj).attr('href')+'&to='+$(to).val());
return true;
}
</script>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">普通收录token</label>
<div class="layui-input-inline">
<input type="text" name="baidu_zz_token" value="{$configs.baidu_zz_token.value}" placeholder="请输入普通收录token" class="layui-input">
</div>
<span class="layui-icon layui-icon-about tips" data-content="请到百度站长中心获取!"></span>
</div>
<div class="layui-form-item">
<label class="layui-form-label">快速收录token</label>
<div class="layui-input-inline">
<input type="text" name="baidu_ks_token" value="{$configs.baidu_ks_token.value}" placeholder="请输入快速收录token" class="layui-input">
</div>
<span class="layui-icon layui-icon-about tips" data-content="请到百度站长中心获取!"></span>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="baidu">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">API状态</label>
<div class="layui-input-block">
<input type="radio" name="api_open" value="1" {if(@[$configs.api_open.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="api_open" value="0" {if(@[$configs.api_open.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">API强制认证</label>
<div class="layui-input-block">
<input type="radio" name="api_auth" value="1" {if(@[$configs.api_auth.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="api_auth" value="0" {if(@[$configs.api_auth.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">API认证用户</label>
<div class="layui-input-inline">
<input type="text" name="api_appid" value="{$configs.api_appid.value}" placeholder="请输入API认证用户名" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">API认证密钥</label>
<div class="layui-input-inline">
<input type="password" name="api_secret" value="{$configs.api_secret.value}" placeholder="请输入API认证密钥" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="api">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-block">
<input type="radio" name="watermark_open" value="1" {if(@[$configs.watermark_open.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="watermark_open" value="0" {if(@[$configs.watermark_open.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">水印文字</label>
<div class="layui-input-inline">
<input type="text" name="watermark_text" value="{$configs.watermark_text.value}" placeholder="请输入水印文字PbootCMS" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文字字体</label>
<div class="layui-input-inline">
<input type="text" name="watermark_text_font" id="watermark_text_font" value="{$configs.watermark_text_font.value}" placeholder="请上传水印文字字体" class="layui-input">
</div>
<button type="button" class="layui-btn file" data-des="watermark_text_font">
<i class="layui-icon">&#xe67c;</i>上传字体
</button>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文字大小</label>
<div class="layui-input-inline">
<input type="text" name="watermark_text_size" value="{$configs.watermark_text_size.value}" placeholder="请输入水印文字大小20" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">文字颜色</label>
<div class="layui-input-inline">
<input type="text" name="watermark_text_color" value="{$configs.watermark_text_color.value}" placeholder="请输入水印文字颜色100,100,100" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">水印图片</label>
<div class="layui-input-inline">
<input type="text" name="watermark_pic" id="watermark_pic" value="{$configs.watermark_pic.value}" placeholder="请上传水印图片,优先文字水印" class="layui-input">
</div>
<button type="button" class="layui-btn upload" data-des="watermark_pic">
<i class="layui-icon">&#xe67c;</i>上传图片
</button>
<div id="watermark_pic_box" class="pic"><dl><dt>{if(@[$configs.watermark_pic.value])}<img src="{SITE_DIR}{$configs.watermark_pic.value}" data-url="{$configs.watermark_pic.value}"></dt><dd>删除</dd></dl>{/if}</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">水印位置</label>
<div class="layui-input-block">
<input type="radio" name="watermark_position" value="1" {if(@[$configs.watermark_position.value]==1)} checked="checked" {/if} title="左上">
<input type="radio" name="watermark_position" value="2" {if(@[$configs.watermark_position.value]==2)} checked="checked" {/if} title="右上">
<input type="radio" name="watermark_position" value="3" {if(@[$configs.watermark_position.value]==3)} checked="checked" {/if} title="左下">
<input type="radio" name="watermark_position" value="4" {if(@[$configs.watermark_position.value]==4)} checked="checked" {/if} title="右下">
<input type="radio" name="watermark_position" value="5" {if(@[$configs.watermark_position.value]==5)} checked="checked" {/if} title="中间">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="watermark">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">留言功能</label>
<div class="layui-input-block">
<input type="radio" name="message_status" value="1" {if([$configs.message_status.value]=='1'||[$configs.message_status.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="message_status" value="0" {if([$configs.message_status.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">留言验证码</label>
<div class="layui-input-block">
<input type="radio" name="message_check_code" value="1" {if([$configs.message_check_code.value]=='1'||[$configs.message_check_code.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="message_check_code" value="0" {if([$configs.message_check_code.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">留言审核</label>
<div class="layui-input-block">
<input type="radio" name="message_verify" value="1" {if([$configs.message_verify.value]=='1'||[$configs.message_verify.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="message_verify" value="0" {if([$configs.message_verify.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">留言需登录</label>
<div class="layui-input-block">
<input type="radio" name="message_rqlogin" value="1" {if([$configs.message_rqlogin.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="message_rqlogin" value="0" {if([$configs.message_rqlogin.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">表单功能</label>
<div class="layui-input-block">
<input type="radio" name="form_status" value="1" {if([$configs.form_status.value]=='1'||[$configs.form_status.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="form_status" value="0" {if([$configs.form_status.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">表单验证码</label>
<div class="layui-input-block">
<input type="radio" name="form_check_code" value="1" {if([$configs.form_check_code.value]=='1'||[$configs.form_check_code.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="form_check_code" value="0" {if([$configs.form_check_code.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">模板子目录</label>
<div class="layui-input-inline">
<input type="text" name="tpl_html_dir" value="{$configs.tpl_html_dir.value}" placeholder="首次请手动移动模板文件到填写的目录!" class="layui-input">
</div>
<span class="layui-icon layui-icon-about tips" data-content="一定程度上防盗,如填 html则默认模板情况下路径为 default/html 目录!"></span>
</div>
<div class="layui-form-item">
<label class="layui-form-label">IP黑名单</label>
<div class="layui-input-inline">
<textarea name="ip_deny" placeholder="请输入需要禁止访问的IP多个之间逗号隔开IP地址支持使用/掩码位数模式192.168.1.0/24, 192.168.2.100" class="layui-textarea">{$configs.ip_deny.value}</textarea>
</div>
<span class="layui-icon layui-icon-about tips" data-content="请输入需要禁止访问的IP多个之间逗号隔开IP地址支持使用/掩码位数模式192.168.1.0/24, 192.168.2.100"></span>
</div>
<div class="layui-form-item">
<label class="layui-form-label">IP白名单</label>
<div class="layui-input-inline">
<textarea name="ip_allow" placeholder="请输入需要允许访问的IP多个之间逗号隔开IP地址支持使用/掩码位数模式192.168.1.0/24, 192.168.2.100" class="layui-textarea">{$configs.ip_allow.value}</textarea>
</div>
<span class="layui-icon layui-icon-about tips" data-content="请输入需要允许访问的IP多个之间逗号隔开IP地址支持使用/掩码位数模式192.168.1.0/24,192.168.2.100"></span>
</div>
<hr>
<div class="layui-form-item">
<label class="layui-form-label">后台验证码</label>
<div class="layui-input-block">
<input type="radio" name="admin_check_code" value="1" {if([$configs.admin_check_code.value]=='1'||[$configs.admin_check_code.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="admin_check_code" value="0" {if([$configs.admin_check_code.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">后台登录阀值</label>
<div class="layui-input-inline">
<input type="text" name="lock_count" value="{$configs.lock_count.value}" placeholder="请输入后台登录失败几次后锁定IP默认5次" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">失败锁定时间</label>
<div class="layui-input-inline">
<input type="text" name="lock_time" value="{$configs.lock_time.value}" placeholder="请输入后台登录异常锁定时间默认为900秒" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux"></div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="security">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">地址模式</label>
<div class="layui-input-block">
<P>
<input type="radio" name="url_rule_type" value="1" {if([$configs.url_rule_type.value]==1)} checked="checked" {/if} title="普通模式,类似:/index.php/product/1.html">
<span class="layui-icon layui-icon-about tips" data-content="基本模式需要服务器支持pathinfo,特别是nginx下pathinfo要手动配置"></span>
</P>
<P>
<input type="radio" name="url_rule_type" value="2" {if([$configs.url_rule_type.value]==2)} checked="checked" {/if} title="伪静态模式,类似:/product/1.html">
<span class="layui-icon layui-icon-about tips" data-content="伪静态时需要服务器环境的支持,并需要添加伪静态规则!"></span>
</P>
<P>
<input type="radio" name="url_rule_type" value="3" {if([$configs.url_rule_type.value]==3||![$configs.url_rule_type.value])} checked="checked" {/if} title="兼容模式,类似:/?product/1.html">
</P>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">栏目显示后缀</label>
<div class="layui-input-block">
<input type="radio" name="url_rule_sort_suffix" value="1" {if([$configs.url_rule_sort_suffix.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="url_rule_sort_suffix" value="0" {if([$configs.url_rule_sort_suffix.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="urlrule">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">常用组合标签: </label>
<div class="layui-input-block" style="line-height:36px;">
<p>全局标签:{pboot:sitetitle}站点标题、{pboot:sitesubtitle}站点副标题</p>
<p>列表或内容页:{sort:name}栏目名称、{sort:title}栏目标题</p>
<p>内容页:{content:title}内容标题</p>
<p>搜索结果页:{pboot:keyword}搜索关键字</p>
<p>个人中心:{user:nickname}会员昵称</p>
<p>例如定义内容页样式:{content:title}-{sort:name}-{pboot:sitetitle}-{pboot:sitesubtitle}</p>
<p>以下配置参数不设置时将使用系统默认规则。</p>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">首页</label>
<div class="layui-input-block">
<input type="text" name="index_title" value="{$configs.index_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">专题页</label>
<div class="layui-input-block">
<input type="text" name="about_title" value="{$configs.about_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">列表页</label>
<div class="layui-input-block">
<input type="text" name="list_title" value="{$configs.list_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">内容页</label>
<div class="layui-input-block">
<input type="text" name="content_title" value="{$configs.content_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">搜索结果页</label>
<div class="layui-input-block">
<input type="text" name="search_title" value="{$configs.search_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员注册页</label>
<div class="layui-input-block">
<input type="text" name="register_title" value="{$configs.register_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员登录页</label>
<div class="layui-input-block">
<input type="text" name="login_title" value="{$configs.login_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">个人中心页</label>
<div class="layui-input-block">
<input type="text" name="ucenter_title" value="{$configs.ucenter_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">资料修改页</label>
<div class="layui-input-block">
<input type="text" name="umodify_title" value="{$configs.umodify_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">其它页</label>
<div class="layui-input-block">
<input type="text" name="other_title" value="{$configs.other_title.value}" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="pagetitle">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
<div class="layui-tab-item">
<form action="{url./admin/Config/index}" method="post" class="layui-form">
<input type="hidden" name="formcheck" value="{$formcheck}" >
<div class="layui-form-item">
<label class="layui-form-label">会员注册</label>
<div class="layui-input-block">
<input type="radio" name="register_status" value="1" {if([$configs.register_status.value]=='1'||[$configs.register_status.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="register_status" value="0" {if([$configs.register_status.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员注册类型</label>
<div class="layui-input-block">
<input type="radio" name="register_type" value="1" {if([$configs.register_type.value]=='1'||[$configs.register_type.value]=='')} checked="checked" {/if} title="用户名">
<input type="radio" name="register_type" value="2" {if([$configs.register_type.value]=='2')} checked="checked" {/if} title="邮箱账号">
<input type="radio" name="register_type" value="3" {if([$configs.register_type.value]=='3')} checked="checked" {/if} title="手机号码">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员注册验证码</label>
<div class="layui-input-block">
<input type="radio" name="register_check_code" value="0" {if([$configs.register_check_code.value]=='0')} checked="checked" {/if} title="禁用">
<input type="radio" name="register_check_code" value="1" {if([$configs.register_check_code.value]=='1'||[$configs.register_check_code.value]=='')} checked="checked" {/if} title="普通验证码">
<input type="radio" name="register_check_code" value="2" {if([$configs.register_check_code.value]=='2')} checked="checked" {/if} title="邮箱验证码">
<!-- <input type="radio" name="register_check_code" value="3" {if([$configs.register_check_code.value]=='3')} checked="checked" {/if} title="短信验证码"> -->
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员注册审核</label>
<div class="layui-input-block">
<input type="radio" name="register_verify" value="1" {if([$configs.register_verify.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="register_verify" value="0" {if([$configs.register_verify.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员登录</label>
<div class="layui-input-block">
<input type="radio" name="login_status" value="1" {if([$configs.login_status.value]=='1'||[$configs.login_status.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="login_status" value="0" {if([$configs.login_status.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员登录验证码</label>
<div class="layui-input-block">
<input type="radio" name="login_check_code" value="1" {if([$configs.login_check_code.value]=='1'||[$configs.login_check_code.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="login_check_code" value="0" {if([$configs.login_check_code.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">不等待跳登录</label>
<div class="layui-input-block">
<input type="radio" name="login_no_wait" value="1" {if([$configs.login_no_wait.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="login_no_wait" value="0" {if([$configs.login_no_wait.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">评论功能</label>
<div class="layui-input-block">
<input type="radio" name="comment_status" value="1" {if([$configs.comment_status.value]=='1'||[$configs.comment_status.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="comment_status" value="0" {if([$configs.comment_status.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">匿名评论</label>
<div class="layui-input-block">
<input type="radio" name="comment_anonymous" value="1" {if([$configs.comment_anonymous.value]==1)} checked="checked" {/if} title="启用">
<input type="radio" name="comment_anonymous" value="0" {if([$configs.comment_anonymous.value]==0)} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">评论验证码</label>
<div class="layui-input-block">
<input type="radio" name="comment_check_code" value="1" {if([$configs.comment_check_code.value]=='1'||[$configs.comment_check_code.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="comment_check_code" value="0" {if([$configs.comment_check_code.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">评论审核</label>
<div class="layui-input-block">
<input type="radio" name="comment_verify" value="1" {if([$configs.comment_verify.value]=='1'||[$configs.comment_verify.value]=='')} checked="checked" {/if} title="启用">
<input type="radio" name="comment_verify" value="0" {if([$configs.comment_verify.value]=='0')} checked="checked" {/if} title="禁用">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员注册积分</label>
<div class="layui-input-inline">
<input type="text" name="register_score" value="{$configs.register_score.value}" placeholder="请输入会员注册初始积分" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员登录积分</label>
<div class="layui-input-inline">
<input type="text" name="login_score" value="{$configs.login_score.value}" placeholder="请输入会员每次登录积分" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">会员默认等级</label>
<div class="layui-input-inline">
<select name="register_gcode">
<option value="">请选择</option>
{foreach $groups(key,value)}
<option value="[value->gcode]" {if([$configs.register_gcode.value]==$value->gcode)}selected{/if}>[value->gname]</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">允许上传格式</label>
<div class="layui-input-inline">
<input type="text" name="home_upload_ext" value="{$configs.home_upload_ext.value}" placeholder="以英文逗号隔开!" class="layui-input">
</div>
<span class="layui-icon layui-icon-about tips" data-content="以英文逗号隔开默认jpg, jpeg, png, gif, xls, xlsx, doc, docx, ppt, pptx, rar, zip, pdf, txt"></span>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" lay-submit name="submit" value="member">立即提交</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{include file='common/foot.html'}

View File

@@ -0,0 +1,173 @@
{include file='common/head.html'}
<div class="layui-body">
{if(![$dbsecurity]||![$session.pwsecurity])}
<blockquote class="layui-elem-quote layui-text-red" id="note">
{if(![$dbsecurity])}
<p>
<i class="fa fa-info-circle" aria-hidden="true"></i>
您的数据库文件存在安全隐患,可能被下载,请尽快修改数据库路径!<a class="layui-btn layui-btn-sm" href="{url./admin/Index/home}&action=moddb">自动修改</a>
</p>
{/if}
{if(![$session.pwsecurity])}
<p>
<i class="fa fa-info-circle" aria-hidden="true"></i>
您的账号密码为初始密码,存在安全隐患,请尽快修改密码!<a class="layui-btn layui-btn-sm" href="{url./admin/Index/ucenter}">立即修改</a>
</p>
{/if}
</blockquote>
{/if}
<blockquote class="layui-elem-quote">
当前登录用户:{$user_info->username} {$user_info->realname},登录时间:{$user_info->update_time}登录IP{fun=long2ip([$user_info->last_login_ip])},累计登录次数:{$user_info->login_count}
</blockquote>
<fieldset class="layui-elem-field">
<legend>快捷操作</legend>
<div class="layui-field-box">
<div class="layui-row">
{foreach $model_msg(key,value)}
<div class="layui-col-xs6 layui-col-sm4 layui-col-md3 layui-col-lg2">
{if($value->type==1)}
<a href="{url./admin/Single/index/mcode/'.$value->mcode.'}">
{else}
<a href="{url./admin/Content/index/mcode/'.$value->mcode.'}">
{/if}
<dl class="deskbox center-block">
<dt>[value->name]</dt>
<dd>[value->count]</dd>
</dl>
</a>
</div>
{/foreach}
<div class="layui-col-xs6 layui-col-sm4 layui-col-md3 layui-col-lg2">
<a href="{url./admin/Message/index}">
<dl class="deskbox center-block">
<dt>留言</dt>
<dd>{$sum_msg}</dd>
</dl>
</a>
</div>
</div>
</div>
</fieldset>
{if(CMSNAME=='PbootCMS')}
<div class="layui-row layui-col-space10">
<div class="layui-col-xs12 layui-col-md6">
<table class="layui-table table-two">
<thead>
<tr>
<th colspan="2">系统信息</th>
</tr>
</thead>
<tbody>
<tr>
<th width="100">应用版本</th>
<td>PbootCMS V{APP_VERSION}-{RELEASE_TIME}
{if(session('ucode')==10001)}
<a href="{url./admin/Upgrade/index}" class="layui-btn layui-btn-xs" id="check">在线更新</a>
{/if}
</td>
</tr>
<tr>
<th>主机系统</th>
<td>{$server->php_os}</td>
</tr>
<tr>
<th>主机地址</th>
<td>{$server->server_name}{$server->server_addr}:{$server->server_port}</td>
</tr>
<tr>
<th>WEB软件</th>
<td>{$server->server_software}</td>
</tr>
<tr>
<th>PHP版</th>
<td>{$server->php_version}</td>
</tr>
<tr>
<th>数据库驱动</th>
<td>{$server->db_driver}</td>
</tr>
<tr>
<th>文件上传限制</th>
<td>{$server->upload_max_filesize}</td>
</tr>
<tr>
<th>表单提交限制</th>
<td>{$server->post_max_size}</td>
</tr>
</tbody>
</table>
</div>
<div class="layui-col-xs12 layui-col-md6">
<table class="layui-table table-two">
<thead>
<tr>
<th colspan="2">开发信息</th>
</tr>
</thead>
<tbody>
<tr>
<th>系统名称</th>
<td>{CMSNAME}企业网站开发建设管理系统</td>
</tr>
<tr>
<th>官方网站</th>
<td><a href="http://www.pbootcms.com" target="_blank" style="color:#666">www.pbootcms.com</a></td>
</tr>
<tr>
<th>模板下载</th>
<td>
<a href="http://www.adminbuy.cn/" style="color:#666" target="_blank">AB模板网</a>
</td>
</tr>
<tr>
<th>图标下载</th>
<td><a href="http://sc.adminbuy.cn" style="color:#666" target="_blank">图标库</a></td>
</tr>
<tr>
<th>系统开发</th>
<td>星梦</td>
</tr>
<tr>
<th>友情贡献者</th>
<td>
感谢交流群各网友对PbootCMS发展的大力支持
感谢LayUI提供的前端框架
感谢百度提供的富文本编辑器;
感谢星梦开发团队的日夜奋斗。
</td>
</tr>
</tbody>
</table>
</div>
</div>
{/if}
</div>
<script>
$.ajax({
type: 'GET',
url: 'https://www.pbootcms.com/index.php?p=/upgrade/check&version={APP_VERSION}.{RELEASE_TIME}.{$revise}&branch={$branch}&snuser={$snuser}&site={$site}',
dataType: 'json',
success: function (response, status) {
if(response.code==1){
$("#check").html($("#check").html()+'<span class="layui-badge-dot"></span>');
}
}
});
</script>
{include file='common/foot.html'}

View File

@@ -0,0 +1,118 @@
{include file='common/head.html'}
<div class="layui-body">
<div class="layui-tab layui-tab-brief" lay-filter="tab">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="t1">服务器基本信息</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<table class="layui-table table-two">
<thead>
<tr>
<th colspan=2>服务器基本信息</th>
</tr>
</thead>
<tbody>
<tr>
<th>应用版本</th>
<td>PbootCMS V{APP_VERSION}-{RELEASE_TIME}</td>
</tr>
<tr>
<th>框架版本</th>
<td>Pboot V{CORE_VERSION}</td>
</tr>
<tr>
<th>主机系统</th>
<td>{$server->php_os}</td>
</tr>
<tr>
<th>访问地址</th>
<td>{$server->http_host}</td>
</tr>
<tr>
<th>主机名称</th>
<td>{$server->server_name}</td>
</tr>
<tr>
<th>主机地址</th>
<td>{$server->server_addr}</td>
</tr>
<tr>
<th>主机端口</th>
<td>{$server->server_port}</td>
</tr>
<tr>
<th>WEB软件</th>
<td>{$server->server_software}</td>
</tr>
<tr>
<th>PHP版</th>
<td>{$server->php_version}</td>
</tr>
<tr>
<th>数据库驱动</th>
<td>{$server->db_driver}</td>
</tr>
<tr>
<th>文件上传限制</th>
<td>{$server->upload_max_filesize}</td>
</tr>
<tr>
<th>表单提交限制</th>
<td>{$server->post_max_size}</td>
</tr>
<tr>
<th>最大提交数量</th>
<td>{$server->max_file_uploads}</td>
</tr>
<tr>
<th>分配内存限制</th>
<td>{$server->memory_limit}</td>
</tr>
<tr>
<th>GD库支持</th>
<td>{$server->gd}</td>
</tr>
<tr>
<th>Curl支持</th>
<td>{$server->curl}</td>
</tr>
<tr>
<th>加速模块支持</th>
<td>
pthreads{$server->pthreads}
XCache{$server->xcache}
APC{$server->apc}
eAccelerator{$server->eaccelerator}
WinCache{$server->wincache}
ZendOPcache{$server->zendopcache}
Memcache{$server->memcache}
Memcached{$server->memcached}
</td>
</tr>
<tr>
<th>已加载模块</th>
<td>{$server->extensions}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
{include file='common/foot.html'}

View File

@@ -0,0 +1,62 @@
<?php
/**
* @copyright (C)2016-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2018年11月11日
* 单页内容通过分类编码调用接口控制器
*/
namespace app\api\controller;
use core\basic\Controller;
use app\api\model\CmsModel;
use core\basic\Url;
class AboutController extends Controller
{
protected $model;
public function __construct()
{
$this->model = new CmsModel();
}
public function index()
{
if (! ! $scode = request('scode', 'var')) {
// 区域获取
$acode = request('acode', 'var') ?: get_default_lg();
// 读取数据
if (! ! $data = $this->model->getAbout($acode, $scode)) {
if ($data->outlink) {
$data->apilink = $data->outlink;
} else {
$data->apilink = url('/api/content/index/id/' . $data->id, false);
}
$data->likeslink = url('/home/Do/likes/id/' . $data->id, false);
$data->opposelink = url('/home/Do/oppose/id/' . $data->id, false);
$urlname = $data->urlname ?: 'about';
$url_break_char = $this->config('url_break_char') ?: '_';
$url_rule_sort_suffix = $this->config('url_rule_sort_suffix') ? true : null;
if ($data->sortfilename) {
$data->contentlink = Url::home($data->sortfilename, $url_rule_sort_suffix);
} else {
$data->contentlink = Url::home($urlname . $url_break_char . $data->scode, $url_rule_sort_suffix);
}
$data->content = str_replace(STATIC_DIR . '/upload/', get_http_url() . STATIC_DIR . '/upload/', $data->content);
json(1, $data);
} else {
json(0, '分类编码为' . $scode . '的内容已经不存在了!');
}
} else {
json(1, '请求错误传递的内容scode有误');
}
}
}

View File

@@ -0,0 +1,197 @@
<?php
/**
* @copyright (C)2016-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2016年12月25日
* 应用公共控制类
*/
namespace app\common;
use core\basic\Controller;
class AdminController extends Controller
{
public function __construct()
{
// 自动缓存基础信息
cache_config();
// 从配置文件读取cmsname参数来设置系统名称
define("CMSNAME", $this->config("cmsname") ?: 'PbootCMS');
// 检测登录,未登录跳转登录页面,已登录执行数据处理
if ($this->checkLogin()) {
// 权限检测
$this->checkLevel();
$this->getSecondMenu(); // 获取同级菜单
$this->assign('menu_tree', session('menu_tree')); // 注入菜单树
if (session('area_tree')) {
$area_html = make_area_Select(session('area_tree'), session('acode'));
$this->assign('area_html', $area_html);
if (count(session('area_tree')) == 1) {
$this->assign('one_area', true);
}
} else {
session_unset();
error('您账号的区域权限设置有误,无法正常登录!', url('/admin/Index/index'), 10);
}
// 内容模型菜单注入
$models = model('admin.content.Model');
$this->assign('menu_models', $models->getModelMenu());
// 注入编码后的回跳地址
$this->assign('btnqs', get_btn_qs());
$this->assign('backurl', get_backurl());
// 兼容模式form使用get搜索时注入pathinfo隐藏域
if ($_GET['p'] && $this->config('app_url_type') == 3) {
$this->assign('pathinfo', '<input name="p" type="hidden" value="' . get('p') . '">');
}
}
// 不进行表单检验的控制器
$nocheck = array(
'Upgrade'
);
// POST表单提交校验
if ($_POST && ! in_array(C, $nocheck) && session('formcheck') != post('formcheck')) {
// 检查会话目录权限问题
if (session_save_path()) {
preg_match('/^((\s+)?([0-9]+)(\s+)?;)?(.*)/', session_save_path(), $matches);
// 自动创建会话主目录
if (! check_dir($matches[5], true)) {
error('会话目录创建失败!' . $matches[5]);
}
// 检查会话目录写入权限
if (! is_writable($matches[5])) {
error('会话目录权限不足!' . $matches[5]);
}
// 自动创建层级会话目录
if ($matches[3]) {
create_session_dir($matches[5], $matches[3]);
}
} elseif (isset($_SERVER['TMP']) && ! file_exists($_SERVER['TMP'] . '/sess_' . session_id())) {
error(' 操作系统缓存目录写入权限不足!' . $_SERVER['TMP']);
}
alert_back('表单提交校验失败,请刷新后重试!');
}
// 首次加载时,生成页面验证码
if (! issetSession('formcheck')) {
session('formcheck', get_uniqid());
}
$this->assign('formcheck', session('formcheck')); // 注入formcheck模板变量
}
// 后台用户登录状态检查
private function checkLogin()
{
// 免登录可访问页面
$public_path = array(
'/admin/Index/index', // 登录页面
'/admin/Index/login' // 执行登录
);
if (session('sid') && $this->checkSid()) { // 如果已经登录直接true
return true;
} elseif (in_array('/' . M . '/' . C . '/' . F, $public_path)) { // 免登录可访问页面
return false;
} else { // 未登录跳转到登录页面
location(url('/admin/Index/index'));
}
}
// 检查会话id
private function checkSid()
{
$sid = encrypt_string(session_id() . session('id'));
if ($sid != session('sid') || session('M') != M) {
session_destroy();
return false;
} else {
return true;
}
}
// 访问权限检查
private function checkLevel()
{
// 免权限等级认证页面,即所有登录用户都可以访问
$public_path = array(
'/admin/Index/index', // 登录页
'/admin/Index/home', // 主页
'/admin/Index/loginOut', // 退出登录
'/admin/Index/ucenter', // 用户中心
'/admin/Index/area', // 区域选择
'/admin/Index/clearCache', // 清理缓存
'/admin/Index/upload', // 上传文件
'/admin/Index/clearSession' // 清理会话
);
$levals = session('levels');
$path1 = '/' . M . '/' . C;
$path2 = '/' . M . '/' . C . '/' . F;
if (session('id') == 1 || in_array(URL, $levals) || in_array($path2, $levals) || in_array($path1, $public_path) || in_array($path2, $public_path)) {
return true;
} else {
error('您的账号权限不足,您无法执行该操作!');
}
}
// 当前菜单的父类的子菜单,即同级菜单二级菜单
private function getSecondMenu()
{
$menu_tree = session('menu_tree');
$url = '/' . M . '/' . C . '/' . F;
$len = 0;
$primary_menu_url = '';
$second_menu = array();
// 直接比对找出最长匹配URL
foreach ($menu_tree as $key => $value) {
if (is_array($value->son)) {
foreach ($value->son as $key2 => $value2) {
if (! $value2->url) // 如果为空,则跳过
continue;
$pos = strpos($url, $value2->url);
if ($pos !== false) {
$templen = strlen($value2->url);
if ($templen > $len) {
$len = $templen;
$primary_menu_url = $value->url;
$second_menu = $value->son;
}
break; // 如果匹配到已经找到父类,则结束
}
}
}
}
// 前面第一种无法匹配,则选择子菜单匹配,只需控制器通过即可,如翻页、增、改、删操作
if (! $second_menu) {
foreach ($menu_tree as $key => $value) {
if (is_array($value->son)) {
foreach ($value->son as $key2 => $value2) {
if (strpos($value2->url, '/' . M . '/' . C . '/') === 0) {
$primary_menu_url = $value->url;
$second_menu = $value->son;
break;
}
}
}
if ($second_menu) { // 已经获取二级菜单到后退出
break;
}
}
}
$this->assign('primary_menu_url', $primary_menu_url);
$this->assign('second_menu', $second_menu);
}
}

View File

@@ -0,0 +1,12 @@
<?php
return array(
// 应用版本
'app_version' => '3.0.7',
// 发布时间
'release_time' => '20211009',
// 修订版本
'revise_version' => '3'
);

View File

@@ -0,0 +1,317 @@
<?php
/**
* @copyright (C)2016-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2018年2月14日
* 首页控制器
*/
namespace app\home\controller;
use core\basic\Controller;
use app\home\model\ParserModel;
use core\basic\Config;
use core\basic\Url;
class IndexController extends Controller
{
protected $parser;
protected $model;
protected $htmldir;
public function __construct()
{
$this->parser = new ParserController();
$this->model = new ParserModel();
$this->htmldir = $this->config('tpl_html_dir') ? $this->config('tpl_html_dir') . '/' : '';
}
// 空拦截器, 实现文章路由转发
public function _empty()
{
// 地址类型
$url_rule_type = $this->config('url_rule_type') ?: 3;
if (P) { // 采用pathinfo模式及p参数伪静态模式
if ($url_rule_type == 2 && stripos(URL, $_SERVER['SCRIPT_NAME']) !== false) { // 禁止伪静态时带index.php访问
_404('您访问的内容不存在,请核对后重试!');
}
$path = explode('/', P);
if (! defined('URL_BIND')) {
array_shift($path); // 去除模块部分
}
} elseif ($url_rule_type == 3 && isset($_SERVER["QUERY_STRING"]) && $qs = $_SERVER["QUERY_STRING"]) { // 采用简短传参模式
parse_str($qs, $output);
unset($output['page']); // 去除分页
if ($output && ! current($output)) { // 第一个路径参数不能有值,否则非标准路径参数
$path = key($output); // 第一个参数为路径信息注意PHP数组会自动将key点符号转换下划线
$path = trim($path, '/'); // 去除两端斜杠
$url_rule_suffix = substr($this->config('url_rule_suffix'), 1);
if (preg_match('/_' . $url_rule_suffix . '$/', $path) && (! ! $pos = strripos($path, '_' . $url_rule_suffix))) {
$path = substr($path, 0, $pos); // 去扩展
}
$path = explode('/', $path);
} elseif (get('tag')) { // 对于兼容模式tag需要自动跳转tag独立页面
$tag = new TagController();
$tag->index();
} elseif (get('keyword')) { // 兼容模式搜索处理
$search = new SearchController();
$search->index();
}
}
if (isset($path) && is_array($path)) {
switch ($path[0]) {
case 'search':
case 'keyword':
$search = new SearchController();
$search->index();
break;
case 'message':
$msg = new MessageController();
$msg->index();
break;
case 'form':
$_GET['fcode'] = $path[1];
$form = new FormController();
$form->index();
break;
case 'sitemap':
case 'Sitemap':
$sitemap = new SitemapController();
$sitemap->index();
break;
case 'tag':
$tag = new TagController();
$tag->index();
break;
case 'member':
$member = new MemberController();
$member->{$path[1]}();
break;
case 'comment':
$comment = new CommentController();
$comment->{$path[1]}();
break;
default:
if (get($path[0])) {
$this->getIndex();
} else {
// 优先判断全路径
$fullurl = implode('/', $path);
// 详情页匹配前段栏目路径
$sorturl = $path;
$contenturl = array_pop($sorturl);
$sorturl = implode('/', $sorturl);
$url_break_char = $this->config('url_break_char') ?: '_';
// 开始进行匹配
if (! ! $sort = $this->model->getSort($fullurl)) {
// 栏目名称
$iscontent = false;
} elseif (preg_match('/^([a-zA-Z0-9\-\/]+)' . $url_break_char . '([0-9]+)$/i', $fullurl, $matchs) && ! ! $sort = $this->model->getSort($matchs[1])) {
// 栏目名称_分页
$iscontent = false;
define('CMS_PAGE_CUSTOM', true);
$_GET['page'] = $matchs[2]; // 分页
} elseif (! ! $sorturl && ! ! $sort = $this->model->getSort($sorturl)) {
// 栏目名称/内容名称或ID要在第2个判断【栏目名称_分页】后
$data = $this->model->getContent($contenturl);
$iscontent = true;
} elseif (preg_match('/^list' . $url_break_char . '[0-9]+|about' . $url_break_char . '[0-9]+$/', $sorturl)) {
// 模型默认名称_栏目ID/内容名称或ID
$data = $this->model->getContent($contenturl);
$iscontent = true;
} else {
preg_match('/^([a-zA-Z0-9\-\/]+)(' . $url_break_char . '([0-9]+))?' . $url_break_char . '([0-9]+)$/i', $fullurl, $matchs);
if ($matchs[2] && $model = $this->model->checkModelUrlname($matchs[1])) {
// 模型名称_栏目ID_分页
define('CMS_PAGE_CUSTOM', false);
$sort = $this->model->getSort($matchs[3]);
$_GET['page'] = $matchs[4]; // 分页
} elseif (! ! $model = $this->model->checkModelUrlname($matchs[1])) {
// 模型名称_栏目ID
$sort = $this->model->getSort($matchs[4]);
} elseif (preg_match('/^([a-zA-Z0-9\-\/]+)' . $url_break_char . '([0-9]+)$/i', $sorturl, $matchs)) {
// 模型名称_栏目ID/内容名称或ID
if (! ! $model = $this->model->checkModelUrlname($matchs[1])) {
$data = $this->model->getContent($contenturl);
$iscontent = true;
}
}
}
if ($iscontent) {
define('CMS_PAGE', false); // 使用普通分页处理模型
if (! ! $data) {
if ($data->acode != get_lg() && Config::get('lgautosw') !== '0') {
cookie('lg', $data->acode); // 调用内容语言与当前语言不一致时,自动切换语言
}
$this->getContent($data);
} else {
_404('您访问的内容不存在,请核对后重试!');
}
} else {
define('CMS_PAGE', true); // 使用cms分页处理模型
if (! ! $sort) {
if ($sort->acode != get_lg() && Config::get('lgautosw') !== '0') {
cookie('lg', $sort->acode); // 调用栏目语言与当前语言不一致时,自动切换语言
}
if ($sort->type == 1) {
$this->getAbout($sort);
} else {
$this->getList($sort);
}
} else {
_404('您访问的页面不存在,请核对后重试!');
}
}
}
}
} else {
$this->getIndex();
}
}
// 首页
private function getIndex()
{
$content = parent::parser($this->htmldir . 'index.html'); // 框架标签解析
$content = $this->parser->parserBefore($content); // CMS公共标签前置解析
$content = str_replace('{pboot:pagetitle}', $this->config('index_title') ?: '{pboot:sitetitle}-{pboot:sitesubtitle}', $content);
$content = $this->parser->parserPositionLabel($content, - 1, '首页', SITE_INDEX_DIR . '/'); // CMS当前位置标签解析
$content = $this->parser->parserSpecialPageSortLabel($content, 0, '', SITE_INDEX_DIR . '/'); // 解析分类标签
$content = $this->parser->parserAfter($content); // CMS公共标签后置解析
$this->cache($content, true);
}
// 列表
private function getList($sort)
{
if ($sort->listtpl) {
$this->checkPageLevel($sort->gcode, $sort->gtype, $sort->gnote);
$content = parent::parser($this->htmldir . $sort->listtpl); // 框架标签解析
$content = $this->parser->parserBefore($content); // CMS公共标签前置解析
$pagetitle = $sort->title ? "{sort:title}" : "{sort:name}"; // 页面标题
$content = str_replace('{pboot:pagetitle}', $this->config('list_title') ?: ($pagetitle . '-{pboot:sitetitle}-{pboot:sitesubtitle}'), $content);
$content = str_replace('{pboot:pagekeywords}', '{sort:keywords}', $content);
$content = str_replace('{pboot:pagedescription}', '{sort:description}', $content);
$content = $this->parser->parserPositionLabel($content, $sort->scode); // CMS当前位置标签解析
$content = $this->parser->parserSortLabel($content, $sort); // CMS分类信息标签解析
$content = $this->parser->parserListLabel($content, $sort->scode); // CMS分类列表标签解析
$content = $this->parser->parserAfter($content); // CMS公共标签后置解析
} else {
error('请到后台设置分类栏目列表页模板!');
}
$this->cache($content, true);
}
// 详情页
private function getContent($data)
{
// 读取模板
if (! ! $sort = $this->model->getSort($data->scode)) {
if ($sort->contenttpl) {
$this->checkPageLevel($sort->gcode, $sort->gtype, $sort->gnote); // 检查栏目权限
$this->checkPageLevel($data->gcode, $data->gtype, $data->gnote); // 检查内容权限
$content = parent::parser($this->htmldir . $sort->contenttpl); // 框架标签解析
$content = $this->parser->parserBefore($content); // CMS公共标签前置解析
$content = str_replace('{pboot:pagetitle}', $this->config('content_title') ?: '{content:title}-{sort:name}-{pboot:sitetitle}-{pboot:sitesubtitle}', $content);
$content = str_replace('{pboot:pagekeywords}', '{content:keywords}', $content);
$content = str_replace('{pboot:pagedescription}', '{content:description}', $content);
$content = $this->parser->parserPositionLabel($content, $sort->scode); // CMS当前位置标签解析
$content = $this->parser->parserSortLabel($content, $sort); // CMS分类信息标签解析
$content = $this->parser->parserCurrentContentLabel($content, $sort, $data); // CMS内容标签解析
$content = $this->parser->parserCommentLabel($content); // 文章评论
$content = $this->parser->parserAfter($content); // CMS公共标签后置解析
} else {
error('请到后台设置分类栏目内容页模板!');
}
} else {
_404('您访问内容的分类已经不存在,请核对后再试!');
}
$this->cache($content, true);
}
// 单页
private function getAbout($sort)
{
// 读取数据
if (! $data = $this->model->getAbout($sort->scode)) {
_404('您访问的内容不存在,请核对后重试!');
}
if ($sort->contenttpl) {
$this->checkPageLevel($sort->gcode, $sort->gtype, $sort->gnote);
$content = parent::parser($this->htmldir . $sort->contenttpl); // 框架标签解析
$content = $this->parser->parserBefore($content); // CMS公共标签前置解析
$pagetitle = $sort->title ? "{sort:title}" : "{content:title}"; // 页面标题
$content = str_replace('{pboot:pagetitle}', $this->config('about_title') ?: ($pagetitle . '-{pboot:sitetitle}-{pboot:sitesubtitle}'), $content);
$content = str_replace('{pboot:pagekeywords}', '{content:keywords}', $content);
$content = str_replace('{pboot:pagedescription}', '{content:description}', $content);
$content = $this->parser->parserPositionLabel($content, $sort->scode); // CMS当前位置标签解析
$content = $this->parser->parserSortLabel($content, $sort); // CMS分类信息标签解析
$content = $this->parser->parserCurrentContentLabel($content, $sort, $data); // CMS内容标签解析
$content = $this->parser->parserCommentLabel($content); // 文章评论
$content = $this->parser->parserAfter($content); // CMS公共标签后置解析
} else {
error('请到后台设置分类栏目内容页模板!');
}
$this->cache($content, true);
}
// 检查页面权限
private function checkPageLevel($gcode, $gtype, $gnote)
{
if ($gcode) {
$deny = false;
$gtype = $gtype ?: 4;
switch ($gtype) {
case 1:
if ($gcode <= session('pboot_gcode')) {
$deny = true;
}
break;
case 2:
if ($gcode < session('pboot_gcode')) {
$deny = true;
}
break;
case 3:
if ($gcode != session('pboot_gcode')) {
$deny = true;
}
break;
case 4:
if ($gcode > session('pboot_gcode')) {
$deny = true;
}
break;
case 5:
if ($gcode >= session('pboot_gcode')) {
$deny = true;
}
break;
}
if ($deny) {
$gnote = $gnote ?: '您的权限不足,无法浏览本页面!';
if (session('pboot_uid')) { // 已经登录
error($gnote);
} else {
if ($this->config('login_no_wait')) {
location(Url::home('member/login', null, "backurl=" . urlencode(get_current_url())));
} else {
error($gnote, Url::home('member/login', null, "backurl=" . urlencode(get_current_url())));
}
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,90 @@
<?php
/**
* @copyright (C)2016-2099 Hnaoyun Inc.
* @author XingMeng
* @email hnxsh@foxmail.com
* @date 2018年7月15日
* 生成sitemap文件
*/
namespace app\home\controller;
use core\basic\Controller;
use app\home\model\SitemapModel;
use core\basic\Url;
class SitemapController extends Controller
{
protected $model;
public function __construct()
{
$this->model = new SitemapModel();
}
public function index()
{
header("Content-type:text/xml;charset=utf-8");
$str = '<?xml version="1.0" encoding="UTF-8"?>' . "\n";
$str .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">' . "\n";
$str .= $this->makeNode('', date('Y-m-d'), '1.00'); // 根目录
$url_break_char = $this->config('url_break_char') ?: '_';
$sorts = $this->model->getSorts();
foreach ($sorts as $value) {
if ($value->outlink) {
continue;
} elseif ($value->type == 1) {
$value->urlname = $value->urlname ?: 'list';
if ($value->filename) {
$link = Url::home('/home/Index/' . $value->filename);
} else {
$link = Url::home('/home/Index/' . $value->urlname . $url_break_char . $value->scode);
}
$str .= $this->makeNode($link, date('Y-m-d'), '0.80');
} else {
$value->urlname = $value->urlname ?: 'list';
if ($value->filename) {
$link = Url::home('home/Index/' . $value->filename);
} else {
$link = Url::home('home/Index/' . $value->urlname . $url_break_char . $value->scode);
}
$str .= $this->makeNode($link, date('Y-m-d'), '0.80');
$contents = $this->model->getSortContent($value->scode);
foreach ($contents as $value2) {
if ($value2->outlink) { // 外链
continue;
} else {
$value2->urlname = $value2->urlname ?: 'list';
if ($value2->filename && $value2->sortfilename) {
$link = Url::home('home/Index/' . $value2->sortfilename . '/' . $value2->filename, true);
} elseif ($value2->sortfilename) {
$link = Url::home('home/Index/' . $value2->sortfilename . '/' . $value2->id, true);
} elseif ($value2->contentfilename) {
$link = Url::home('home/Index/' . $value2->urlname . $url_break_char . $value2->scode . '/' . $value2->filename, true);
} else {
$link = Url::home('home/Index/' . $value2->urlname . $url_break_char . $value2->scode . '/' . $value2->id, true);
}
}
$str .= $this->makeNode($link, date('Y-m-d'), '0.60');
}
}
}
echo $str . "\n</urlset>";
}
// 生成结点信息
private function makeNode($link, $date, $priority = 0.60)
{
$node = '
<url>
<mobile:mobile type="pc,mobile"/>
<loc>' . get_http_url() . $link . '</loc>
<priority>' . $priority . '</priority>
<lastmod>' . $date . '</lastmod>
<changefreq>Always</changefreq>
</url>';
return $node;
}
}