dede文章如何切换不同模板?

99ANYc3cd6
预计阅读时长 15 分钟
位置: 首页 DEDE建站 正文

是的,DedeCMS(织梦CMS)的文章完全可以使用不同的模板,这是DedeCMS一个非常核心和强大的功能,它允许网站管理员根据不同的栏目、不同的需求,为文章展示设置完全不同的样式和布局。

DedeCMS的模板系统是“栏目”驱动的,而不是整个网站只有一个固定的文章模板。

下面我将详细解释如何实现这一点,包括其原理、具体操作方法和高级技巧。


核心原理:栏目与模板的关联

在DedeCMS中,文章的最终显示页面是由以下几个因素决定的:

  1. 栏目设置:每个栏目都有一个独立的属性,其中最重要的属性之一就是“文章列表模板”和“页模板”。
  2. 文章模型:不同的文章模型(如普通文章、产品、软件下载等)也可以有不同的内容页模板。
  3. 特殊标记:通过一些特殊标记,可以在同一个模板中实现动态切换。

核心逻辑是: 当用户点击一篇文章进入内容页时,系统会首先查找这篇文章所属的栏目,然后使用该栏目设置的“页模板”来渲染这篇文章。


如何为不同栏目设置不同的模板

这是最常用、最标准的方法,假设你有两个栏目:“公司新闻”和“产品中心”,你希望它们的文章页面长得不一样。

操作步骤:

  1. 登录后台:使用管理员账号登录DedeCMS后台。

  2. 进入栏目管理:在左侧菜单中找到【栏目管理】->【栏目管理】。

  3. 选择并编辑栏目

    • 找到你想要设置模板的栏目,公司新闻”,点击其后面的【修改】按钮。
    • 在弹出的编辑页面中,找到“高级选项”或“栏目自定义属性”部分。
    • 找到“页模板”这个选项。
    • 点击输入框右侧的【选择】或【浏览】按钮,从你的模板目录(通常是 /templets/ 目录)中选择一个专门为“公司新闻”设计的模板文件,article_news.htm
    • 保存修改。
  4. 重复操作

    • 用同样的方法,编辑“产品中心”栏目。
    • 为它选择另一个不同的模板文件,article_product.htm
  5. 创建模板文件

    • 在你的 /templets/ 目录下,创建 article_news.htmarticle_product.htm 这两个文件。
    • 在这两个文件中,你可以编写完全不同的HTML结构和DedeCMS标签。
      • article_news.htm 可能只包含标题、正文、发布时间。
      • article_product.htm 除了基本信息外,还可能包含产品规格、价格、下载链接、相册等功能。

效果

  • 当用户访问“公司新闻”栏目下的任何一篇文章时,页面将使用 article_news.htm 模板来显示。
  • 当用户访问“产品中心”栏目下的任何一篇文章时,页面将使用 article_product.htm 模板来显示。

高级技巧:在同一模板中动态切换内容

你可能不想创建多个模板文件,而是希望在一个模板文件里,根据文章所属的不同栏目,显示不同的内容块,这可以通过DedeCMS的条件判断标签来实现。

实现方法:

在你的默认文章内容页模板(通常是 article_article.htm)中,使用 if 标签进行判断。

示例代码 (article_article.htm):

{dede:include filename="head.htm"/}
<div class="article-container">
    <h1>{dede:field.title/}</h1>
    <div class="article-info">
        <span>作者:{dede:field.writer/}</span>
        <span>时间:{dede:field.pubdate function="MyDate('Y-m-d H:i',@me)"/}</span>
        <span>来源:{dede:field.source/}</span>
    </div>
    <div class="article-content">
        {dede:field.body/}
    </div>
    <!-- ======== 核心部分:根据栏目ID动态显示不同内容 ======== -->
    {dede:if fieldtypeid == '1'}
        <!-- 如果文章属于栏目ID为1的“公司新闻”,则显示以下内容 -->
        <div class="news-related">
            <h3>相关新闻</h3>
            {dede:arclist row='5' titlelen='30'}
            <li><a href="[field:arcurl/]">[field:title/]</a></li>
            {/dede:arclist}
        </div>
    {/dede:if}
    {dede:if fieldtypeid == '2'}
        <!-- 如果文章属于栏目ID为2的“产品中心”,则显示以下内容 -->
        <div class="product-specs">
            <h3>产品规格</h3>
            <table>
                <tr><td>型号:</td><td>{dede:field.product_model/}</td></tr>
                <tr><td>价格:</td><td>{dede:field.product_price/}</td></tr>
            </table>
        </div>
        <div class="product-gallery">
            <h3>产品图片</h3>
            {dede:field.product_images function='getimgs(@me, 600, 400, 0, '')'/}
        </div>
    {/dede:if}
    <!-- 如果不属于以上任何栏目,可以显示一个默认内容或什么都不显示 -->
    {dede:if fieldtypeid != '1' && fieldtypeid != '2'}
        <!-- 默认内容或留空 -->
    {/dede:if}
</div>
{dede:include filename="footer.htm"/}

说明

  • fieldtypeid 是一个系统变量,代表文章所属栏目的ID。
  • 你需要先去后台查看你的“公司新闻”和“产品中心”栏目的ID,然后将 == '1'== '2' 修改成你自己的栏目ID。
  • 这种方法的好处是维护一个模板文件即可,但缺点是模板文件会变得比较臃肿,逻辑复杂。

使用文章模型实现差异化

DedeCMS还支持“文章模型”,可以理解为文章的“数据结构”,不同的模型可以有不同的自定义字段。

  • 例如:你可以创建一个“产品”模型,它除了标题、正文外,还有“价格”、“规格”、“下载地址”等自定义字段。
  • 你可以为“产品”模型设置一个专门的模板,当使用这个模型发布文章时,系统会自动调用对应的模板。

这种方法适合于数据结构差异巨大的内容类型,但设置起来比单纯换模板要复杂。


总结与建议

方法 优点 缺点 适用场景
按栏目设置模板 最标准、最清晰、性能最好、易于维护。 需要创建多个模板文件。 强烈推荐,绝大多数情况下都应使用此方法。
同一模板内条件判断 只需维护一个模板文件。 模板文件逻辑复杂,不易阅读和调试,可能影响性能。 栏目间差异不大,或需要在一个大系统里做细微调整时。
使用不同文章模型 数据结构完全不同,功能扩展性强。 配置复杂,需要创建模型、字段、模板,不适合新手。 产品、软件、下载等与普通文章数据结构差异巨大的类型。

给新手的建议

直接使用第一种方法——在栏目管理中为不同栏目设置不同的“文章内容页模板”,这是DedeCMS设计的初衷,也是最稳定、最不容易出错的方式,先掌握好这个基础,再根据需要去探索更高级的技巧。

-- 展开阅读全文 --
头像
优秀DEDE网站如何制作?
« 上一篇 03-12
dede物流查单系统如何实现实时查询?
下一篇 » 03-12

相关文章

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

目录[+]