下面我将为你提供一个全面、分步的指南,以WordPress为例(因为它是最流行、资料最丰富的CMS),但核心原则同样适用于Joomla、Drupal等其他CMS。

核心概念:模板如何与CMS协同工作?
在开始之前,你需要理解一个基本原理:
- CMS (后端):负责管理内容(文章、页面、产品、用户等),它有一个数据库来存储所有内容。
- 模板 (前端):是一个“空”的HTML/CSS/JavaScript框架,它不包含具体内容,而是包含“占位符”或,当访问者访问你的网站时,CMS会读取数据库中的内容,并“填充”到模板的这些占位符中,最终生成完整的网页。
模板里可能有一行代码 <?php the_title(); ?>,当CMS渲染这个页面时,它会自动将当前文章的标题替换掉这行代码。
制作CMS网页模板的完整步骤 (以WordPress为例)
第一步:准备工作
-
本地环境:你需要在你的电脑上搭建一个本地服务器环境,最常用的工具是:
- XAMPP (Windows, macOS, Linux) - 包含Apache, MySQL, PHP。
- MAMP (macOS) - 功能类似,在macOS上更易用。
- Local by Flywheel (推荐,跨平台) - 专为WordPress设计的本地开发环境,非常简单。
-
安装CMS:在你的本地环境中安装一个全新的WordPress,这样你就可以在不受干扰的情况下安全地测试你的模板。
(图片来源网络,侵删) -
设计工具:准备一个设计稿,你可以使用:
- Figma / Sketch / Adobe XD (现代UI/UX设计工具,可以导出切图和代码)。
- Photoshop / GIMP (传统的图像处理软件)。
-
HTML/CSS/PHP基础:你需要具备以下知识:
- HTML:网页的结构。
- CSS:网页的样式和布局。
- PHP:至少要能看懂基本的PHP语法,因为模板文件中会包含大量的PHP函数来调用WordPress的功能。
第二步:创建模板文件和目录结构
一个标准的WordPress模板通常位于主题文件夹 wp-content/themes/your-theme-name/ 下,我们需要创建以下基本文件和目录结构:
your-theme-name/
├── index.php (首页模板)
├── style.css (主题样式表,必须包含主题头信息)
├── functions.php (主题功能函数,必须)
├── header.php (网站头部)
├── footer.php (网站底部)
├── single.php (单篇文章页面)
├── page.php (单页面模板)
├── archive.php (归档页面,如分类、标签)
├── 404.php (404错误页面)
├── screenshot.png (主题预览图,300x225像素)
└── assets/ (存放静态资源,推荐)
├── css/
├── js/
└── images/
关键文件说明:

-
style.css:这是WordPress识别一个主题的唯一标识,文件顶部必须有注释头信息,否则WordPress不会将其识别为主题。/* Theme Name: My Awesome Theme Theme URI: https://example.com/ Author: Your Name Author URI: https://example.com/ Description: A custom theme I built. Version: 1.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: my-awesome-theme */
-
functions.php:这是主题的“大脑”,你可以在这里添加自定义功能,如注册导航菜单、添加侧边栏、引入CSS/JS文件等。
第三步:构建模板的核心文件
这是将你的静态HTML/CSS转换为动态WordPress模板的核心步骤。
构建头部 (header.php)
将你HTML中的 <head> 和 <body> 开始的部分放入 header.php。
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo('charset'); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<?php wp_head(); ?> <!-- **极其重要!** 引入WordPress自动添加的CSS、JS等 -->
</head>
<body <?php body_class(); ?>>
<header>
<h1><a href="<?php echo esc_url(home_url('/')); ?>"><?php bloginfo('name'); ?></a></h1>
<p><?php bloginfo('description'); ?></p>
<?php
// 使用WordPress函数动态生成导航菜单
wp_nav_menu(array(
'theme_location' => 'primary', // 这个名称需要在functions.php中注册
'menu_class' => 'nav-menu'
));
?>
</header>
构建底部 (footer.php)
将HTML中页面底部的代码放入 footer.php。
<footer>
<p>© <?php echo date('Y'); ?> <?php bloginfo('name'); ?></p>
</footer>
<?php wp_footer(); ?> <!-- **极其重要!** 引入WordPress在底部添加的JS等 -->
</body>
</html>
构建首页 (index.php)
这是最核心的循环文件,它决定了首页如何显示文章列表。
<?php get_header(); ?>
<main id="content">
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<!-- 循环开始:为每一篇文章输出结构 -->
<article <?php post_class(); ?>>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php if ( has_post_thumbnail() ) : ?>
<div class="featured-image">
<?php the_post_thumbnail(); ?>
</div>
<?php endif; ?>
<div class="entry-content">
<?php the_excerpt(); // 显示文章摘要 ?>
</div>
</article>
<?php endwhile; ?>
<!-- 文章分页导航 -->
<?php the_posts_pagination(); ?>
<?php else : ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
</main>
<?php get_footer(); ?>
构建其他页面模板
single.php(单篇文章):结构类似index.php,但通常使用the_content()显示全文,而不是摘要。page.php(单页面):通常和single.php类似,但不需要文章循环。archive.php(归档页面):与index.php类似,但标题通常会显示“分类:XXX”或“标签:XXX”。
第四步:样式化与添加功能
引入CSS和JS
不要直接在 header.php 里写 <link> 或 <script>,使用 functions.php 来管理它们,这样更符合WordPress的最佳实践。
在 functions.php 中添加:
function my_theme_enqueue_styles() {
// 引入主题的主样式表
wp_enqueue_style( 'main-style', get_stylesheet_uri() );
// 引入一个额外的CSS文件,放在assets/css目录下
wp_enqueue_style( 'custom-style', get_template_directory_uri() . '/assets/css/custom.css', array(), '1.0', 'all' );
}
function my_theme_enqueue_scripts() {
// 引入一个JS文件
wp_enqueue_script( 'main-script', get_template_directory_uri() . '/assets/js/main.js', array(), '1.0', true ); // true表示放在footer前
}
// 将函数挂载到WordPress的相应钩子上
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_scripts' );
使用CSS类和WordPress函数
你的CSS应该使用WordPress生成的类名,
body_class()会给<body>标签添加很多有用的类,如home,blog,page-id-123等。post_class()会给文章的<article>标签添加很多有用的类,如post,hentry,category-news等。
这样你就可以通过CSS轻松地针对特定页面或文章进行样式定制。
注册侧边栏和导航菜单
在 functions.php 中注册可用的区域:
function my_theme_widgets_init() {
register_sidebar( array(
'name' => 'Main Sidebar',
'id' => 'sidebar-1',
'description' => 'Main widget area',
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
add_action( 'widgets_init', 'my_theme_widgets_init' );
function my_theme_register_menus() {
register_nav_menus( array(
'primary' => 'Primary Menu',
'footer' => 'Footer Menu',
) );
}
add_action( 'init', 'my_theme_register_menus' );
然后在 sidebar.php 或 header.php 中调用它们:
<?php if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
<div id="secondary" class="widget-area">
<?php dynamic_sidebar( 'sidebar-1' ); ?>
</div>
<?php endif; ?>
第五步:测试与部署
- 本地测试:在你的本地WordPress环境中激活你的新主题,检查所有页面(首页、文章页、页面、404页等)是否显示正常,响应式布局是否工作。
- 代码审查:检查代码是否有错误,特别是PHP语法错误。
- 打包上传:将整个主题文件夹(
your-theme-name/)打包成一个ZIP文件。 - 部署:
- 方法一(推荐):登录你的WordPress网站后台,进入“外观” -> “主题”,点击“添加新”,然后点击“上传主题”,选择你打包的ZIP文件。
- 方法二:通过FTP将主题文件夹上传到服务器上的
wp-content/themes/目录,然后在后台手动激活它。
进阶提示
- 模板部分:对于重复的页面结构(如文章列表、评论列表),可以创建单独的文件(如
content.php,comment.php),然后在主模板中使用get_template_part('content', 'post')来引入,这能让你的代码更整洁、可复用。 - 模板层次:WordPress有一套复杂的模板加载规则(Template Hierarchy),它会优先查找
category-news.php来显示“news”分类的归档页面,如果没有,才使用通用的archive.php,了解这个规则能让你制作更精细的模板。 - 使用Starter Theme:如果你不想从零开始,可以使用一个“启动主题”,如
_s(Underscores) 或 Astra / GeneratePress 的空白子主题,它们已经为你搭建好了基本的文件结构和函数,你可以直接在其基础上进行开发,大大提高效率。
希望这份详细的指南能帮助你成功制作出自己的CMS网页模板!祝你顺利!
