pageadmin模板_Pageadmin 系统创建站点地图sitemap.xml的方法

最近使用了Pageadmin这个建站系统建了一个简单的网站。为什么没有使用PHP+MySQL,是因为原来这个云主机已经有了一个IIS+SQL组合的网站了,为了统一,所以找了支持这个平台的Pageadmin来建站。Pageadmin系统的使用可以说好,也可以说不好。一言难尽。
默认系统是不支持自动生成站点地图的,论坛上倒是有说可以通过插件来实现,但现在用的是免费的,暂时没有了插件的支持。官网上有一篇通过自定义路由实现百度SiteMap文件-PageAdmin 的帮助,但是其中有些错误的地方,导致生成不成功的。而百度了全网,几乎都是这个帮助文档的COPY,没有其他的参考意义。

56ec8cb33302367bf0088f8414a45b9b.png

相关的代码如下:

@{
    Layout = null;
    string table = Request.QueryString["table"];
    string domain = "http://localhost:800/buildSiteMap.cshtml";//localhost:800改为您的网站域名,必须是外网域名
    
    //生成栏目siteMap
    if (table=="column")
    {
        <!--?xml version="1.0" encoding="utf-8" ?-->
          <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">
            @foreach (var item in Html.GetColumnList().Where(c => c.Show == 1 && c.ColumnType <= 2))
            {
            string url = Html.ColumnUrl((int)(item.Id));
                <url>
                    <mobile:mobile type="pc,mobile">
                    <loc>@url</loc>
                    <lastmod>@DateTime.Now.ToString("yyyy-MM-dd")</lastmod>
                    <changefreq>weekly</changefreq>
                    <priority>0.8</priority>
                </mobile:mobile></url>
            }
        </urlset>
        }
    //生成信息表的siteMap
    else if (!string.IsNullOrEmpty(table))
    {
            <!--?xml version="1.0" encoding="utf-8" ?-->
                    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
                        @foreach (var item in Html.InfoDataList(new { Table = table, ShowNumber = 1500 }))
                        {
                            <url>
                                <mobile:mobile type="pc,mobile">
                                <loc>http://www.pageadmin.net/jianzhan/@(item.Id).cshtml</loc>
                                <lastmod>@item.Thedate.ToString("yyyy-MM-dd")</lastmod>
                                <changefreq>weekly</changefreq>
                                <priority>0.5</priority>
                            </mobile:mobile></url>
                        }
    }
                    </urlset>
    }
    else
    {
        HttpRequestHelper httpRequestHelper = new HttpRequestHelper();
        //生成栏目siteMap文件
        IOHelper.CreateFile("/columnSiteMap.xml", httpRequestHelper.Get(domain+"?table=column").Trim(), true);
        //生成product表的siteMap文件,必须保证news信息表实际存在
        IOHelper.CreateFile("/productSiteMap.xml", httpRequestHelper.Get(domain+"?table=product").Trim(), true);
        //生成news表的siteMap文件,必须保证news信息表实际存在
        IOHelper.CreateFile("/newsSiteMap.xml", httpRequestHelper.Get(domain+"?table=news").Trim(), true);
        //更多信息表可以自行添加IOHelper.CreateFile方法,table参数改为信息表名即可
        Response.Write("sitemap文件生成成功!");
    }

}

这里面,有几个地方错误了,附注里面有写出来的,也有没有写出来的。还是要经过摸索,经过不断的调试后,才能找到真正准确的。

首先,还是按照帮助文档的指引,在模板文件下的 MyRoute.config 文件中插入路由:

<route urlConstraint="^buildSiteMap.cshtml$"  viewPath="siteMap/siteMap.cshtml" httpcacheSolutionId="0" title=""></route>

这里的意思就是类似于一种快捷方式的作用,把buildSiteMap.cshtml 这个文件指向真正的文件。嫌麻烦的话也可以不加,到时候直接输入真实路径就行了。
其次,在模板目录的Views目录下新一个siteMap/siteMap.cshtml ,内容如帮助文件,但是在第4行:

http://localhost:800/buildSiteMap.cshtml


这里把localhost:800 改成你这个网站实际的域名,如www.iappi.cn ,否则是运行就报错的。
在15、32行

<mobile:mobile type="pc,mobile">

:自适应网页
这里可以加上去,也可以去掉这2行,这是百度搜索增加的规则,正常浏览器打开生成的xml文件会对其报错。
在第33行,埋伏了一个小雷:

http://www.pageadmin.net/jianzhan/@(item.Id).cshtml


这里生成的链接将会全部是http://www.pageadmin.net/jianzhan/12.cshtml 这样子的,完全是错误了,需要按照网站的实际来修正。
实际上Pageadmin系统本身已经支持获得每个页面的真实URL了,因此,我们仅需要对url进行定义后,再引用url这个变量就行了。

string url = Html.InfoDataUrl((int)item.ColumnId, (int)item.Id);
<loc>@url</loc>


这样就可以得到相关的url了。

e99ad0b6087468aa8af2082885f4a25a.png

这样只要打开buildSiteMap.cshtml 就会生成相应的三个sitemap文件了,可以提交给各搜索引擎。
完整代码如下:

@{
    Layout = null;
    string table = Request.QueryString["table"];
    string domain = "https://www.iappi.cn/buildSiteMap.cshtml";//l改为您的网站域名,必须是外网域名
    
    //生成栏目siteMap
    if (table=="column")
    {
        <?xml version="1.0" encoding="utf-8" ?>
          <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">
            @foreach (var item in Html.GetColumnList().Where(c => c.Show == 1 && c.ColumnType <= 2))
            {
            string url = Html.ColumnUrl((int)(item.Id));
                <url>
                    <loc>@url</loc>
                    <lastmod>@DateTime.Now.ToString("yyyy-MM-dd")</lastmod>
                    <changefreq>weekly</changefreq>
                    <priority>0.8</priority>
                </url>
            }
        </urlset>
        }
    //生成信息表的siteMap
    else if (!string.IsNullOrEmpty(table))
    {
            <?xml version="1.0" encoding="utf-8" ?>
                    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
                        @foreach (var item in Html.InfoDataList(new { Table = table, ShowNumber = 1500 }))
                        {
						string url = Html.InfoDataUrl((int)item.ColumnId, (int)item.Id);
                            <url>
                                <loc>@url</loc>
                                <lastmod>@item.Thedate.ToString("yyyy-MM-dd")</lastmod>
                                <changefreq>weekly</changefreq>
                                <priority>0.5</priority>
                            </url>
                        }
                    </urlset>
    }
    else
    {
        HttpRequestHelper httpRequestHelper = new HttpRequestHelper();
        //生成栏目siteMap文件
        IOHelper.CreateFile("/columnSiteMap.xml", httpRequestHelper.Get(domain+"?table=column").Trim(), true);
        //生成product表的siteMap文件,必须保证news信息表实际存在
        IOHelper.CreateFile("/productSiteMap.xml", httpRequestHelper.Get(domain+"?table=product").Trim(), true);
        //生成news表的siteMap文件,必须保证news信息表实际存在
        IOHelper.CreateFile("/newsSiteMap.xml", httpRequestHelper.Get(domain+"?table=news").Trim(), true);
        //更多信息表可以自行添加IOHelper.CreateFile方法,table参数改为信息表名即可
        Response.Write("sitemap文件生成成功!");
    }
}

存在的问题:生成了三个sitemap.xml ,而不是一个完整的文件。

其次,生成的链接是http的,而不是https的链接。这些问题有待后续来改进了。

更多:Pageadmin 系统创建站点地图sitemap.xml的方法 – 程门立学

Pageadmin 系统创建站点地图sitemap.xml的方法​www.iappi.cn
52f611e7be956ce784b03a231d2e6ba8.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值