此插件基于BadouCMS,城市分站(Citysite)插件
站点区域管理实现城市分站,支持多城市内容共享与定制化配置
使用说明
一、核心功能
- 城市分站模式与多语言模式切换
- 城市数据批量导入(支持全国300+城市)
- 区域自定义配置管理
- 内容标签动态替换
- 模板变量自动处理
二、功能使用指南
2.1 模式说明
多语言模式(默认)
- 每个语言/区域有独立的内容
- 适合国际化网站
- 各区域内容完全独立管理


城市分站模式(本插件功能)
- 所有城市共享默认语言的内容
- 通过标签动态替换实现内容定制
- 适合同语言多城市网站
- 需要手动调用
replace_city_tags()函数
2.2 模式切换
- 进入 "城市分站 > 分站配置" 页面
- 点击顶部的 "城市分站模式" 开关
- 开启后,所有城市将共享默认语言的内容

2.3 导入城市数据
- 进入 "城市分站 > 分站配置" 页面
- 点击工具栏的 "导入城市" 按钮
- 系统按地区分组显示全国城市
- 选择需要导入的城市
- 点击 "确认导入" 按钮
注意:
- 已存在的城市会自动跳过
- 城市编码使用缩写(如:北京=bj,上海=sh)

2.4 自定义配置字段管理
添加配置字段
- 进入 "城市分站 > 自定义配置" 页面
- 点击 "添加" 按钮
填写配置信息:
- 配置名称:会自动添加
city_site_前缀 - 配置标题:显示给用户的名称
- 配置类型:text、textarea、switch、select等
- 默认值:系统默认值
- 提示信息:帮助说明
- 权重:排序顺序
- 配置名称:会自动添加
- 保存,该字段会出现在所有区域的编辑页面

2.5 区域配置编辑
- 进入 "城市分站 > 分站配置" 页面
- 点击列表中的 "编辑配置" 按钮
可配置内容:
- 区域描述:该区域的详细描述
- SEO关键词:meta keywords
- 使用原版语言数据:开启后该区域不使用城市分站功能
- 自定义配置字段:在此置该区域的个性化配置值
- 保存后,配置会存入
citysite_area_config表
三、开发集成
3.1 核心函数
1. is_city_site_mode(): bool
检查是否开启城市分站模式
if (is_city_site_mode()) {
// 城市分站模式逻辑
} else {
// 多语言模式逻辑
}2. get_selected_lang(): string
获取用户选择的语言/城市编码
$acode = get_selected_lang(); // 返回如 'bj', 'sh' 等3. get_current_area_info(): array
获取当前区域的完整信息
$area = get_current_area_info();
// 返回:
// [
// 'id' => 1,
// 'acode' => 'bj',
// 'name' => '北京',
// 'domain' => 'beijing.example.com',
// 'description' => '...',
// 'is_default' => 0,
// ...
// ]4. get_area_config(string $configName, ?string $acode = null): mixed
获取区域的自定义配置值
// 获取当前区域的配置
$phone = get_area_config('city_site_contact_phone');
// 获取指定区域的配置
$phone = get_area_config('city_site_contact_phone', 'bj');5. replace_city_tags(?string $content): string
替换内容中的城市标签
$content = "欢迎来到{city}!联系电话:{contact_phone}";
$result = replace_city_tags($content);
// 输出:欢迎来到北京!联系话:010-123456783.2 支持的标签
快捷标签
{city} - 城市名称(等同于 {name})
{city_name} - 城市名称(等同于 {name})
{city_code} - 城市编码(等同于 {acode})自定义配置字段
在 "自定义配置" 中添加的字段都可以作为标签使用:
{city_site_contact_phone} - 联系电话
{city_site_address} - 地址
{city_site_qq} - QQ号码
... (所有自定义配置)3.3 模板中使用

方式1:在PHP控制器中替换
// 在控制器中
$content = "欢迎来到{city}";
$content = replace_city_tags($content);
$this->assign('content', $content);方式2:ViewAdapter自动处理
本插件会自动处理系统变量中的{city}等参数标签
方式3:在模板中使用PHP函数
{$content|replace_city_tags}常见问题
Q1:安装后城市分站模式不生效?
A:检查以下几点:
- 是否在后台开启了 "城市分站模式" 开关
- 是否导入了城市数据
- 是否选择了城市(检查 cookie
f_lg) - 内容中是否使用了标签(如
{city}) - 是否调用了
replace_city_tags()函数
Q2:标签没有被替换?
A:原因可能是:
- 城市分站模式未开启
- 未调用
replace_city_tags()函数 - 标签格式不正确(注意大括号)
- 该配置字段不存在或值为空
Q3:如何让某个区域不使用城市分站功能?
A:
- 进入该区域的编辑页面
- 开启 "使用原版语言数据" 开关
- 保存后,该区域将使用独立内容,不进行标签替换
Q4:自定义配置字段名称有什么要求?
A:
- 只能包含字母、数字和下划线
- 不能与系统字段冲突
- 建议使用有意义的英文命名
Q5:如何备份城市分站数据?
A:备份以下内容:
citysite_area_config表数据config表中group='citysite'的记录cms_area表数据modules/citysite/目录
