加载中 ... ...
十一月 24 2008

SiteFactory如何实现多种列表方式切换 hits

作者:山顶洞羊顶:8踩:7评论:6 2009-12-13 20:57:00更新 简洁查看

淘宝:



京东:



QQ空间:




本站:


在博客、商城中,内容列表页或商品列表页,通过提供多种列表方式给浏览网页的人去选择以改善用户体验的设计,正被广泛地使用。在SiteFactory能否实现这一效果呢?答案是肯定的。而且还可以实现得很好。

在SF系统中,列表页只能设置两个模板,而且其中一个还是不能分页的。如果两个列表页都要求可以分页,或者需要两种以上列表样式,就要考虑别的方法了。系统也不可能为了这个效果去支持好多个列表页模板。
本文介绍的方法是通过增加列表页的地址参数实现的。

(*重要)打开SF网站根目录下的Config文件夹中的QueryStrings.config文件,查找Category.aspx,增加如下项
 

这样,在模板或者静态标签中,就可以通过 来获取到列表页地址的值了,比如:
http://www.ks-pe.com/Category_1/index.aspx?ListStyle=SimList

有了这个参数,我们就可以通过标签来判断该用哪一种列表方式来显示了。大概的思路如下:
 


如果看不懂上面的代码,可以先看下这篇文章,学习一下SF标签的基本知识:
http://www.ks-pe.com/article/9.html



本文的方法只是抛砖引玉,实际应用中还可以更灵活;也可以实现得更细致更完美一些,比如配置 UrlRewriteSettings.config 文件来对地址映射一下来隐藏参数,加入Cookie来记录用户上一次的浏览样式,通过Ajax写入标签来实现无刷新切换,还可以通过Ajax载入的办法解决静态生成的问题……
 

2009-03-24 更新:
有不少人看了这个教程,觉得很有用,并开始动手制作自己的列表样式了。但往往会因为跳过了配置QueryStrings.config而总是转不进参数,所以上面用红色标了下。
配置文件这一步很重要,但也只是一小步而已,更重要的还是标签的制作。
这个参数传递,搭配一些灵活的标签,一些精心设计的样式,可以实现好多有趣的效果。

我顶8人顶)
我踩7人踩)
评论
  • [cc_guodong]
    还请详细说说呀,我用的是SF3.5~
    山顶洞羊回复:现在的BizIdea商城默认模板已经有这样的功能了,包括3.5版。可是你是SF的话……只好下个BI参考改下了。
  • [cc_guodong]
    生成静态页,通过Ajax载入标签能给个大体的思路和方法吗?
    山顶洞羊回复:其实这篇文章已经是两年前的了。而现在最新版的BizIdea默认模板已经有这样的功能了。
  • [sun]
    不太明白,楼主的意思,我看到新蛋的列表切换是不需要回传,而是直接在前台JS操作的。请赐教
    山顶洞羊回复:不需要回传?一般不会这样实现的,那样的话只是做成书签式切换并隐藏起来而已。新蛋的是用ajax实现的,也是要“回传”的。你的意思是不需要“刷新整个页面”吧?这个标签是针对BizIdea定制的。但原理都是一样的。也可以做成Ajax调用的方式。
  • [黑白空间]
    呵呵.其实用系统带的栏目列表页不就可以了么? 获得路径有个参数 false 和 true 控制 生成静态也可以 ture就是列表的路路径,FALSE就是 栏目首页. 有兴趣可以看看我的站 www.hbkj8.com 虽然我没有生成静态,但是在本地静态化测试可以的
    山顶洞羊回复:看了,不错. 用栏目列表页,也是个办法,但有两个问题:1.只能两种列表方式了,如果再多几种页面呢? 2.栏目页面模板不支持分页. 看到你的网站对SEO挺重视的. 可以考虑伪静态的办法.
  • [houwei21]
    非常棒的说明。 感谢小羊。
  • [游客]
    生成静态还管用吗?
    山顶洞羊回复:生成静态的话, 这个方法就得改动下了. 可以通过Ajax载入标签来解决.
profile picture