织梦 一个栏目两个模板

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

通过调用不同字段(最推荐、最简单)

这是最常用且最简单的方法,它利用了织梦自带的文章推荐/置顶功能,你可以在后台为需要特殊显示的文章打上“推荐”或“置顶”的标签,然后在模板中分别调用。

核心思路:

  • 模板文件: 只需要一个列表模板文件(list_article.htm)。
  • 实现方式: 在模板文件内,使用 {dede:arclist} 标签分别调用“推荐”文章和“普通”文章,并为它们套用不同的HTML结构。

操作步骤:

第一步:在后台设置栏目模板

  1. 登录织梦后台。
  2. 进入【栏目管理】,找到你需要设置的栏目。
  3. 点击该栏目右侧的【更改】或【管理】。
  4. 在栏目编辑页面,找到“列表模板”选项。
  5. 选择一个你准备好的、包含了两种样式的列表模板(我们下面会创建这个模板文件),list_article.htm
  6. 保存设置。

第二步:创建并编辑列表模板文件 在你的模板目录(通常是 /templets/default/ 或你自定义的目录下)创建或编辑 list_article.htm 文件,并写入如下代码:

{dede:include filename="head.htm"/}
<div class="main">
    <div class="location"><a href='{dede:global.cfg_cmsurl/}/'>首页</a> &gt; <a href='{dede:type typeid='0'}'[field:typelink /]{/dede:type} ></a></div>
    <!-- ==================== 模板一:用于显示推荐文章 ==================== -->
    <div class="featured-articles">
        <h2>精选推荐</h2>
        <ul>
            {dede:arclist flag='c' titlelen='40' row='5'}
            <li>
                <!-- 这里是推荐文章的样式,可以更华丽 -->
                <a href="[field:arcurl/]">[field:title/]</a>
                <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
            </li>
            {/dede:arclist}
        </ul>
    </div>
    <!-- ==================== 模板二:用于显示普通文章 ==================== -->
    <div class="normal-articles">
        <h2>最新文章</h2>
        <ul>
            {dede:arclist titlelen='40' row='10'}
            <li>
                <!-- 这里是普通文章的样式,可以更简洁 -->
                <a href="[field:arcurl/]">[field:title/]</a>
                <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
            </li>
            {/dede:arclist}
        </ul>
    </div>
    <!-- ==================== 分页 ==================== -->
    <div class="page_link">
        {dede:pagelist listsize='4' listitem='info,index,end,pre,next,pageno'}
    </div>
</div>
{dede:include filename="footer.htm"/}

代码解释:

  • {dede:arclist flag='c' row='5'}: 这是调用推荐文章的关键。
    • flag='c'c 代表“推荐”(commend),你也可以使用 flag='h'(头条)、flag='p'(图片)等,或者组合使用如 flag='ch'
    • row='5':表示调用5篇推荐文章。
    • 这部分被包裹在一个 <div class="featured-articles"> 中,你可以为这个 div 在CSS里定义特殊的样式,比如加背景、边框等。
  • {dede:arclist titlelen='40' row='10'}: 这是调用普通文章。
    • 没有 flag 属性,默认调用所有非推荐的文章。
    • 这部分被包裹在 <div class="normal-articles"> 中,使用默认的列表样式。
  • {dede:pagelist}: 这是织梦的分页标签,它会自动对当前栏目下的所有文章进行分页,无论它们是推荐还是普通。

通过自定义模型字段(最灵活)

如果推荐/置顶无法满足你的需求(比如你想让某个专题下的文章用A模板,另一个专题下的用B模板),那么自定义模型字段是更灵活的选择。

核心思路:

  1. 创建一个自定义字段,templet_style,类型为“单选按钮”。
  2. 在发布文章时,为每篇文章选择它应该使用的样式。
  3. 在列表模板中,通过判断这个字段的值来加载不同的HTML结构。

操作步骤:

第一步:创建自定义字段

  1. 进入后台【核心】 -> 【内容模型管理】。
  2. 选择你当前文章所使用的模型(通常是“文章”),点击【更改】。
  3. 在字段管理页面,点击【添加新字段】。
  4. 填写字段信息:
    • 字段名称: templet_style (英文字母,不能有特殊符号)
    • 字段别名: 模板样式 (方便识别)
    • 字段类型: radio (单选按钮)
    • 字段值: styleA,模板A;styleB,模板B (用英文逗号隔开选项,用英文分号隔开选项和显示名称)
    • 保存
  5. 重要! 返回字段列表,找到你刚创建的 templet_style 字段,点击后面的【更新系统缓存】。

第二步:在发布文章时选择样式

  1. 发布或编辑一篇文章时,你会看到多了一个“模板样式”的选项。
  2. 为你需要特殊显示的文章选择 styleA,其他的保持默认或选择 styleB

第三步:编辑列表模板文件list_article.htm 中,使用 {dede:list}if 判断来实现。

{dede:include filename="head.htm"/}
<div class="main">
    <div class="location">...</div> <!-- 同上 -->
    <div class="article-list">
        {dede:list pagesize='10'}
        <!-- ==================== 根据字段值判断使用哪个模板 ==================== -->
        [field:array runphp='yes']
            if(@me['templet_style'] == 'styleA') {
                // 模板A的HTML结构
                @me = '<div class="article-item style-a"><h3><a href="'.@me['arcurl'].'">'.@me['title'].'</a></h3><p>'.@me['description'].'</p></div>';
            } else {
                // 模板B的HTML结构 (默认)
                @me = '<div class="article-item style-b"><a href="'.@me['arcurl'].'">'.@me['title'].'</a><span>'.@me['pubdate'].'</span></div>';
            }
        [/field:array]
        {/dede:list}
    </div>
    <!-- ==================== 分页 ==================== -->
    <div class="page_link">...</div> <!-- 同上 -->
</div>
{dede:include filename="footer.htm"/}

代码解释:

  • [field:array runphp='yes']...[/field:array]:这是一个强大的用法,可以在循环中获取当前文章的所有字段信息,并存入 @me 数组。
  • if(@me['templet_style'] == 'styleA'):判断自定义字段 templet_style 的值是否为 styleA
  • @me = '...':如果条件成立,就为 @me 赋予模板A的HTML字符串;否则,赋予模板B的HTML字符串。
  • 这种方法极其灵活,可以定义任意多的样式。

通过指定文章模板(最不推荐,仅作了解)

这个方法可以实现,但非常不推荐,因为它会破坏列表页的分页逻辑,导致分页后样式错乱。请尽量避免使用此方法。

核心思路: 为每一篇需要特殊样式的文章,在后台单独指定一个模板文件。

操作步骤:

  1. 在你的模板目录下创建两个独立的文章模板,article_style1.htmarticle_style2.htm
  2. 进入后台【系统】 -> 【系统基本参数】 -> 【核心设置】
  3. 找到“文章列表命名规则”和“文章命名规则”,确保它们没有被修改为静态文件名({typedir}/{aid}.html),否则此方法无效。
  4. 发布文章时,在“高级选项” -> “自定义文件名”中,为需要特殊样式的文章手动填写模板文件名,article_style1.htm
  5. 列表模板 {dede:list} 会直接调用这个自定义模板,而不是统一的列表样式。

为什么不推荐?

  • 破坏分页: 列表页的分页是基于“调用统一模板”的实现的,一旦某篇文章指向了不同的模板,分页逻辑就会失效,下一页可能就找不到这篇文章了,或者样式完全混乱。
  • 维护困难: 每篇文章都要手动设置,文章一多,管理起来就是一场灾难。

总结与建议

方法 优点 缺点 适用场景
调用不同字段 简单、高效、原生支持、不破坏分页 灵活性相对较低,依赖文章的推荐/置顶状态 绝大多数场景,如“推荐文章”和“普通文章”分开展示。
自定义模型字段 极其灵活、可扩展性强 需要修改模型和数据库,对新手稍复杂 需要根据文章内容、分类等复杂条件来指定不同样式的场景。
指定文章模板 实现简单(概念上) 严重破坏分页、维护性极差 极其不推荐,仅在极少数、不依赖分页的单页展示场景下考虑。

给你的建议:

  • 如果你只是想把推荐/置顶文章和普通文章分开显示,请毫不犹豫地选择【方法一】。 这是最正确、最织梦的做法。
  • 如果你有更复杂的分类需求,教程”类文章用一种样式,“新闻”类用另一种,方法二】是你的最佳选择。
-- 展开阅读全文 --
头像
fread是c语言还是c 语言
« 上一篇 01-04
dede sql命令修改aid
下一篇 » 01-04

相关文章

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

目录[+]