在一些平台网站,经常可以看到一些获取全站的文章推荐显示的功能模块,而XHTcms各个频道对应不同的详情页链接,只有搜索search.cs的方法URL重写对应各自的详情页链接,跟我们所要实现的效果最为接近,现有的方法没法满足这一需求,因此需要自己动手写一个方法来方便我们实现全站记录的调用。


        XHTcms.Web.UI / label / article.cs

/// <summary>
/// 文章列表(全站)
/// </summary>
/// <param name="top">显示条数</param>
/// <param name="strwhere">查询条件</param>
/// <returns>DataTable</returns>
protected DataTable get_article_list(int top, string strwhere, string orderby)
{
    //创建一个DataTable
    DataTable dt = new DataTable();
    dt.Columns.Add("id", Type.GetType("System.Int32"));
    dt.Columns.Add("title", Type.GetType("System.String"));
    dt.Columns.Add("remark", Type.GetType("System.String"));
    dt.Columns.Add("tags", Type.GetType("System.String"));
    dt.Columns.Add("channel_id", Type.GetType("System.String"));
    dt.Columns.Add("category_id", Type.GetType("System.String"));
    dt.Columns.Add("link_url", Type.GetType("System.String"));
    dt.Columns.Add("add_time", Type.GetType("System.String"));
    dt.Columns.Add("img_url", Type.GetType("System.String"));
    dt.Columns.Add("click", Type.GetType("System.String"));
    DataSet ds = new DataSet();
    ds = new BLL.article().GetList(top, strwhere, orderby);
    if (ds.Tables[0].Rows.Count > 0)
    {
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            DataRow dr1 = ds.Tables[0].Rows[i];
            string link_url = new XHTcms.Web.UI.Page.search().get_url_rewrite(Utils.StrToInt(dr1["channel_id"].ToString(), 0), dr1["call_index"].ToString(), Utils.StrToInt(dr1["id"].ToString(), 0));
            if (!string.IsNullOrEmpty(link_url))
            {
                DataRow dr = dt.NewRow();
                dr["id"] = dr1["id"]; //自增ID
                dr["title"] = dr1["title"]; //标题
                dr["remark"] = dr1["zhaiyao"]; //摘要
                dr["tags"] = dr1["tags"]; //标签
                dr["link_url"] = link_url; //链接地址
                dr["add_time"] = dr1["add_time"]; //发布时间
                dr["channel_id"] = dr1["channel_id"]; //频道ID
                dr["category_id"] = dr1["category_id"]; //类别ID
                dr["img_url"] = dr1["img_url"]; //发布时间
                dr["click"] = dr1["click"]; //点击次数
                dt.Rows.Add(dr);
            }
        }
    }
    return dt;
}

        由于URL重写的方法是来自XHTcms.Web.UI / page / search.cs,因此需要在该文件做一点小修改。

//查找匹配的URL
private string get_url_rewrite(int channel_id, string call_index, int id)
修改成:
public string get_url_rewrite(int channel_id, string call_index, int id)1234
代码

        前台的调用方法:

<%set DataTable all=get_article_list(10, "status=0", "id desc")%>
<%foreach(DataRow dr in all.Rows)%>
    ...
<%/foreach%>