DTcms如何在列表页面直接调用文章附件并实现点击后直接下载
  • 分享到微信朋友圈
    X

文章内容

dtcms做网站有的时候需要实现在列表页面直接下载文章附件的功能,可以dtcms并没有这个功能,那么应该怎么写呢?上代码

<div class="container">
    <ul>
        <%set DataTable down_list=get_article_list(channel, category_id, pagesize, page, "status=0", out totalcount, out pagelist, "down", category_id, "__id__")%>
        <!--取得一个分页DataTable-->
        <%foreach(DataRow dr in down_list.Rows)%>
        <%set DTcms.Model.article models=get_article_model("down",{strtoint({dr[id]})})%>
        <%foreach(DTcms.Model.article_attach xz in models.attach)%>
        <li><a href="{xz.file_path}">
            <div class="txt">
                <h3>
                    {dr[title]}
                </h3>
                <p>
                    <%cutstring({dr[content]},200)%>
                </p>
                <span>查看更多 &gt;</span>
            </div>
        </a></li>
        <%/foreach%>
        <%/foreach%>
    </ul>
    <div class="digg">
        {pagelist}
    </div>
</div>

那么发现一个问题dtcms并没有get_article_model()这个方法,我们找个一下DTcms.BLL里面的一个文件article.cs有一个方法,如下:

public Model.article ArticleModel(string channel_name, int article_id)
{ 
}

那就直接写一个方法get_article_model(),写在DTcms.Web.UI/Label/article.cs文件里面,代码如下

/// <summary>
/// 根据调用标识取得内容
/// </summary>
/// <param name="channel_name">频道名称</param>
/// <param name="article_id">文章id</param>
/// <returns>Model.article</returns>
protected Model.article get_article_model(string channel_name, int article_id)
{
    if (!string.IsNullOrEmpty(channel_name))
    {
        return new BLL.article().ArticleModel(channel_name, article_id);
    }
    else
    {
        return null;
    }
}