织梦手机版是什么?

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

$body 是织梦模板系统中的一个核心变量,它的含义是主体”,根据它所在模板文件的不同,$body 所代表的具体内容也完全不同。

织梦手机版$body
(图片来源网络,侵删)

$bodyPC端模板 中的含义

在PC端的模板文件中(/templets/default/article_article.htm),$body 通常指的是文章或栏目内容的完整HTML代码

来源: 这个 $body 变量是由PHP后端程序在读取数据库中的 body 字段后,经过处理(如过滤、转换等)最终传递给模板引擎的。

作用: 在PC端模板中,$body 的主要任务就是完整地、忠实地显示文章内容

示例(PC端文章详情页 article_article.htm):

织梦手机版$body
(图片来源网络,侵删)
{dede:include filename="head.htm"/}
<div class="main">
    <h1>{dede:field.title/}</h1>
    <div class="info">
        <span>作者:{dede:field.author/}</span> |
        <span>时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}</span> |
        <span>来源:{dede:field.source/}</span>
    </div>
    <div class="content">
        <!-- 这里的 $body 就是文章的全部正文内容 -->
        {dede:field.body/}
    </div>
    <!-- ... 其他内容 ... -->
</div>
{dede:include filename="foot.htm"/}

在这个例子中,{dede:field.body/} 标签就等同于 $body 变量,它会输出文章在后台编辑器里输入的所有文字、图片、表格、视频等。


$body手机端模板 中的含义

在织梦手机版模板中,$body 的含义变得非常关键,因为它直接决定了的展示形式

织梦手机版通常有两种实现方式,$body 的处理方式也因此不同:

简单自适应模板(不推荐)

这种方式下,手机端和PC端使用的是同一套模板,通过CSS媒体查询(@media)来调整布局。

  • $body 的含义: 和PC端一样,它仍然是文章的完整HTML代码
  • 问题: 这种方式的体验很差,因为PC端编辑器插入的图片、表格、代码等,在手机端的小屏幕上会变得一团糟,需要用户左右滑动,阅读体验极差。

独立的手机模板(推荐)

这是目前主流且正确的做法,为手机端创建一套独立的模板文件(/templets/default/wap/article_article.htm),并且通过后台设置,让移动设备访问时自动调用这套模板。

在这种模式下,$body 的含义和使用方式发生了根本性的变化:

A. 直接使用 {dede:field.body/}(不推荐)

如果你直接在手机端模板里使用 {dede:field.body/},那么它输出的依然是PC端编辑的完整内容,这会导致所有问题(图片过大、布局错乱等)。在手机端模板中,应尽量避免直接使用 {dede:field.body/}

B. 使用 {dede:field.body/} 的函数修饰(核心用法) 自适应问题,织梦为 {dede:field.body/} 提供了强大的修饰功能,通过 function 参数来对 $body 进行处理,使其适合手机端显示。

最常用、最重要的修饰函数是 htmlspecialchars_decode

htmlspecialchars_decode 的作用: 这个函数的作用是将HTML实体转换回HTML标签,为什么需要这个?

因为织梦在保存文章内容到数据库时,为了安全和防止注入,会自动将 <, >, &, , 等字符转换成HTML实体(如 &lt;, &gt;),这样直接输出到模板上,用户看到的就是一堆代码,而不是渲染后的效果。

htmlspecialchars_decode 就是为了“解码”这些实体,让HTML标签(如 <img>, <p>, <div>)能够正常生效。

示例(手机端文章详情页 wap/article_article.htm):

{dede:include filename="head_wap.htm"/}
<div class="main">
    <h1>{dede:field.title/}</h1>
    <div class="info">
        <span>作者:{dede:field.author/}</span> |
        <span>时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}</span>
    </div>
    <div class="content">
        <!-- 
          这里是关键!
          1. {dede:field.body/} 获取原始的、经过HTML实体编码的 $body 内容。
          2. function="htmlspecialchars_decode" 将这些编码解码,让标签生效。
          3. 通常还会加上 'text-align:left' 来确保文字左对齐,符合手机阅读习惯。
        -->
        {dede:field.body function='htmlspecialchars_decode(@me)'/}
    </div>
    <!-- ... 其他内容 ... -->
</div>
{dede:include filename="foot_wap.htm"/}

C. 使用 {dede:field.body/} 的图片自适应修饰(高级用法)

仅仅解码还不够,文章中的图片通常尺寸很大,会超出手机屏幕,我们可以使用更复杂的函数来处理图片。

示例:自动为文章中的所有图片添加 max-width: 100%height: auto 样式,使其自适应屏幕宽度。

<div class="content">
    {dede:field.body 
        function='htmlspecialchars_decode(@me)'
        runphp='yes'
    }
        $str = @me;
        // 使用正则表达式,找到所有img标签
        $pattern = "/<img(.*?)src=['\"](.*?)['\"](.*?)>/i";
        $replacement = '<img$1 src="$2" style="max-width:100%;height:auto;"$3>';
        @me = preg_replace($pattern, $replacement, $str);
    {/dede:field.body}
</div>

这段代码通过 runphp='yes' 启用了PHP代码执行,然后用正则表达式找到所有<img>标签,并在其中动态添加 style="max-width:100%;height:auto;" 属性,从而实现图片的自适应。


模板类型 $body 的含义 常用标签和修饰 目的
PC端模板 文章的完整HTML内容 {dede:field.body/} 原样显示文章内容,适合PC大屏浏览。
手机端模板 (简单自适应) 文章的完整HTML内容 {dede:field.body/} 不推荐,会导致布局错乱,体验差。
手机端模板 (独立模板) 经过修饰后的、适合手机显示的HTML内容 {dede:field.body function='htmlspecialchars_decode(@me)'} 核心用法,解码HTML实体,让内容正常渲染,并配合CSS或PHP函数实现图片、布局的自适应,提供良好的移动端阅读体验。

在制作织梦手机版时,你需要忘记PC端 $body 的概念,在手机端模板中,$body(通过 {dede:field.body/} 调用)是一个需要被“加工”的原始数据,你必须使用 htmlspecialchars_decode 等函数对其进行处理,才能得到正确、美观、适合手机浏览的内容。

-- 展开阅读全文 --
头像
dede图片绝对地址如何设置?
« 上一篇 今天
dede抖音背景音乐怎么找?
下一篇 » 今天

相关文章

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

目录[+]