Dutory:个性化文章列表的分类样式

看了月光博客的首页,每一篇文章都配有熟悉的banner图片,有百度的,有Google的,有苹果的,流口水啊。在WordPress和Z-blog中,是通过对文章设置与文章分类一直的伪类来实现的,在Dutory中行不行得通呢?

经过几次失败的测试,最终找到了方法。在Dutory的数据库表中,文章表有一个字段是用来标识文章文类的,这个字段名称是:catalogGUID,只要在index.html模板中,把这个字段输出来,就可以作为伪类使用了。详细代码:

$post:{
		<div class="post articles class-$it.catalogguid$">

 虽然输出的伪类名称很长,例如我输出来的伪类名称:class="post articles class-540cfd21-48f1-4b06-bb1a-981fcc627f05",但是不影响使用。我为“林剑锋的故事”这个类别的文章,加上自己的照片做背景,CSS代码如下:

.class-540cfd21-48f1-4b06-bb1a-981fcc627f05 {background:url("images/me.jpg") right top no-repeat;}/*ljf's story*/

接下来是为每一个类别制作一张背景图片和写一条CSS伪类定义就可以。

方正为什么打不过联想

founder.gifVSLenovo_index_great_03.jpg

前几天,家里的方正液晶显示器突然坏了。今天周末去方正维修部维修。

看见方正维修售后服务部的第一感觉,是“破破烂烂”的。是的,所处的街道虽然不算偏僻,但是周围的店面和街道环境比较差。好吧,如果说周围的环境他们无法决定的话,但是店面的装修确实不怎么样。整个维修部的布局给我的感觉是:不够专业,最多算是三流水平。我不由自主的跟联想的“阳光雨露”服务站做了对比,跟惠普的维修部做了对比。联想的“阳光雨露”有点靠近电信的营业厅:进去居然有银行那种排号机器,领一个号码,服务人员安排你在大厅的椅子上坐下等待。这就是专业。

惠普的维修站没有排号的机器,不过接待人员相当有专业水准。举个例子吧,你带过去的电脑和配件,他们回帮你一一登记好,并记下机器和零部件的序列号,以防错漏。

今天去方正的维修部,看不到这些专业的服务。

在环境不如别人的情况下,服务也比不上人家。我举个例子吧。我把显示器交给接待人员,接待人员直接接电源试机。这是问题所在。要知道,你不是技术人员,不是“工程师”,你凭什么动我的机器?甚至,在显示器不亮的情况下,还用力拍我的显示器?拍了两下,你把对你们的信心全拍掉了。

而第二个失败的地方,是我决定不在店里维修的时候,工作人员就丢下我不理,让我自己把显示器重新打包,插在电源插座上的电源线和视频数据线也没有拆下来。我自己动手,看了方正的工作人员们几次,都没有理我。我不是期望他们帮我打包,我是希望他们指点一下,那条线才是我的。最终我随便拔了一条走人。

这是没有硝烟的战争。方正为什么会一步步输给联想和其他厂商,不是没有原因的。售后服务,面对的是直接消费者。服务好了,消费者还继续购买你们的产品,服务不好了,那就会变成竞争对手的客户了。

vs2010 中文版下载地址及可用CDKEY

VS2010中文旗舰版下载地址(用迅雷下载即可,不需要安装电驴):ed2k://|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467C831C2|
序列号:YCFHQ-9DWCY-DKV88-T2TMH-G7BHP

vs2010-cn.jpg

我已经安装过了vs2010英文版,所以出现这个界面。体验结论:真正中文旗舰版,可用

专业版下载地址(有旗舰版,还要专业版做什么?):

ed2k://|file|cn_visual_studio_2010_professional_x86_dvd_532145.iso|2591844352|6001253431AFE573E4344F5A0B1D9CAC|/

msdn订阅用户,微软官方下载地址:

http://msdn.microsoft.com/zh-cn/subscriptions/downloads/default.aspx?pv=18:370

补充:vs2010 MSDN文档安装方法

10个腾讯微博邀请

腾讯微博邀请,需要的请Q我。

好牌敌不过好技巧

打牌_成品.jpg

潮汕风情网程序上的修修改改好几年了。从2005年创建开始,到如今还没有固定下来。这不能不说是网站运营中的一个记录:持续6年时间在不停地修改完善网站的程序。

这个现象,我想给它起一个名称:努力创造一手好牌

让我们来看看其它一些成功的网站的做法:

月光博客。前不久,月光博客受央视“焦点访谈”点名,更气了煽风点火的作用,可以说是一种助力。目前其PR值6,myip.cn对其估价是200万左右。如图:

www.williamlong.info.jpg

博客做到这种程度,可谓是成功的典型了。然而我们来考察其程序,只不过是最常见的z-blog程序,还是asp写成。z-blog我也在用,在国内独立博客中占有率非常高,可与WordPress媲美。

其它使用z-blog完成网站运作重担的,不在少数。让我们再来看看普通cms运作良好的例子。

在建站届,这两年迅速崛起的站长网 www.admin5.com 也算是成功的典范了。目前其pr是6,myip.cn对其估值16亿。看图:

www.admin5.com.jpg

让人震撼的数字吧。然而,考察其网站的主程序,也是目前国内占用率颇高的内容管理系统dedecms。

这也许可以证明一个道理:拿一手好牌,不如会打牌

程序功能总是有限制的,除非是应用型的网站,否则对网站功能的挑剔追求,恐怕是舍本逐末的做法。目前搜索引擎恐怕还无法考量一个网站的功能是否优秀,更多的是注意网站提供的内容是否优秀。

潮汕风情网作为文化门户,应该在内容提供领域,建立绝对的优势,而不是程序和网站功能。同理,以提供内容为主的网站,都应该更注重网站的内容。

仿 Google Reader 随滚动条滚动加载页面效果

今早开通了腾讯微博,发现集成在QQ面板中的微博,居然用上了跟Google Reader一样的随滚动条滚动加载效果。加上近期在做人物辞条时,一些人物的资料超级长,导致页面加载缓慢,也许也是一种不错的解决方法。

Google阅读器上 有一个AJAX效果很不错,就是阅读项目时不需要翻页,浏览器滚动条往下拉到一定位置时自动加载新的一批项目进来,一直到所有项目加载完为止。对于我来说 再好不过了,因为我很不喜欢翻页,尤其是输入页码再定位到页。要知道,数据量增加很频繁时,要通过定位页码来找到目标数据似乎并没有什么意义。我觉得用户 体验成熟的WEB应用程序应当引导用户使用TAG或搜索等功能来找到目标数据。至于浏览数据,尤其是浏览最新的数据,利用浏览器滚动条来加载,是很好的尝试……

我试着用jquery来实现这个功能。先要得到滚动条的总长属性值:scrollHeight,还有滚动条当前位置属性 值:scrollTop。然后通过计算,若当前值位于总长值三分之二时加载新数据。假设DOM上有一个元素为<div id=”mypage”></div>,该元素overflow样式为scroll,也就是元素中的内容溢出元素指定高度时启用滚动 条。利用jquery的load方法为元素加载一个已经存在的文件,我假设它是table.html。这个文件的内容可以是足以使浏览器滚屏的一张数据表。

阅读更多的»

ASP.NET 中 整个站点web.config 与 不同文件夹下的web.config 的 多web.config 相关配置

Asp.Net站点的Web.Config文件,除了根目录下的web.config文件起全局作用之外,还可以为不同的文件夹提供不同的web.config配置文件,达到局部配置的目的。

下面是一段关于如何使用局部配置和全部配置的web.config的资料示例。

本例的站点结构图示为:

Web站点
--- 相关文件夹及文件
--- Default.aspx页面
    Default.aspx.cs
--- web.config
--- A文件夹
    --- Default.aspx页面
        Default.aspx.cs
    --- web.config
--- B文件夹
    --- Default.aspx页面
        Default.aspx.cs
    --- web.config

实现如下效果:

A,B文件夹下的页面
既可使用自己文件夹下的配置文件中的配置
又能使用整个站点的配置文件中的配置
但不能使用不在自己文件夹下的配置文件的配置
其中 可以看成
A,B文件夹下的web.config 继承于整个站点的web.config
又扩展了符合自身文件夹下相关文件需要的相关配置
---------------------------------

示例代码如下:

整个站点的web.config中有如下一段配置
---------------
<connectionStrings>
    <add name="webconfigForAll" connectionString="webconfigForAll" />   
</connectionStrings>

A文件夹下的web.config中有如下一段配置
----------------
<connectionStrings>
    <add name="webconfigForA" connectionString="webconfigForA"/>
</connectionStrings>

B文件夹下的web.config中有如下一段配置
----------------
<connectionStrings>
    <add name="webconfigForB" connectionString="webconfigForB"/>
    <remove name="webconfigForAll"/>
    <add name="webconfigForAll" connectionString="webconfigForB-All"/>
</connectionStrings>

整个站点的Default.aspx.cs中有如下一段代码
----------------
    protected void Page_Load(object sender, EventArgs e)
    {
        string strConfigAll = System.Configuration.ConfigurationManager.ConnectionStrings["webconfigForAll"].ToString();
        string str = "整个站点文件夹下根web.config:->" + strConfigAll;
        Response.Write(str);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("../B/Default.aspx", true);
    }


A文件夹下的Default.aspx.cs中有如下一段代码
----------------
    protected void Page_Load(object sender, EventArgs e)
    {
        string strConfig = System.Configuration.ConfigurationManager.ConnectionStrings["webconfigForA"].ToString();
        string strConfigAll = System.Configuration.ConfigurationManager.ConnectionStrings["webconfigForAll"].ToString();
        string str = "自身A文件夹下的web.config:->" + strConfig + "<br/>"
                   + "整个站点文件夹下根web.config:->" + strConfigAll;
        Response.Write(str);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("../B/Default.aspx", true);
    }

B文件夹下的Default.aspx.cs中有如下一段代码
----------------
    protected void Page_Load(object sender, EventArgs e)
    {
        string strConfig = System.Configuration.ConfigurationManager.ConnectionStrings["webconfigForB"].ToString();
        string strConfigAll = System.Configuration.ConfigurationManager.ConnectionStrings["webconfigForAll"].ToString();
        string str = "自身B文件夹下的web.config:->   " + strConfig + "<br/>"
                   + "整个站点文件夹下根web.config:-> " + strConfigAll;
        Response.Write(str);
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("../A/Default.aspx", true);
    }

运行效果为:
----------
站点运行后-》整个站点下的Default.aspx
             页面显示为:
             整个站点文件夹下根web.config:-> webconfigForAll
             点击按钮后:
          -》转入B文件夹下的Default.aspx
             页面显示为:
      自身B文件夹下的web.config:-> webconfigForB
             整个站点文件夹下根web.config:-> webconfigForB-All
             点击按钮后:
   -》转入A文件夹下的Default.aspx
             页面显示为:
      自身A文件夹下的web.config:-> webconfigForA
             整个站点文件夹下根web.config:-> webconfigForAll
             点击按钮后:
          -》转入B文件夹下的Default.aspx

网页中到底部、到顶部的改进版

网页太长,一般需要设置页内锚点,方便阅读。最原始的锚点是跳跃式的,速度太快,有时反而不友好。运用JavaScript,可以做出更友好、更让人喜欢用的锚点跳转效果。

"Page Scroll" 指的是整個網頁長度的滾動, 方法有 html, javascript, jQuery.

1. 首先說到 html 的方式, 它是頁面滾動的老祖宗, 所有的後續程序開發都是以它為基礎.
說它是 "滾動", 還不如說是 "跳躍", 因為它只在錨點 (Anchor) 之間跳躍.
做法: 在頁首定位點的標簽上標明 id="top", 然後在頁腳放個 <a href="#top">goTop</a> 這就完成了.
當鼠標點擊 goTop, 頁面就會直接跳到 #top 的位置.
當然你也可以隨意多放幾個 id 和 # 鏈接, 做較多的跳躍.

2. 拜完了老祖宗, 現在進入正題, 其實 javacript 才是滾動的好手.
scrollTo() 可把内容滾動到指定的座標. 語法是 scrollTo(x,y);
左右移動用得少, 所以 x 可以直接等於 0, 我們主要是用到 y.
全部頁面的總高度: pageY=document.body.offsetHeight;
跳到頁腳是: self.scrollTo(0, pageY);
跳到頁首當然就是: self.scrollTo(0, 0);
跳到某個 id, 要先將 id 轉為座標: idY=document.getElementById('id').offsetTop; self.scrollTo(0, idY);
其中的 self = window = 當前窗口
如果有框架, 還可以用:
frame[i] = self.frame[i] = 當前窗口的框架
parent = self.parent = 當前窗口的父窗口
top = self.top = 當前窗口的頂層窗口
但別急, 現在只是和 html 的效果一模一樣, 是用跳的.
如果把 y 值設入變量, 就可以滾動了:
滾到頁腳是: for (i=0; i<=document.body.offsetHeight; i+=10) { self.scrollTo(0, i) }
滾到頁首是: for (i=document.body.offsetHeight; i>=0; i-=10) { self.scrollTo(0, i) }
滾到某個 id 就要多一個判斷, 要向上還是向下, 主要用當前座標和目標座標的差值, 這可以留給你當練習.
這樣的滾動已經相當順暢了, 但有個缺點: Chrome 是用跳的不是用滾的.
天啊! 如果 Chrome 能支援, 我們就可不用 jQuery 了.

3. jQuery 有自己的程式庫, 運行 Scroll 是輕而易舉.
jQuery(document).ready(function($) {
$body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body'); // opera fix
});
上面這行是 Opera 的補丁, 少了它 Opera 是直接用跳的而且畫面閃爍.
我知道有很多人教你用 $('body') 或是 $('html') 或是 $('html,body'), 但上面那一行補丁可以通殺.
滾到頁腳是: $body.animate({scrollTop: $('#bottom').offset().top}, 1000);
滾到頁首是: $body.animate({scrollTop: $('#top').offset().top}, 1000);
有沒發現都是直接抓 id, 所以滾到某個 id 就不用計算座標了, 這是 jQuery 一大優勢, 難怪 jQuery 會這麼流行.
專心看你會發現, 這動作和上一個 javascript 的效果一模一樣啊!
沒錯, 直線速度沒什麼不同, 如果只須要滾到 #top 或 #bottom 反而用 javascript 會簡單些.
如果還嫌效果不好, 網路上有很多 jQuery 插件是改善 Scroll 效果的, 你也可以下載來試試.
最後發現有個缺點不能不說, Chrome 對座標計算還有誤差...

4. 我發現有個變速的 javascript 值得推荐.
我的主題從 A8 - A9 都是用這個 js, 我主題右邊小三角就是了.
作者: Marco Rosella URI: http://lab.centralscrutinizer.it/the-tiny-scrollings/
它主要是使用減速效果, 越接近目標速度越慢, 就像車子慢慢減速再停止, 這看起來很舒服.
感覺效果比 jQuery 好, 未壓縮 js 才 3.04k, 比 jQuery 小太多了.

上面所有的 Scroll 示例在此, 可將 html copy 回去玩玩.
注意示例要用 jQ 1.2.x 才行, 因為我是用 input 直接叫取 jQ, 所以 1.3+ 不適用.

资料来源:http://kan.willin.org/?p=1311

页面图片太多如何改善页面加载速度?

在开发人物词条的时候,碰到这个问题。某些领导,因为活动众多,介绍相应也多,一个页面将加载很多图片。这样一来,导致整个页面加载很慢。

有什么方法可以避免加载慢呢?

JQuery为我们提供了两种方案:预加载和惰性加载。

预加载:JQuery应用:图片依次加载代码

$(window).bind('load', function() {
    var preload = new Array();
    $(".hover").each(function() {
        s = $(this).attr("src").replace(/\.(.+)$/i, "_on.$1");
        preload.push(s)
    });
    var img = document.createElement('img');
    $(img).bind('load', function() {
        if(preload[0]) {
            this.src = preload.shift();
        }
    }).trigger('load');
});

惰性加载:JQuery插件:LazyLoad,插件使用方式:

 <script src="jquery.js" type="text/javascript"></script>
 <script src="jquery.lazyload.js" type="text/javascript"></script>

调用:

$("img").lazyload();

两种相反的处理思想,孰优孰劣,看具体需要吧。

dedecms 5.5 升级5.6 出错之后

前文提到,织梦系统dedecms在线升级到5.6版之后,出现一系列问题:

dedecms 5.6 会员登录出错

最终找到修复的方法:

1、在本地安装好一份新的dedecms5.6程序。

2、备份出问题的网站程序。

3、把本地的程序上传到网站,覆盖原来的文件。

4、把原来的Templets文件夹和uploads文件夹上传覆盖。

5、上传原来/data/common.inc.php文件,此文件配置网站数据库链接。

好了,网站恢复正常使用了。在寻求解决方法的过程中,发现dedexms自身有数据库备份功能。感觉很方便,下次升级前,一定要先备份数据库了,以防万一。

公告栏

  • 姓名:林剑锋(不见不散)
  • 来自:中国-广州
  • 简介:潮汕人,出生于广东揭西。醉心于Web开发8年,挑战了一年整体策划和网站运营。目前就职于平成混媒IT部。
  • Email/QQ:admin@ljf.cn

QQ群:设计学院 68075618,网站设计师 9908776

统计

文章:335篇
评论:163条 (2条Spam)
相册:1个 (120张图片)
主题:Nagrand新主题

www.ljf.cn网站PR查询