内容页如何调用相关信息

内容页调用相关信息可以吸引搜索引擎蜘蛛爬行,也可以吸引用户流量,如下图:

1.png

调用相关信息主要有两种:根据发布时间调用和后台指定来调用,下面分别给出简化的演示代码,使用时候可以自行修改。

一、根据发布的显示顺序调用,这种是最简单,下面直接列出代码:

    @{
        int columnId=Html.CurrentColumnId();
        //显示最新的8条,OrderBy改为newid()则可随机调用,大数据下速度慢不推荐。
        var dataList=Html.InfoDataList(new {ColumnId=columnId, ShowNumber=8, OrderBy="thedate desc"});
    }
    <div>相关内容</div>
    <ul>
        @foreach (var item in dataList)
        {
            var url=Html.InfoDataUrl((int)item.ColumnId, (int)item.Id);
            var date=item.Thedate;
            <li>
                <a href="@url" target="_blank">@item.Title</a>
                <span>@date</span>
            </li>
        }
    </ul>


二、后台指定调用,这个也是目前最常用的方式,需要到信息表中创建一个自定义字段来做信息选择器,下面为设置步骤。

2.1、首先到信息表中添加一个名为RelativeIds(名称可根据使用习惯自行修改)的字段,类型为下拉表单,选择类型为多线,数据源表选择news(数据来源表)表,如下图:1.png

2.png

参考以上设置,一定要勾选使用数据源,字段添加完毕后,回到信息发布界面就可以选择相关信息,如下图:

1.png

这个字段值保存在数据库中的格式为“1,2,3,4"的形式,即多个id逗号隔开,在模板中只需要获取这个字段值后就可以通过sql的in查询出对应的数据,代码如下:

    @{
        dynamic infoData=Html.InfoData();
        //获取相关信息字段的值,然后构造id in()条件查询数据
        string relativeIds=infoData.RelativeIds;
        int columnId=Html.CurrentColumnId();
    }
    @{
        //注意这个值可能为空,需要做判断处理,如果为空值不读取。
        if (!string.IsNullOrEmpty(relativeIds))
        {
            //注意,Table属性值必须和字段的数据源表保持一致
            var dataList=Html.InfoDataList(new { Table="news", ShowNumber=8, OrderBy="thedate desc" }, "id in(" + relativeIds + ")");
            <div>相关内容</div>
            <ul>
                @foreach (var item in dataList)
                {
                    var url=Html.InfoDataUrl((int)item.ColumnId, (int)item.Id);
                    var date=item.Thedate;
                    <li>
                        <a href="@url" target="_blank">@item.Title</a>
                        <span>@date</span>
                    </li>
                }
            </ul>
        }
    }


注:数据超过10万以上后,以上代码速度很效率都非常低,建议把relativeIds拆分成多个id,然后通过id精确查询来组合数据。