第一部分:项目规划与准备

在开始之前,清晰的规划能让后续工作事半功倍。

基于dedecms响应式公司网页
(图片来源网络,侵删)

明确网站需求与结构

你需要规划好网站需要哪些页面和栏目,一个典型的公司网站结构如下:

  • 首页: 展示公司形象、核心业务、最新动态、联系方式等。
  • 关于我们: 公司简介、发展历程、企业文化、团队风采。
  • 产品/服务: 核心产品或服务的详细介绍,可能需要多级分类。
  • 新闻中心: 公司新闻、行业资讯、媒体报道等。
  • 案例展示: 成功案例、客户见证、项目作品。
  • 联系我们: 联系方式、在线地图、留言表单。

技术选型与工具

  • CMS: Dedecms V5.7 或 V5.8 (V5.7 是最稳定和广泛使用的版本,V5.8 做了一些优化)。
  • 服务器: 支持 PHP + MySQL 的任意服务器 (如 Nginx + PHP-FPM + MySQL 的组合)。
  • 前端框架:
    • Bootstrap: 最推荐的选择,它提供了强大的栅格系统、大量的预置组件(导航栏、轮播图、模态框等)和响应式工具,能极大简化开发工作。
    • 纯 CSS Media Queries: 如果你对前端很熟悉,也可以不使用框架,自己写媒体查询来实现响应式,但工作量会大很多。
  • 开发工具:
    • 代码编辑器: VS Code, Sublime Text, Atom 等。
    • 本地环境集成软件: XAMPP, WampServer, phpStudy 等,用于在本地搭建和测试网站。
    • 浏览器开发者工具: 用于调试响应式布局(F12,切换设备模式)。

第二部分:响应式设计核心思想

响应式设计的核心是 “弹性布局”“媒体查询”

  • 弹性布局:

    • 流式布局: 使用百分比 (%) 而不是固定像素 来定义宽度,使页面元素能根据浏览器窗口大小自适应伸缩。
    • 弹性图片: 图片设置 max-width: 100%;height: auto;,确保图片不会溢出其容器。
    • 相对单位: 使用 emrem 代替 px 来定义字体大小,使字体也能随容器缩放。
  • 媒体查询:

    基于dedecms响应式公司网页
    (图片来源网络,侵删)
    • 这是响应式的“大脑”,通过 @media 查询,我们可以根据不同的屏幕尺寸(宽度、高度、分辨率)应用不同的 CSS 样式。
    • 常见的断点:
      • 移动端: max-width: 767px
      • 平板端: min-width: 768pxmax-width: 991px
      • 桌面端: min-width: 992px

第三部分:基于 Dedecms 的具体实现步骤

步骤 1:安装并配置 Dedecms

  1. 在本地服务器环境(如 phpStudy)中,将下载好的 Dedecms 程序上传到网站根目录(如 www)。
  2. 运行安装向导,完成数据库的配置和安装。
  3. 登录后台: 访问 你的域名/dede/,使用管理员账号登录。
  4. 基本设置:
    • 系统 -> 系统基本参数: 设置网站名称、网站版权信息、网站路径等。
    • 核心 -> 栏目管理: 创建我们第一步规划好的所有栏目(如“关于我们”、“产品中心”等),在添加栏目时,选择“栏目列表”和“文章列表”等合适的模型。
    • 核心 -> 频道管理: 确保顶级栏目(如首页、关于我们)的类型为“频道封面”。

步骤 2:下载并整合 Bootstrap

  1. 访问 Bootstrap 官网,下载 "Compiled CSS and JS" 版本。
  2. 解压下载的文件,你会看到 css/, js/, fonts/ 等文件夹。
  3. 将这些文件夹上传到你的 Dedecms 网站模板目录下,/templets/default/,为了整洁,你可以创建一个名为 assets 的文件夹来存放它们,最终路径为 /templets/default/assets/

步骤 3:创建响应式首页模板

这是最关键的一步,我们将创建一个名为 index.html 的首页模板。

  1. 创建模板文件:/templets/default/ 目录下,新建一个文件 index.html
  2. 编写模板代码: 将以下代码复制到 index.html 中,代码中包含了详细的注释,解释了每一部分的作用。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">{dede:global.cfg_webname/}</title>
    <!-- Bootstrap CSS -->
    <link href="/templets/default/assets/css/bootstrap.min.css" rel="stylesheet">
    <!-- 自定义样式 -->
    <link href="/templets/default/style.css" rel="stylesheet">
    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://cdn.bootcdn.net/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://cdn.bootcdn.net/ajax/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
</head>
<body>
    <!-- 顶部导航栏 -->
    <nav class="navbar navbar-default">
        <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="/">公司Logo</a>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                {dede:channelartlist typeid='top'}
                    <ul class="nav navbar-nav">
                        {dede:channel type='son' currentstyle="<li class='active'><a href='~typelink~'>~typename~</a></li>"}
                            <li><a href="[field:typelink/]">[field:typename/]</a></li>
                        {/dede:channel}
                    </ul>
                {/dede:channelartlist}
            </div><!-- /.navbar-collapse -->
        </div><!-- /.container-fluid -->
    </nav>
    <!-- 轮播图部分 -->
    <div id="myCarousel" class="carousel slide" data-ride="carousel">
        <!-- Indicators -->
        <ol class="carousel-indicators">
            {dede:arclist flag='c' row='5'}
                <li data-target="#myCarousel" data-slide-to="[field:global name='autoindex' runphp='yes']@me = @me - 1;[/field:global]" {if [field:global name='autoindex' runphp='yes']@me == 1{/if} class="active"></li>
            {/dede:arclist}
        </ol>
        <!-- Wrapper for slides -->
        <div class="carousel-inner" role="listbox">
            {dede:arclist flag='c' row='5'}
                <div class="item [field:global name='autoindex' runphp='yes']if(@me==1) @me='active'; else @me='';{/field:global]">
                    <img src="[field:litpic/]" alt="[field:title/]">
                    <div class="carousel-caption">
                        <h3>[field:title/]</h3>
                        <p>[field:description function='cn_substr(@me,80)'/]...</p>
                    </div>
                </div>
            {/dede:arclist}
        </div>
        <!-- Controls -->
        <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
            <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
            <span class="sr-only">Previous</span>
        </a>
        <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
            <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
            <span class="sr-only">Next</span>
        </a>
    </div>
    <!-- 公司简介 -->
    <div class="container">
        <div class="row">
            <div class="col-md-8">
                <h2>关于我们</h2>
                {dede:sql sql="SELECT content FROM `dede_arctype` WHERE id='栏目ID'"}
                    [field:content function='htmlspecialchars_decode(@me)'/]
                {/dede:sql}
            </div>
            <div class="col-md-4">
                <h2>联系我们</h2>
                <p>地址:XXXXXXXXXXXXXXXX</p>
                <p>电话:XXXXXXXXXXXXXXXX</p>
                <p>邮箱:XXXXXXXXXXXXXXXX</p>
            </div>
        </div>
    </div>
    <!-- 产品展示 -->
    <div class="container">
        <h2>我们的产品</h2>
        <div class="row">
            {dede:arclist typeid='产品栏目ID' row='6' titlelen='24'}
                <div class="col-sm-6 col-md-4">
                    <div class="thumbnail">
                        <img src="[field:litpic/]" alt="[field:title/]">
                        <div class="caption">
                            <h3>[field:title/]</h3>
                            <p>[field:description function='cn_substr(@me,100)'/]...</p>
                            <p><a href="[field:arcurl/]" class="btn btn-primary" role="button">查看详情</a></p>
                        </div>
                    </div>
                </div>
            {/dede:arclist}
        </div>
    </div>
    <!-- 页脚 -->
    <footer class="footer">
        <div class="container">
            <p class="text-muted">版权所有 &copy; 2025 公司名称 | 基于 Dedecms 构建</p>
        </div>
    </footer>
    <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery) -->
    <script src="/templets/default/assets/js/jquery.min.js"></script>
    <!-- 加载 Bootstrap 的所有 JavaScript 插件,你也可以只加载单个插件。 -->
    <script src="/templets/default/assets/js/bootstrap.min.js"></script>
</body>
</html>

步骤 4:创建自定义样式文件

在上面的模板中,我们引用了一个自定义的 CSS 文件 style.css,这个文件用于覆盖或补充 Bootstrap 的默认样式,并实现一些特定于你网站的样式。

  1. /templets/default/ 目录下,创建 style.css 文件。
  2. 添加一些基本样式,并开始编写媒体查询。
/* style.css */
/* --- 全局样式 --- */
body {
    font-family: "Microsoft YaHei", "微软雅黑", sans-serif;
    padding-top: 50px; /* 为固定导航栏留出空间 */
}
/* --- 轮播图样式覆盖 --- */
.carousel {
    height: 400px;
    background-color: #000;
}
.carousel .item {
    height: 400px;
    background-color: #777;
}
.carousel img {
    width: 100%;
    height: 400px;
    object-fit: cover;
}
.carousel-caption {
    background-color: rgba(0,0,0,0.5);
    border-radius: 10px;
}
/* --- 产品展示样式 --- */
.thumbnail {
    transition: transform 0.3s ease;
}
.thumbnail:hover {
    transform: scale(1.05);
    box-shadow: 0 10px 20px rgba(0,0,0,0.2);
}
/* --- 页脚样式 --- */
.footer {
    background-color: #f5f5f5;
    padding: 20px 0;
    margin-top: 50px;
    text-align: center;
}
/* ===================== */
/* === 响应式媒体查询 === */
/* ===================== */
/* --- 平板设备 (sm) --- */
@media (max-width: 991px) {
    .carousel {
        height: 300px;
    }
    .carousel .item, .carousel img {
        height: 300px;
    }
    .carousel-caption h3 {
        font-size: 20px;
    }
    .carousel-caption p {
        display: none; /* 在平板上隐藏描述文字 */
    }
}
/* --- 移动设备 (xs) --- */
@media (max-width: 767px) {
    body {
        padding-top: 0; /* 移动端取消顶部内边距 */
    }
    .navbar {
        margin-bottom: 0; /* 移动端导航栏和轮播图无缝衔接 */
    }
    .carousel {
        height: 200px;
        margin-top: 0; /* 取消轮播图顶部外边距 */
    }
    .carousel .item, .carousel img {
        height: 200px;
    }
    .carousel-caption {
        display: none; /* 在手机上隐藏轮播图文字 */
    }
    .container .row .col-md-8, .container .row .col-md-4 {
        margin-bottom: 20px; /* 手机端上下间距 */
    }
}

步骤 5:设置首页并生成

  1. 设置首页模板: 登录 Dedecms 后台,进入【系统】-> 【系统基本参数】 -> 【核心设置】,找到 “主页模板” 选项,将其值修改为 index.html
  2. 生成网站: 进入【生成】-> 【更新主页HTML】,点击 “更新主页HTML” 按钮,Dedecms 会根据你刚才创建的模板文件,生成静态的 index.html 文件。
  3. 生成其他页面: 同样,你需要为其他栏目(如“关于我们”、“产品中心”)创建对应的模板文件(如 about.html, products.html),并设置好栏目对应的模板,然后逐一生成。

第四部分:上传与测试

  1. 上传文件: 使用 FTP 工具,将本地 /templets/default 文件夹下的所有内容(包括新创建的 index.html, style.css 以及 assets 文件夹)上传到服务器上对应的目录。
  2. 数据库上传: 如果你是在本地开发完成,还需要将本地的数据库导出(.sql 文件),然后导入到服务器上。
  3. 测试:
    • 桌面端: 在电脑浏览器上访问你的网站,检查布局是否正常。
    • 响应式测试:
      • 方法一(推荐): 使用 Chrome 或 Firefox 浏览器的开发者工具(按 F12),点击设备模拟按钮(一个手机/平板图标),切换不同的设备尺寸(iPhone, iPad, Desktop)来查看效果。
      • 方法二: 用真实的手机、平板电脑访问网站,这是最真实的测试。

总结与建议

  • 善用 Dedecms 标签: Dedecms 的模板标签(如 arclist, channel, list 等)非常强大,是动态调用内容的核心,务必花时间熟悉它们。
  • 模块化开发: 对于页眉、页脚、侧边栏等重复出现的部分,可以考虑使用 include 标签({dede:include filename='head.html'/})将其拆分成独立的文件,方便管理和维护。
  • 保持代码整洁: 编写清晰、有注释的 HTML 和 CSS 代码,不仅对你自己友好,也方便他人接手项目。
  • 安全第一: 在将网站部署到服务器前,请务必修改默认的后台目录名(dede)和默认管理员账号密码,并做好目录权限设置。

遵循以上步骤,你就可以成功地构建一个功能完善、外观现代且在各种设备上都能良好显示的响应式公司网站了,祝你开发顺利!

基于dedecms响应式公司网页
(图片来源网络,侵删)