织梦html5如何配置?

99ANYc3cd6
预计阅读时长 29 分钟
位置: 首页 织梦建站 正文

织梦CMS 本身是一个基于 PHP + MySQL 的经典建站系统,其默认模板是 XHTML 1.0,要让它支持 HTML5,主要需要进行模板文件核心文件的修改。

整个过程可以分为以下几个步骤:

  1. 修改全局模板文件 (head.htm)
  2. 修改核心文件 (include/arc.archives.class.php 等)
  3. 修改其他常用模板文件
  4. 配置网站基本信息
  5. 验证与测试

第一步:修改全局模板文件 (head.htm)

这是最重要的一步,因为 head.htm 被网站的所有页面(首页、列表页、内容页等)调用,定义了页面的基本结构和元信息。

  1. 找到文件:登录织梦后台,进入 模板 -> 默认模板管理,找到并编辑 head.htm 文件。

  2. 修改 <!DOCTYPE> 声明

    • 旧版 (XHTML):
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
    • 新版 (HTML5):
      <!DOCTYPE html>
      <html lang="{dede:global.cfg_lang/}">
    • 说明
      • <!DOCTYPE html> 是 HTML5 最简洁的声明。
      • <html xmlns="..."> 属性在 HTML5 中已不再需要,可以删除。
      • 添加 lang 属性有助于 SEO 和屏幕阅读器,{dede:global.cfg_lang/} 会调用后台设置的语言。
  3. 修改字符编码 <meta>:

    • 旧版 (XHTML):
      <meta http-equiv="Content-Type" content="text/html; charset={dede:global.cfg_soft_lang/}" />
    • 新版 (HTML5):
      <meta charset="{dede:global.cfg_soft_lang/}">
    • 说明:HTML5 推荐使用更简洁的 <meta charset="UTF-8"> 语法。
  4. 修改视口 <meta> 标签(响应式设计基础)

    • 如果你的网站需要适配手机,建议添加此标签,可以在 <meta charset> 后面加上:
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
  5. 修改 CSS 和 JS 引入方式

    • 旧版 (XHTML):
      <link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/style.css" type="text/css" media="screen" />
      <script language="javascript" type="text/javascript" src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script>
    • 新版 (HTML5):
      <link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/style.css">
      <script src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script>
    • 说明
      • type="text/css"type="text/javascript" 在 HTML5 中是默认的,可以省略。
      • language="javascript" 属性已废弃,直接使用 src 即可。

修改后的 head.htm 示例:

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">{dede:global.cfg_webname/}</title>
    <meta name="description" content="{dede:global.cfg_description/}" />
    <meta name="keywords" content="{dede:global.cfg_keywords/}" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="{dede:global.cfg_templets_skin/}/style.css">
    <script src="{dede:global.cfg_cmsurl/}/include/dedeajax2.js"></script>
    <!-- 其他JS或CSS -->
</head>
<body>

第二步:修改核心文件(解决标签兼容性问题)

织梦的很多标签在输出时会自动加上 XHTML 风格的属性或闭合标签,这会导致 HTML5 验证失败,我们需要修改核心 PHP 文件来阻止这种行为。

核心修改文件:include/arc.archives.class.php

这个文件主要用于处理文章内容页的标签,我们需要找到并修改 GetMakeHtml() 函数中的 ReplaceLabel() 调用。

  1. 找到文件:通过 FTP 或文件管理器,进入 /include/ 目录,找到 arc.archives.class.php

  2. 定位代码:搜索 ReplaceLabel 关键字,找到类似下面这行代码(可能在第 400-500 行之间,具体版本可能不同):

    $this->Fields['templet'] = str_replace("{cmspath}", $GLOBALS['cfg_cmspath'], $this->Fields['templet']);
    $this->dtp->LoadTemplate($this->Fields['templet']);
    $this->dtp->Display();
    // 在这附近找到下面这行
    $this->ParseDMFields($this->dtp, $this->Fields);
  3. 添加或修改代码:在 ParseDMFields 调用之前或之后,添加以下代码来重置标签解析器,防止其自动添加 XHTML 风格的标签,一个更彻底的方法是修改 lib_main.php 中的 ReplaceLabel 函数,但直接修改 arc.archives.class.php 是更常见的做法。

    更简单直接的方法是,在 ParseDMFields 之后,强制执行一次 HTML5 规则的替换,可以在 arc.archives.class.php 文件的最后(?> 标签之前)添加一个自定义函数,然后在 GetMakeHtml 方法中调用它。

    方法 A (推荐 - 修改 ParseDMFields 调用后的代码):

    ParseDMFields($this->dtp, $this->Fields); 这行代码之后,添加以下代码块:

    // 在 $this->ParseDMFields($this->dtp, $this->Fields); 之后添加
    // 开始:强制HTML5输出
    $html_output = $this->dtp->GetResult();
    // 移除自动添加的 <br /> 标签,替换为 <br>
    $html_output = preg_replace('/(<br\s+\/?>\s*)+$/i', '<br>', $html_output);
    // 移除 img 标签中的 style 属性(如果不需要)
    // $html_output = preg_replace('/(<img[^>]+)style="[^"]*"/i', '$1', $html_output);
    // 移除 a 标签中的 target="_blank"(如果不需要)
    // $html_output = preg_replace('/<a\s+([^>]*?)target="_blank"/i', '<a $1', $html_output);
    // 将织梦的 {dede:field name='body'/} 等标签的输出结果进行修正
    $this->Fields['body'] = $html_output;
    // 结束:强制HTML5输出

    方法 B (更彻底 - 修改 lib_main.php): 这个方法更复杂,但效果更彻底,你需要修改 include/lib_main.php 文件中的 ReplaceLabel 函数,移除或修改其中生成 XHTML 标签的代码,这需要你对 PHP 有更深入的了解。

核心修改文件:include/channelunit.class.php

这个文件用于处理列表页和首页的标签,修改方法类似。

  1. 找到文件/include/channelunit.class.php

  2. 定位代码:找到 GetList() 函数,其中同样有 ParseDMFields 的调用。

  3. 应用修改:参考 arc.archives.class.php 的修改方法,在 ParseDMFields 调用之后,添加类似的 HTML5 兼容性处理代码。


第三步:修改其他常用模板文件

除了 head.htm,你可能还需要修改其他模板文件,以符合 HTML5 语义化标签的要求。

  1. index.htm (首页模板)

    • 使用 <header>, <nav>, <main>, <article>, <section>, <aside>, <footer> 等标签来构建页面结构。
    • 将原来的 <div id="header"> 改为 <header class="clearfix">
  2. article_article.htm (文章内容页模板)

    • <h1>
    • 文章信息(作者、时间、点击量)可以用 <header><div class="post-meta">
    • 文章正文用 <article>
    • 相关文章可以用 <aside>
  3. list_category.htm (栏目列表页模板)

    • <section><article> 包裹每一条列表信息。
    • <h1><h2>

示例:简单的文章列表项改造

旧版 (无语义化):

<div class="list-item">
    <h3><a href="[field:arcurl/]">[field:title/]</a></h3>
    <div class="info">[field:pubdate function="MyDate('Y-m-d',@me)"/] 作者:[field:writer/]</div>
    <p>[field:description function="cn_substr(@me,120)"/]...</p>
</div>

新版 (HTML5 语义化):

<article class="list-item">
    <header>
        <h2><a href="[field:arcurl/]" rel="bookmark">[field:title/]</a></h2>
        <div class="post-meta">
            <time datetime="[field:pubdate function='strftime("%Y-%m-%dT%H:%M:%S+08:00", @me)']">[field:pubdate function="MyDate('Y-m-d',@me)"]</time>
            <span>作者:[field:writer/]</span>
        </div>
    </header>
    <section class="excerpt">
        <p>[field:description function="cn_substr(@me,120)"/]...</p>
    </section>
</article>

第四步:配置网站基本信息

在后台的 系统 -> 系统基本参数 中,确保以下设置正确:

  • 网站根网址:确保以 http://https:// 开头,并且没有末尾的斜杠(除非有特殊需求)。
  • CMS安装目录:如果网站安装在子目录,务必填写正确,这会影响所有链接的生成。
  • 网站编码:确保设置为 UTF-8,这是现代 Web 开发的标准。

第五步:验证与测试

完成以上修改后,你需要进行验证和测试。

  1. 清空缓存:在后台 系统 -> 一键更新网站 -> 更新缓存,清空所有模板缓存和数据缓存。

  2. 使用 HTML5 验证工具

    • 访问 W3C Markup Validation Service
    • 输入你的网站首页、文章页、列表页的 URL。
    • 查看验证结果,根据提示的错误信息,返回相应的模板文件或核心文件进行微调,最常见的错误会是:
      • Element xxx not allowed as child of element yyy in this context. (标签嵌套错误)
      • Attribute xxx not allowed on element yyy at this point. (标签属性不允许)
      • Stray end tag xxx. (多余的闭合标签)
  3. 浏览器测试

    在不同浏览器(Chrome, Firefox, Edge, Safari)中打开网站,检查页面显示是否正常,功能(如评论、点赞)是否可用。

总结与注意事项

  • 风险提示:修改核心文件(如 arc.archives.class.php)有一定风险,在进行修改前,务必备份原文件,以便出错时可以恢复。
  • 模板系统:织梦的模板引擎是固定的,我们无法让它 100% 像 Vue 或 React 那样原生支持 HTML5,我们的目标是让最终输出的 HTML 代码符合 HTML5 规范
  • 循序渐进:建议先从修改 head.htm 和模板文件开始,这是最安全且效果最明显的,如果对 PHP 不熟悉,可以先不修改核心文件,很多 HTML5 验证错误可以通过优化模板结构来解决。
  • CSS 兼容性:修改为 HTML5 后,你可能需要调整一些 CSS 选择器,div#header 可以改为 headerdiv.list-item 可以改为 article.list-item

通过以上步骤,你就可以将织梦CMS网站成功地改造为符合 HTML5 规范的网站,从而提升网站的标准化程度、SEO友好性和未来的可维护性。

-- 展开阅读全文 --
头像
dede文章图片不显示
« 上一篇 04-01
matlab翻译c语言
下一篇 » 04-01

相关文章

取消
微信二维码
支付宝二维码