Sndow CMS 主题开发 Skill 介绍
Sndow CMS 主题开发 Skill:让主题开发更规范、更高效
在使用 Sndow CMS 开发主题时,如果直接按照 WordPress 或其他 CMS 的经验编写代码,很容易遇到模板函数不存在、生命周期函数冲突、主题设置无法保存等问题。
为了解决这些问题,Sndow CMS 提供了专门的主题开发 Skill,帮助开发者按照系统当前真实接口进行主题开发、修改、排错和维护。
什么是 Sndow CMS 主题开发 Skill?
Sndow CMS 主题开发 Skill 是一套面向开发者和 AI 编程助手的主题开发规范,适用于 sd_content/themes 目录下的主题项目。
它不会简单罗列函数,而是结合 Sndow CMS 当前的模板加载方式、主题生命周期、CSF 设置框架、侧边栏系统和模板标签,为开发者提供更加准确的开发参考。
使用这套 Skill,可以减少直接套用其他 CMS 代码所带来的兼容问题。
主题目录和主题头部规范
一个最小的 Sndow CMS 主题通常包含以下文件:
my-theme/
├── style.css
├── index.php
├── functions.php
├── header.php
└── footer.php其中,style.css 不仅用于编写样式,还负责提供主题名称、版本、作者和主题地址等信息。
/*
Theme Name: 我的主题
Theme URI: https://www.sndow.com/index/store/detail/id/22.html
Author: 作者或团队
Author URI: https://www.sndow.com/index/store/author/id/1.html
Description: 主题描述
Version: 1.0.0
*/主题发布到应用商店时,Theme URI 和 Author URI 应该填写真实的官网应用地址和作者地址。如果官网开启了应用包 URI 校验,地址中的应用 ID 和作者 ID 还需要与当前应用保持一致。
使用正确的主题生命周期函数
Sndow CMS 当前推荐使用带主题 slug 前缀的生命周期函数。
例如主题目录名称为:
sd-community对应的生命周期函数应该写成:
function sd_community_theme_install() {
// 主题启用时执行
}
function sd_community_theme_uninstall() {
// 主题删除时执行
}
function sd_community_theme_upgrade() {
// 主题升级时执行
}旧版本中的 theme_install()、theme_uninstall() 和 theme_upgrade() 仅用于兼容旧主题。新主题继续使用通用函数,可能与其他主题产生函数重复声明错误。
推荐使用 sd_init 注册主题功能
主题需要注册资源、侧边栏或小工具时,推荐使用 sd_init:
function my_theme_setup() {
sd_enqueue_style(
'my-theme-style',
sd_get_theme_url('assets/css/theme.css')
);
sd_register_sidebar(
'my-theme-sidebar',
'主题侧边栏',
'主题专用侧边栏区域'
);
}
add_action('sd_init', 'my_theme_setup');sd_init 是 Sndow CMS 提供的初始化钩子。相比直接依赖模板阶段的 init,使用 sd_init 更适合完成主题初始化工作。
使用 The Loop 和主题模板函数
Sndow CMS 提供了自己的 The Loop 和模板标签,开发者不需要频繁直接读取 $sd_post 数组。
<?php if (have_posts()): ?>
<?php while (have_posts()): the_post(); ?>
<article class="post-item">
<h2>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</h2>
<p><?php the_excerpt(140); ?></p>
<span><?php the_author(); ?></span>
<time><?php the_date('Y-m-d'); ?></time>
</article>
<?php endwhile; ?>
<?php sd_pagination(); ?>
<?php endif; ?>常用模板函数包括:
the_title();
the_permalink();
the_content();
the_author();
the_date();
the_category();
the_views();
the_post_thumbnail();
has_post_thumbnail();
the_excerpt();使用这些函数可以让模板结构更加清晰,也方便主题在未来适配系统功能更新。
内置 SEO 和 TDK 支持
主题开发 Skill 还整理了 Sndow CMS 的 SEO 调用方式。
在 header.php 中,可以直接使用:
<title><?php echo sd_tdk_field('title'); ?></title>
<meta name="description" content="<?php echo sd_tdk_field('description'); ?>">
<meta name="keywords" content="<?php echo sd_tdk_field('keywords'); ?>">
<meta name="robots" content="<?php echo sd_tdk_field('robots'); ?>">
<?php sd_head(); ?>sd_tdk_field() 会自动读取当前页面对应的标题、描述、关键词和 robots 设置,并完成必要的 HTML 转义。
系统还会通过 sd_head() 输出 canonical、Open Graph 等 SEO 相关内容,主题不需要重复实现相同功能。
主题设置和 CSF Field
主题设置统一放在 options.php 中,并使用系统内置的 CSF 接口。
CSF::createOptions('theme_options', [
'menu_title' => '主题设置',
'menu_slug' => 'theme_options',
'option_name' => 'sd_theme_options_' . sd_get_theme_name(),
]);
CSF::createSection('theme_options', [
'title' => '基础设置',
'fields' => [
[
'id' => 'site_logo',
'type' => 'upload',
'title' => '站点 Logo',
],
[
'id' => 'accent_color',
'type' => 'color',
'title' => '强调色',
'default' => '#405cf5',
],
],
]);当前系统支持文本、文本域、代码编辑器、数字、开关、单选、多选、分类选择、页面选择、上传、颜色、图标、重复器、排序器等多种字段类型。
主题中可以使用以下方式读取设置:
$logo = sd_theme_option('site_logo', '');
$color = sd_theme_option('accent_color', '#405cf5');评论、小工具和上传功能
主题开发 Skill 同时覆盖了评论、小工具和资源上传功能。
判断评论是否开启:
<?php if (sd_comments_open()): ?>
<?php sd_theme_file('comments'); ?>
<?php endif; ?>注册自定义小工具:
sd_register_widget_type('my_theme_notice', [
'name' => '主题提示卡',
'icon' => 'bi-info-circle',
'render_callback' => function ($config) {
echo '<div>' .
htmlspecialchars($config['text'] ?? '', ENT_QUOTES, 'UTF-8') .
'</div>';
},
]);主题需要处理上传时,可以直接调用全局上传函数:
$result = sd_upload_file($_FILES['file'], [
'allowed_exts' => ['jpg', 'png', 'mp4'],
'allowed_mimes' => ['image/jpeg', 'image/png', 'video/mp4'],
'max_size_mb' => 20,
]);系统会统一处理文件类型、MIME、大小、上传目录和附件记录。
适合哪些开发场景?
Sndow CMS 主题开发 Skill 适合以下场景:
- 从零开发博客、资讯、资源展示主题
- 将旧主题改造成 Sndow CMS 最新写法
- 修复主题切换、模板加载和设置保存问题
- 开发主题小工具和侧边栏
- 增加 CSF 主题设置字段
- 优化主题 SEO 和内容模板
- 检查主题发布包和生命周期函数
- 让 AI 编程助手按照 Sndow CMS 真实接口工作
总结
Sndow CMS 主题开发 Skill 的核心价值,是让主题开发从“凭经验试错”转变为“按照系统真实接口开发”。
通过统一的模板函数、主题生命周期、CSF 设置、小工具、评论开关和 SEO 调用方式,开发者可以更快完成主题开发,也能减少因使用旧写法或其他 CMS 函数而产生的兼容问题。