Initial project files: BESCMS full source

This commit is contained in:
bes
2026-08-13 23:37:46 +08:00
parent fa6cddb540
commit 2e26f85723
2166 changed files with 396625 additions and 0 deletions
+170
View File
@@ -0,0 +1,170 @@
<?php namespace Phpcmf\Control;
/**
* https://www.besyun.com
* BESCMS
* 本代码基于MIT开源协议,协议规定此处版权信息不可去除
* 本文件是框架系统文件,二次开发时不可以修改本文件
**/
// 生成静态
class Html extends \Phpcmf\Home\Module {
private $is_html;
// 首页动作
public function _index_page() {
ob_start();
\Phpcmf\Service::V()->assign([
'is_cms' => 1,
'indexc' => 1,
'fix_html_now_url' => defined('IS_MOBILE') && IS_MOBILE ? SITE_MURL : SITE_URL,
]);
\Phpcmf\Service::V()->assign($this->_index_seo());
\Phpcmf\Service::V()->display('index.html');
$html = ob_get_clean();
// 开启过首页静态时
if ($this->site_info[SITE_ID]['SITE_INDEX_HTML'] && !defined('SC_HTML_FILE')) {
if (IS_CLIENT) {
// 自定义终端
$file = dr_is_app('chtml') ? \Phpcmf\Service::L('html', 'chtml')->get_webpath(SITE_ID, 'site', IS_CLIENT.'/index.html') : WEBPATH.IS_CLIENT.'/index.html';
$rt = file_put_contents($file, $html);
!$rt && CI_DEBUG && log_message('error', '首页终端('.IS_CLIENT.')生成失败:'.$file);
} elseif (defined('IS_MOBILE') && IS_MOBILE) {
// 移动端,当移动端独立域名情况下才生成静态
if (defined('SITE_IS_MOBILE_HTML') && SITE_IS_MOBILE_HTML && SITE_MURL == dr_now_url()) {
$mfile = dr_is_app('chtml') ? \Phpcmf\Service::L('html', 'chtml')->get_webpath(SITE_ID, 'site', SITE_MOBILE_DIR.'/index.html') : WEBPATH.SITE_MOBILE_DIR.'/index.html';
$mobile = file_put_contents($mfile, $html);
!$mobile && CI_DEBUG && log_message('error', '首页移动端生成失败:'.$mfile);
}
} else {
// pc
$file = dr_is_app('chtml') ? \Phpcmf\Service::L('html', 'chtml')->get_webpath(SITE_ID, 'site', 'index.html') : WEBPATH.'index.html';
$pc = file_put_contents($file, $html);
!$pc && CI_DEBUG && log_message('error', '首页PC端首页生成失败:'.$file);
}
}
echo $html;
}
// 首页显示
public function index() {
if (IS_POST) {
$this->_json(0, '禁止提交,请检查提交地址是否有误');
}
// 挂钩点 网站首页时
\Phpcmf\Hooks::trigger_callback('cms_index');
\Phpcmf\Service::L('Router')->is_redirect_url(dr_url_prefix('/'), 1);
$this->_index_page();
}
// 生成静态
public function html() {
// 判断权限
if (!dr_html_auth()) {
$this->_json(0, '权限验证超时,请重新执行生成');
}
// 标识变量
!defined('SC_HTML_FILE') && define('SC_HTML_FILE', 1);
// 开启ob函数
ob_start();
$this->is_html = 1;
\Phpcmf\Service::V()->init('pc');
\Phpcmf\Service::V()->assign([
'fix_html_now_url' => SITE_URL, // 修复静态下的当前url变量
]);
$this->_index_page();
$html = ob_get_clean();
$file = dr_is_app('chtml') ? \Phpcmf\Service::L('html', 'chtml')->get_webpath(SITE_ID, 'site', 'index.html') : WEBPATH.'index.html';
$pc = file_put_contents($file, $html, LOCK_EX);
!$pc && CI_DEBUG && log_message('error', '首页PC端首页生成失败:'.$file);
if (SITE_MURL != SITE_URL) {
// 开启ob函数
ob_start();
$this->is_html = 1;
\Phpcmf\Service::V()->init('mobile');
\Phpcmf\Service::V()->assign([
'fix_html_now_url' => SITE_MURL, // 修复静态下的当前url变量
]);
$this->_index_page();
$html = ob_get_clean();
$mfile = dr_is_app('chtml') ? \Phpcmf\Service::L('html', 'chtml')->get_webpath(SITE_ID, 'site', SITE_MOBILE_DIR.'/index.html') : WEBPATH.SITE_MOBILE_DIR.'/index.html';
$mobile = file_put_contents($mfile, $html, LOCK_EX);
!$mobile && CI_DEBUG && log_message('error', '首页移动端生成失败:'.$mfile);
} else {
CI_DEBUG && log_message('error', '首页移动端生成失败:移动端未绑定域名');
}
$this->_json(1, dr_lang('电脑端 %s),移动端 %s', dr_format_file_size($pc), dr_format_file_size($mobile)));
}
private function _index_seo() {
$seo = [
'meta_title' => \Phpcmf\Service::C()->get_cache('site', SITE_ID, 'seo', 'SITE_TITLE'),
'meta_keywords' => \Phpcmf\Service::C()->get_cache('site', SITE_ID, 'seo', 'SITE_KEYWORDS'),
'meta_description' => \Phpcmf\Service::C()->get_cache('site', SITE_ID, 'seo', 'SITE_DESCRIPTION')
];
if (IS_CLIENT) {
// 终端模式下
$cdata = \Phpcmf\Service::R(WRITEPATH.'config/app_client_seo_'.SITE_ID.'.php');
if ($cdata && isset($cdata[IS_CLIENT]) && $cdata[IS_CLIENT]) {
$seo = [
'meta_title' => $cdata[IS_CLIENT]['SITE_TITLE'],
'meta_keywords' => $cdata[IS_CLIENT]['SITE_KEYWORDS'],
'meta_description' => $cdata[IS_CLIENT]['SITE_DESCRIPTION']
];
}
}
!$seo['meta_title'] && $seo['meta_title'] = SITE_NAME;
if ($seo['meta_title'] && strpos($seo['meta_title'], '{page}') !== false) {
$page = max(1, intval($_GET['page']));
if ($page > 1) {
$seo['meta_title'] = str_replace(array('[', ']'), '', $seo['meta_title']);
$seo['meta_title'] = str_replace('{join}', SITE_SEOJOIN, $seo['meta_title']);
$seo['meta_title'] = str_replace('{page}', $page, $seo['meta_title']);
} else {
$seo['meta_title'] = preg_replace('/\[.+\]/U', '', $seo['meta_title']);
}
}
return \Phpcmf\Service::L('Seo')->get_seo_value([], $seo);
}
// 生成栏目
public function category() {
parent::_Category_Html();
}
// 生成内容
public function show() {
parent::_Show_Html();
}
// 生成栏目单页
public function categoryfile() {
parent::_Category_Html_File();
}
// 生成内容单页
public function showfile() {
parent::_Show_Html_File();
}
}