dede列表页如何调用头条内容?

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

最简单的方法(使用flag属性)

这是最直接的方法,通过在列表页的底层模板(list_article.htm)中使用flag属性判断来实现。

dede列表页调用头条
(图片来源网络,侵删)

适用场景:只想在文章标题前或后简单加上一个“头条”的标识文字。

操作步骤:

  1. 打开列表页模板文件 找到您当前使用的列表页模板文件,通常是 /templets/您的文件夹名称/list_article.htm

  2. 找到文章标题的代码 在模板文件中,找到循环输出文章标题的代码,它通常是这样的:

    dede列表页调用头条
    (图片来源网络,侵删)
    <a href='[field:arcurl/]'>[field:title/]</a>
  3. 修改代码,加入头条判断 将上面的代码修改为以下形式,使用field:flag/来判断文章是否包含“头条”属性。

    {dede:field name='array' runphp='yes'}
        if (@me['flag'] == 'c' || @me['flag'] == 'a' || @me['flag'] == 'h') {
            @me = "<span class='top-tag'>[头条]</span>" . @me['title'];
        } else {
            @me = @me['title'];
        }
    {/dede:field}

    或者,更推荐使用in运算符,代码更简洁:

    {dede:field name='array' runphp='yes'}
        if (strpos(@me['flag'], 'c') > 0) {
            @me = "<span class='top-tag'>[头条]</span>" . @me['title'];
        } else {
            @me = @me['title'];
        }
    {/dede:field}
  4. 组合成完整的链接 将处理好的标题包裹在链接标签内。

    完整示例代码:

    <li>
        <span class="title">
            <!-- 这是修改后的头条判断代码 -->
            <a href="[field:arcurl/]">
                {dede:field name='array' runphp='yes'}
                    if (strpos(@me['flag'], 'c') > 0) {
                        @me = "<span class='top-tag'>[头条]</span>" . @me['title'];
                    } else {
                        @me = @me['title'];
                    }
                {/dede:field}
            </a>
        </span>
        <span class="date">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>
    </li>
  5. 添加CSS样式(可选) 为了让“头条”标签更醒目,可以在您的CSS文件中添加如下样式:

    .top-tag {
        color: #ff0000; /* 红色 */
        font-weight: bold;
        margin-right: 5px;
    }

使用SQL直接查询(最灵活、最强大的方法)

如果您的需求更复杂,比如想在列表页只显示头条文章,或者将头条文章排在最前面,那么直接修改列表页的SQL查询语句是最佳选择。

适用场景

  • 创建一个专门的“头条列表”页面。
  • 在普通列表页中,让头条文章排在最前面。
  • 统计并显示某个栏目的头条文章数量。

操作步骤:

  1. 找到列表页的PHP文件 列页的数据由PHP文件生成,而不是直接由模板文件决定,这个文件通常位于 /include/arc.listview.class.php

  2. 修改SQL查询语句 用文本编辑器(如VS Code, Sublime Text, Notepad++)打开 arc.listview.class.php 文件。

    • 查找SelectSql函数:在文件中搜索 function SelectSql(),这是用来构建最终SQL查询语句的函数。

    • 找到$this->dsql->SetQuery($this->addSql);:在这行代码之前,你会看到 $this->addSql 的构建过程,我们需要在这里修改它。

    示例1:让头条文章排在列表最前面

    $this->addSql 的赋值语句中,找到 order by 部分,并修改它,默认可能是 order by id descorder by pubdate desc

    修改为:

    // 在 $this->addSql 的赋值语句中找到 order by 部分
    // 原来是:
    // $this->addSql .= " arc.id desc ";
    // 修改为:
    $this->addSql .= " 
        CASE 
            WHEN arc.flag LIKE '%c%' THEN 0 
            WHEN arc.flag LIKE '%h%' THEN 1 
            WHEN arc.flag LIKE '%p%' THEN 2 
            ELSE 3 
        END,
        arc.id desc 
    ";

    这段SQL的意思是:如果文章的flag字段包含c(头条),则排序值为0;包含h(推荐)则为1;包含p(图片)则为2;其他则为3,然后按这个自定义的排序值和ID降序排列,这样,所有头条文章就会排在最前面。

    示例2:只显示头条文章

    如果你想创建一个只显示头条文章的列表页(比如栏目ID=5的头条列表),你需要修改获取文章ID列表的SQL。

    找到 function GetArcList($typeid=0, $innertext='', $isreclass=0) 函数内部,或者在 SelectSql 函数中修改 where 条件。

    // 在构建 $this->addSql 的 where 条件时,增加对 flag 的限制
    // 原来的 where 条件可能类似这样:
    // $this->addSql .= " And arc.arcrank > -1 ";
    // 修改为:
    $this->addSql .= " And arc.arcrank > -1 And (arc.flag LIKE '%c%' OR arc.flag LIKE '%h%') ";

    这里的 arc.flag LIKE '%c%' 表示查询flag字段中包含字符c的记录,也就是头条文章。


调用指定栏目的头条(常用)

有时候我们想在列表页调用其他栏目的头条文章,而不是当前栏目的,这需要使用DedeCMS的自定义标记。

适用场景

  • 在新闻列表页,调用产品栏目的头条。
  • 在文章页侧边栏,调用推荐栏目的头条。

操作步骤:

在您需要显示的位置(比如列表页模板的侧边栏 list_article.htm 或文章页 article_article.htm),直接使用以下Dede标签:

{dede:arclist flag='c' typeid='目标栏目ID' row='5' titlelen='30'}
    <li>
        <a href="[field:arcurl/]">[field:title/]</a>
    </li>
{/dede:arclist}

标签参数说明:

  • flag='c':这是关键!c 代表“头条”,你也可以用 h 代表“推荐”,p 代表“图片”,j 代表“跳转”,多个属性可以用 flag='ch' 这样的形式。
  • typeid='目标栏目ID':指定你要调用哪个栏目的头条。'0' 表示调用所有栏目的,'-1' 表示调用除了当前栏目外的所有栏目,你需要填写具体的栏目ID。
  • row='5':调用5条头条文章,len='30'`:标题长度,最多显示30个字符。

总结与建议

方法 优点 缺点 适用场景
flag属性 简单、直接、无需修改PHP文件。 功能有限,只能在模板内做简单判断。 绝大多数情况,只需在标题旁加个“头条”标签。
SQL查询 最强大、最灵活,能从根本上改变列表逻辑。 需要修改核心PHP文件,升级Dede时可能被覆盖。 需要自定义头条排序、创建独立头条列表等复杂需求。
arclist 灵活、可跨栏目调用,符合Dede的设计理念。 只能在非列表页(如首页、文章页、其他列表页侧边栏)使用。 在一个列表页中调用其他栏目的头条文章。

对于大多数用户来说,方法一已经足够满足日常需求,如果需要更复杂的功能,再考虑方法二,而方法三则是实现跨栏目内容调用的标准做法。

-- 展开阅读全文 --
头像
Linux下C语言编程如何快速入门?
« 上一篇 今天
织梦CMS手机站建设如何高效适配多终端?
下一篇 » 今天

相关文章

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

目录[+]