文件
nahaichuan/addons/official/controller/web/OfficialBaseController.php
2026-10-08 16:23:22 +08:00

219 行
7.2 KiB
PHP

<?php
namespace addons\official\controller\web;
use addons\official\model\OfficialBanners;
use addons\official\model\OfficialCategory;
use think\addons\Controller;
use think\Cache;
class OfficialBaseController extends Controller
{
public $basic = [];
public $language_z = '';
protected $language = 2;
protected $basic_title;
protected $keywords;
protected $description;
protected $Mobile = '';
public function _initialize()
{
parent::_initialize(); // TODO: Change the autogenerated stub
//生成配置文件
$official_config_url = ADDON_PATH . 'official' . DS . 'config' . DS . 'official_config.php';
if (!file_exists($official_config_url)) {
$this->error("您的'$official_config_url'文件缺失。",'','',20);
} else {
$config = include $official_config_url;
}
//重新整理格式
$config_all = [];
foreach ($config as $key => $value){
$config_all[$key] = ['name'=>$key,'value'=>$value];
}
$this->language = (int)cookie('language');
$web_default_language = $config_all['web_default_language']['value'];
//前端默认语言代码
if (empty($this->language) && !empty($web_default_language)){
$this->language = $web_default_language;
cookie('language', $web_default_language);
}
$this->assign('language', $this->language);
$this->assign('auth', $this->auth);
//判断移动PC端
if ($this->isMobile()) {
$this->Mobile = '_e';
}
//查询所有栏目
$this->getAll0fficiaCategory();
//查询轮播图
$this->getAllBanners();
//网站名称 关键词 介绍
$this->language_z = ($this->language == 1) ? '_en' : '';
$this->basic_title = $config_all['basic_title' . $this->language_z]['value'] ?? '';
$this->keywords = $config_all['keywords' . $this->language_z]['value'] ?? '';
$this->description = $config_all['description' . $this->language_z]['value'] ?? '';
$this->basic = [
'title' => $this->basic_title,
'keywords' => $this->keywords,
'description' => $this->description,
];
$this->view->assign('captchaType', config('fastadmin.user_register_captcha'));
$this->assign('basic', $this->basic);
}
/**
* @return bool
* 移动pc判断
*/
public function isMobile()
{
return request()->isMobile();
}
/**
* 查询所有栏目
*/
public function getAll0fficiaCategory()
{
//生成配置文件
$official_tree_category_url = ADDON_PATH . 'official' . DS . 'config' . DS . 'official_tree_category.php';
if (!file_exists($official_tree_category_url)) {
$official_category = (new OfficialCategory())
->with(['son'])
->where('pid', 0)
->field(['content', 'e_content'], true)
->where('deletetime', null)
->order('weigh', 'desc')
->select();
$tree_category_all = [];
foreach ($official_category as $item) {
$tree_category_all[] = $item->toArray();
}
file_put_contents(
$official_tree_category_url,
'<?php' . "\n\nreturn " . var_export_short($tree_category_all) . ";\n"
);
} else {
$tree_category_all = include $official_tree_category_url;
}
$this->assign('all_official_category', $tree_category_all);
}
/**
* 获取所有轮播图
*/
public function getAllBanners()
{
$cid = (int)input('param.sid');
$banners = (new OfficialBanners())
->where('status', 1)
->where('language', $this->language)
->where('deletetime', null);
//栏目id
if ($cid) {
$banners = $banners->where("FIND_IN_SET(" . $cid . ",official_category_ids)");
} else {
$banners = $banners->where('is_index', 1);
}
//查询
$banners = $banners
->order('weigh', 'desc')
->select();
$this->assign('banners', $banners);
}
/**
* 获取栏目数据
* @return array|bool|\PDOStatement|string|\think\Model
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
protected function get_cate_pid_in_sid()
{
$sid = (int)input('param.sid');
$pid = (int)input('param.pid');
//1.查詢父级
$res = [];
$official_tree_category_url = ADDON_PATH . 'official' . DS . 'config' . DS . 'official_tree_category.php';
if (file_exists($official_tree_category_url)) {
$tree_category_all = include $official_tree_category_url;
foreach ($tree_category_all as $item) {
if ($item['id'] == $pid) {
$res = $item;
}
}
}
//2.判断是否选中
if (isset($res['son'])) {
foreach ($res['son'] as $key => $item) {
//如果不在导航中显示 则删除
if ($item['is_nav_show'] != 1) {
unset($res['son'][$key]);
continue;// 删除后,跳出本次循环
}
//判断是否选中
$res['son'][$key]['is_choose'] = 0;
if (!empty($sid)) {
if ($item['id'] == $sid) {
$res['son'][$key]['is_choose'] = 1;
}
}
}
}
return $res;
}
/**
*增加点击量
* @param $model 模型
* @param $id
*/
protected function addClick($model, $id)
{
$model->where('id', $id)->setInc('click');
}
/**
* 设置 网站名称 关键词 介绍
* @param int $stu stu == 1 代表是栏目 stu == 2 代表详情
* @param string $title
* @param string $keywords
* @param string $description
*/
protected function setBasic($stu = 1, $title = '', $keywords = '', $description = '')
{
$arr = ['title' => $title, 'keywords' => $keywords, 'description' => $description];
foreach ($arr as $item => $val) {
if ($val) {
$this->basic[$item] = $val;
}
}
if ($stu == 1) {
$language_z = ($this->language == 1) ? 'e_' : '';
$category = db('official_category')->where('id', (int)input('param.sid'))->find();
if ($category) {
$this->basic = [
'title' => $this->basic_title . '|' . $category[$language_z . 'name'],
'keywords' => $this->keywords,
'description' => $category[$language_z . 'subheading'],
];
}
}
$this->assign('basic', $this->basic);
}
}