微信小程序在 2019/03/29 号推出了 sitemap 功能。将会默认收录所有小程序的页面内容,用于微信搜索场景,这意味者开发者的小程序的曝光将会变多了。目前搜索小程序是根据小程序的名称和简介来搜索,以后可以根据内容来出结果,这就更像网页了。
小程序根目录下的 sitemapjson 文件用来配置小程序及其页面是否允许被微信索引。
完整配置项说明请参考 小程序 sitemap 配置
例1:
所有页面都会被微信索引,其他页面不会被索引
例2:
包含 a 和 b 参数的 path/to/page 页面都会被微信索引,其他页面不会被索引,例如:
path/to/page => 不被索引
path/to/pagea=1 => 不被索引
path/to/pagea=1&b=2 => 被索引
path/to/pagea=1&b=2&c=3 => 被索引
SiteMap 网站地图 在网站建设的时候是很有用的 它可以直接绑定在Men和TreeView控件上 还有一个指示当前路径的SiteMapPath控件 也可以直接绑定
这是他常用的xml定义 <siteMapNode url= Course/Group/GroupList aspx title= GroupAdmin >这个SiteMap的权限已经和Membership结合起来了 不同权限的用户所看到的地图已经被控制了 可以配置role属性来扩展例外的访问许可 注意 是例外的访问许可
<siteMapNode url= Course/Tests/TestList aspx title= TestAdmin role= student >这里有些介绍
简单的使用这里不作赘述 只是讨论一下怎么和扩展一下 让他可以访问资源时附带参数
首先介绍这样一个资源 MySiteMapTool 这位仁兄已经提供了一个工具 可以在程序中转发带参数的请求比如 MySiteMap Forward( Details AlbumID={ }&Page={ } ) 确是简单实用
现在想要的功能是 因为各个液面都需要不同的参数 所以在没有这些参数的情况下就禁止用户访问那个页面 转而访问父一级页面 递归
首先 SiteMap本身有个SiteMapResolve事件 在当前路径被解析时触发 这是一段来自MSDN的代码
private void Page_Load(object sender EventArgs e)
{ // The ExpandForumPaths method is called to handle // the SiteMapResolve event SiteMap SiteMapResolve += new SiteMapResolveEventHandler(this ExpandForumPaths) }
private SiteMapNode ExpandForumPaths(Object sender SiteMapResolveEventArgs e)
{ // The current node represents a Post page in a bulletin board forum // Clone the current node and all of its relevant parents This // returns a site map node that a developer can then // walk modifying each node Url property in turn // Since the cloned nodes are separate from the underlying // site navigation structure the fixups that are made do not // effect the overall site navigation structure SiteMapNode currentNode = SiteMap CurrentNode Clone(true) SiteMapNode tempNode = currentNode
// Obtain the recent IDs int forumGroupID = GetMostRecentForumGroupID() int forumID = GetMostRecentForumID(forumGroupID) int postID = GetMostRecentPostID(forumID)
// The current node and its parents can be modified to include // dynamic querystring information relevant to the currently // executing request if ( != postID)
{ tempNode Url = tempNode Url + ?PostID= + postID ToString() }
if ((null != (tempNode = tempNode ParentNode)) &&( != forumID))
{ tempNode Url = tempNode Url + ?ForumID= + forumID ToString() }
if ((null != (tempNode = tempNode ParentNode)) &&( != forumGroupID))
{ tempNode Url = tempNode Url + ?ForumGroupID= + forumGroupID ToString() }
return currentNode }
这段代码只是给当前路径加载参数
曾经尝试过使用类似的方法 但是SiteMapPath搞定了 Menu就绑定不上数据了 并且只能处理一部分数据
后来 结合SiteMapTool那个类 又写出几个函数可以解决这个问题这是修改之后的sitemap文件 加了一个配置项 rule 里面的参数是这个页面需要的参数 如果当前上下文没有这些参数 那么禁止用户访问这个页面
<siteMapNode url= Course/Group/GroupDetail aspx title= Group Detail rule= cid gid >这是两个函数 递归处理所有的路径 private string MakeURL(SiteMapNode node)
{ node ReadOnly = false //find the static url string url = MySiteMap FindForward(node Title) if (node[ rule ] != null && node[ rule ] Length > )
{ //if have the rule then check string[] paramSet = node[ rule ] Split( ) //check for (int i = i < paramSet Length i++)
{ //if request have not such a param then invoke self to check his parent if (>
以上就是关于微信小程序推出了sitemap,收录小程序内容用于搜索等多个场景全部的内容,包括:微信小程序推出了sitemap,收录小程序内容用于搜索等多个场景、使用asp.net2.0中的SiteMap中的一些问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)