sinsiu 1.2 beta1用户手册
  
--------------------------------
目录
--------------------------------
一、前言
二、基本应用
  1.为什么有的用户安装失败？
  2.如何更换网站LOGO？
  3.如何在首页“推荐产品”栏显示产品？
  4.首页“公司简介”内容在哪里修改？
  5.如何添加“在线客服”？
  6.如何修改焦点图片？
  7.如何修改导航栏文字和链接？
  8.如何修改栏目标题等文字？
  9.如何更换首页“公司简介”栏的小图片？
  10.如何使用本站图片作为友情链接图片？
  11.前台“关于我们”页面左侧菜单在哪里管理？
  12.如何页头导航里面添加“联系我们”页面？
  13.统计代码超过250个字符怎么办？
  14.为什么添加产品之后，后台页面不自动刷新？
  15.为什么有的图片和文件无法上传？
  16.上传多大尺寸的图片最合适？
  17.为什么有的用户的“下载中心”无法下载文件？
  18.为什么有的用户只能打开首页，其它页面打不开？
  19.为什么有的用户没有修改任何代码，但首页布局混乱？
  20.为什么有的用户登录后台之后被强制退出？
  21.后台“模板编译模式设置”功能有什么用？
  22.后台“静态设置”功能有什么用？
  23.前台网址中的?号能不能去掉？
  24.如何第一时间获知网站有新留言或调查问卷？
  25.新秀系统如何实现“中英文双语版”？
  26.新秀系统没有验证码功能，会不会被恶意攻击？
  27.如何备份网站数据？
  28.忘记后台密码怎么办？
  29.为什么有的用户在本地测试正常，上传到服务器后出错？
  30.如何添加FLASH引导页？
  31.如何让公告栏文字向上滚动？
  32.后台“标题设置”功能如何使用？
  33.如何创建新页面？
  34.“后台模块设置”功能如何使用？
三、高级应用
  1.主要目录说明
  2.新秀系统运行基本流程
  3.网址参数说明
  4.模板标签说明
  5.模板引擎说明
  6.数据库类的说明
  7.一个重要类的说明
  8.如何把内页的栏目移到首页？
  9.如何修改模板的颜色？
  10.如何制作模板？
四、后记
  
---------------------------------
一、前言
---------------------------------

    花点时间仔细阅读本文档，可以节省您更多提问和研究的时间。
  
---------------------------------
二、基本应用
---------------------------------
1.为什么有的用户安装失败？
    sinsiu安装失败的原因有很多，其中比较常见的原因有以下3个：
    ①在本地使用ASP集成环境测试。由于一般的ASP集成环境只支持GB2312编码，而sinsiu是用UTF-8编码，所以在本地测试sinsiu只能用IIS，不能用ASP集成环境。
    ②运行sinsiu的服务器没有FSO组件。FSO是ASP中一个很基本的组件，但是它会带来一定的安全隐患，所以很多免费空间都没有FSO组件，收费空间一般都有FSO组件。
    ③在本地测试时，网站所在目录权限不足。解决的方法是：先打开“我的电脑--工具--文件夹选项--查看--（不勾选）使用简单文件共享”，然后右击sinsiu系统所在文件夹，打开“属性-安全--添加--高级--立即查找--（选中）Everyone--确定”，然后回到文件夹属性，把Everyone的修改和写入权限选上。
    除此之外还有其它多种原因，这里不一一列举。sinsiu安装不了一般都是在本地测试时由于电脑设置不正确引起的，sinsiu的安装程序几乎不可能存在错误，因为安装程序上有错误的话绝大部分的人都安装不了，但实际上是只有少部分的人安装不了，所以我希望用户在安装失败的时候多从自己电脑上找原因，而不是怀疑sinsiu程序错误或者故意做了限制。有的用户在安装失败后提出这样的问题：sinsiu为什么要安装呢？能不能不安装直接使用？群主您能给我一份已经安装好的程序吗？sinsiu安装的主要目的是创建数据库和把系统相对于网站根目录的路径写入配置文件include/config.asp。虽然数据库可以创建好之后直接上传，但是考虑到以后可能有多种数据库可以选择，比如MSSQL数据库，它是必须在服务器上创建的（至少是创建表），所以现在的创建数据库功能可以说是为将来的MSSQL数据库做准备。而把路径写入配置文件可以使很多程序大大简化，也使得系统能够适应更复杂的架构和功能。sinsiu的安装和一般的桌面应用软件的安装是不一样的，sinsiu的安装始终没有超出网站所在目录（文件夹）的范围，它不会去修改用户电脑的注册表，更不会去修改用户浏览器的主页！也正因为这样，sinsiu在安装了一次之后，可以复制到别的地方直接使用，不需要再安装，如果改变了系统所在子目录的名称，只需要修改include/config.asp文件就可以了，具体的修改方法在下面会详叙。但是，如果您安装不了的话，就算给您一份已经安装好的，您也一样用不了，因为在安装过程中所遇到的问题，在使用sinsiu的过程中一样会遇到。比如说您因为权限不足而安装不了，我给您一份已经安装好的程序，您也会因为权限不足而使用不了。收费的虚拟主机一般都能安装成功。

2.如何更换网站LOGO？
    如果要更换logo，可以在后台的“文件管理--图片管理--公共图片”中把文件名为“logo.jpg”的图片删掉，然后上传一张同样文件名的图片。
  
3.如何在首页“推荐产品”栏显示产品？
    如果要在首页的“推荐产品”栏中显示产品，可以在后台的“产品管理--产品列表”中把要显示在首页的产品勾选“置顶”。首页的走马灯程序是循环显示图片的，如果只勾选一个产品，首页会显示多个相同的产品，如果勾选两个，则首页会循环显示这两个产品，依此类推。

4.首页“公司简介”内容在哪里修改？
    首页“公司简介”内容可以在后台的“文章管理--关于我们列表--公司简介--编辑”处修改。

5.如何添加“在线客服”？
    首先，您可以到http://wp.qq.com/网站获取一段在线QQ客服的代码，然后进入后台的“客服互动--在线客服”，选择编辑器上的“<>”号，当鼠标移到这个符号上面时，它会出现文字说明“源代码”，点击这个符号之后，把QQ客服代码填到编辑器中。您还可以适当地添加一些其它文字或阿里旺旺、MSN的客服代码。

6.如何修改焦点图片？
    焦点图片指的是首页LOGO下面循环显示的多张大图片，焦点图片可以在后台“文件管理--焦点图片”中管理，这里没有上传图片的地方，那么，如何添加焦点图片呢？可以先在“文件管理--图片管理--公共图片”中上传一张焦点图片，然后复制图片地址到“文件管理--焦点图片”中添加焦点图片，图片地址可以是以http://开头的地址，也可以是相对地址，如果您不熟悉相对地址，建议使用http://开头的地址，不过一旦网站更换域名或子目录，这些链接又得重新填写，而使用相对地址就不会有这种麻烦。“位置标志”一般填default，表示全局，也就是所有页面都显示这个图片，也可以填index、about、article等，表示只在?index.html、?about.html、?article.html等页面显示。这些英文字符串是哪里来的呢？例如about这个字符串，其实是取自?about.html从问号后面开始的子字符串，长度不限，所以位置标志也可以是about_3、article_5_0_0这样的形式，当取这种形式的时候，该焦点图片的适用范围就更小了。

7.如何修改导航栏文字和链接？
    如果要修改导航栏文字和链接，可以在后台“基本设置--导航管理”中进行。这里填写的链接，必须是已经存在的链接，也就是说，这里只是在页面上增加一个链接，就像添加友情链接一样，而不是无中生有地创建出一个新的页面。如果要创建页面，可以在后台“高级应用--创建页面”里面进行，后台“创建页面”功能会自动把新页面的链接添加到导航栏。

8.如何修改栏目标题等文字？
    有的用户问：我想把首页公司简介栏的“公司简介”四个字改成“关于我们”应该怎么办？要把“联系我们”四个字改为“联系方式”又该怎么办？有的用户立即想到在模板中修改，然而很不幸，页面中任何一个中文都不出现在模板文件中。这些页面中固定（不从数据库读取）的中文都集中在languages/zh-cn.asp一个文件中，而且我们不需要直接修改这个文件，在后台的“文件管理--语言包”中可以编辑。在“文件管理--语言包”中，用户还可以切换英文语言包，把页面的固定的中文换成英文。

9.如何更换首页“公司简介”栏的小图片？
    sinsiu的后台不提供更换首页“公司简介”栏的小图片的功能，因为这张图片是属于模板的，其他的模板设计者可能不会在公司简介栏中插一张图片，甚至有的设计者干脆把公司简介栏省略掉，这是很普遍的情况，这时候如果后台仍然有管理那张小图片的功能，就显得多余了。那么如何更换这张图片呢？您可以在templates/default/images目录中找到这张图片，文件名是about.jpg，然后用同名图片将其替换掉。

10.如何使用本站图片作为友情链接图片？
    使用本站图片作为友情链接图片和添加焦点图片类似，可以先在“文件管理--图片管理--公共图片”中上传一张友情链接图片，然后复制图片地址到“客服互动--友情链接”中添加图片。

11.前台“关于我们”页面左侧菜单在哪里管理？
    前台“关于我们”页面左侧菜单可以在后台“基本设置--导航管理--关于我们”设置。在后台“文章管理--关于我们列表”处添加文章时，程序会自动在该菜单上添加链接，也可以在“关于我们列表”里面复制链接到“导航管理”里面手动添加，还可以将链接添加在页头导航和页脚导航。但是删除文章时，程序并不会把菜单上相应的链接也删除，需要手动在“导航管理”里面删除。之所以不完全把文章和菜单关联起来，是考虑到实际二次开发的一些需要，如果完全关联起来，那么菜单就变成像首页那种新闻列表了，这往往无法适应实际使用中的一些情况。添加文章时自动添加导航，这个功能可以在后台“高级应用--后台模块设置”里面配置的，具体请参阅下文相关的说明。

12.如何页头导航里面添加“联系我们”页面？
    可以在后台“文章管理--添加关于我们”里面发表一篇标题为“联系我们”的文章，接着在“关于我们列表”中复制新文章的链接，然后到“基本设置--导航管理--页头导航”里面添加链接。

13.统计代码超过250个字符怎么办？
    在后台“基本设置--网站设置”里添加统计代码，如果超过250个字符，系统自动弹出提示对话框。一般情况下如果使用CNZZ统计或量子统计，而且只添加一个统计代码，是不会超过250字符的，但如果不幸超过250个字符怎么办呢？可以直接把代码插入模板，页脚模板文件路径是templates/default/module/footer.asp，您至少需要略懂HTML才能正确插入代码。

14.为什么添加产品之后，后台页面不自动刷新？
    sinsiu是有意这样设计的，因为如果每次添加产品之后页面都自动刷新的话，那么用户添加下一个产品就得重新输入，如果有多个产品的信息是相近的，用户就会觉得每次都重新输入相同或相近的内容是一件很繁琐的事，如果能在上一件的基础上略作修改就好了。当然，像目前这样不刷新页面也会给一些用户带来困扰，有的用户点了一次“提交”之后发现页面没刷新，又点了一次，结果提交了两件相同的产品，不过相信当用户熟悉了新秀系统之后就可以避免这样的事情发生。

15.为什么有的图片和文件无法上传？
    为方便叙述，我们将新秀系统后台的上传功能分为两种：编辑器上传和非编辑器上传，编辑器上传指的是编辑器里面自带的上传功能，非编辑器上传指的是新秀自己编写的上传程序。非编辑器上传没有限制图片和文件大小，但是有很多虚拟主机对上传做了限制，超过2M的文件上传不了，这是虚拟主机限制的，不是新秀限制的，还有一种情况的，上传比较大的文件时超过90秒，很多Web服务器设置ASP超时时间为90秒，90秒没传完，超时了，上传就失败了。还有一种情况：上传的图片在IE浏览器上无法显示，一些用户以为这是无法上传图片，其实图片已经成功上传了，只是在IE浏览器上显示不出来，但在其它非IE内核的浏览器上显示正常，这不是新秀系统的问题，不信您用IE浏览器直接打开那张图片，一样显示不了，这是图片的问题，和新秀无关，解决的方法是用PS软件修改图片。新秀系统默认使用xheditor编辑器，它默认上传文件最大2M，不过通过修改plugins/xheditor/upload.asp这个文件可以将限制加大，第23行，在数字的后面加0就行了。

16.上传多大尺寸的图片最合适？
    我觉得这个问题其实没必要问。新秀系统不论上传多大尺寸的图片都不会变形，如果虚拟主机有ASPJPEG组件，上传程序会自动调用该组件生成缩略图，缩略图尺寸默认是160*160像素，这个尺寸在后台“基本设置--其它设置”里面可以修改，不过一般没必要修改。前台默认模板显示的缩略图比后台ASPJPEG组件生成的缩略图略小，是150*150像素，这是在CSS和JS里面设置的。其实大家可以不理会160和150这样的数字，无论上传上传多大尺寸的图片，新秀系统都会自动按比例显示缩略图。

17.为什么有的用户的“下载中心”无法下载文件？
    新秀系统没有限制下载格式，但是很多虚拟主机限制了rar、exe等格式文件的下载。

18.为什么有的用户只能打开首页，其它页面打不开？
    出现这种情况一般是因为IIS的“文档”选项卡里面没有添加“index.asp”，只要把“index.asp”加入默认文档一般就可以解决问题。如果是虚拟主机出现这种情况，可以到虚拟主机控制面板看看是否可以把“index.asp”添加为默认文档。

19.为什么有的用户没有修改任何代码，但首页布局混乱？
    这种情况一般是由于首页“公司简介”内容被截断导致的，为什么公司简介内容会被截断呢？我们在后台添加的公司简介内容一般都带有HTML标签，尤其是如果这些内容是在别的网站复制的，比如段落标签<P>，它的开始部分<P>是在段落的开头，结束部分</P>是在段落的末尾，但是首页一般不全部显示公司简介的内容，因为如果内容太多很难看，一般是截取一定长度的字符串，比如520个字符，这520个字符是包括HTML标签的，如果<P>和</P>标签一个在520字符内，一个在520字符之后，那么这两个标签就会被截开，首页只显示<p>标签，不显示</p>，结果布局就出现混乱。类似容易被截断的标签还有<div>和<a>。不过1.1 beta11之后，首页默认是过滤掉HTML代码的，所以一般不会出现标签被截断的情况，可以在后台“基本设置--其它设置”里面设置是否过滤HTML和截取的字符串长度，如果设置不过滤HTML标签之后前台出现布局混乱，可以适当调整截取长度，也可以在编辑器里面的代码模式对HTML进行修改。

20.为什么有的用户登录后台之后被强制退出？
    新秀系统后台默认是使用SESSION会话，没有限制超时时间，一般默认超时时间是20分钟，如果连续20分钟没有操作就会自动退出。但是有的用户有时只是很短的几十秒钟就被强制退出，这是为什么呢？因为SESSION虽然比较安全，但是它比较耗系统资源，如果虚拟主机的内存或CPU等资源比较少的话，很可能会遇到这种情况，如果虚拟主机性能比较好，一般不会有这种情况，一般在本地测试也不会遇到这种情况。解决的方法是：在后台“基本设置--其它设置”里面选择COOKIES作为会话方式，不过用COOKIES会话很不安全，为了防止被恶意上传文件，编辑器上传的功能被禁止。使用COOKIES会话方式，站长要有应付网站安全问题的心理准备。

21.后台“模板编译模式设置”功能有什么用？
    新秀的模板引擎有3种编译模式，第一种是不编译，模板引擎不编译模板，直接到index/sinty/compile目录中去找编译好的文件，找得到就执行，找不到就出错了。第二种是只编译未编译的模板，模板引擎到index/sinty/compile目录中去找编译好的文件，找得到就直接运行，不编译，找不到就编译模板，然后再执行。第三种是总是编译，模板引擎不去找编译好的文件，总是执行编译模板的操作。这3种模式有什么区别呢？第一种运行效率是最高的，不过使用这种模式之前，必须保证各个主页面已经编译好了，不然可能会出错。主页面指的是没有带参数的页面，比如?adout.html。第二种模式效率接近第一种，他对一个主页面最多只编译一次，而且不用理会这个页面是否已经编译过了，如果没有编译过，模板引擎会自动编译。在试用选择前面这两种模式之后，修改模板之后可能无法看到变化，因为模板引擎已经不编译模板了，可以把index/sinty/compile里面的文件清除或者开启第三张模式编译模板之后再选回这两种模式。第三种模式是默认的模式，默认并不表示推荐，因为它的效率比较低，我们推荐使用第二种模式。但是在1.1 beta12之后，这三种模式不再是绝对的，有部分页面是可以在templates/default/sinty.xml文件中设置为强制编译的，即无论选择那种编译方式，这些页面总是会被重新编译。

22.后台“静态设置”功能有什么用？
    后台“静态设置”功能主要的作用是提高程序运行速度，减轻服务器负担。这里有三种模式可以选择，第一种是动态，是默认的模式，这一种执行效率最低，但是前台能随后台的更新而实时更新。后两种都是静态模式，在这两种模式下，第一次打开页面之后，系统会自动生成静态文件并保存在html目录中，下次有访客访问该页面就直接调用该静态文件，大大提高了执行效率，减轻了服务器负担，但是在这两种模式下，后台更新之后，必须清除静态文件才能在前台显示更新内容。后两种模式的区别是：前者的页面链接使用动态链接，后者则可以使用静态链接。对于一直使用动态链接的旧网站，不建议改成静态链接，因为修改链接反而不利于优化。

23.前台网址中的?号能不能去掉？
    不能，sinsiu前台是用动态网址，去掉问号就成纯静态或伪静态了，新秀目前没有考虑纯静态模式，请不要向我提建议搞纯静态。sinsiu 1.1 beta8有过伪静态功能，可以去掉?号，不过很多虚拟主机不支持ASP伪静态，所以这个功能后来去掉了。目前sinsiu仍然能很方便地改出伪静态模式，但前提是您使用的运行环境支持ASP伪静态，可以自由更改伪静态规则。

24.如何第一时间获知网站有新留言或调查问卷？
    后台“基本设置--其它设置”里面可以设置收发邮件的功能，当有访客在网站提交留言或调查问卷时，系统自动使用发件邮箱发送邮件到收件邮箱通知管理员，如果收件邮箱填写的是QQ邮箱，那就可以第一时间收到邮件了。建议发件邮箱不要用常用的邮箱，注册一个专门发件的，以为密码是要填写在网站里的，如果网站被入侵，可能会泄漏了密码。SMTP服务器地址一般形如smtp.163.com，但并不是所有SMTP服务器地址都是这种形式，163邮箱经多次测试发送邮件正常，建议使用163邮箱。 

25.新秀系统如何实现“中英文双语版”？
    在sinsiu 1.1 beta6之前的版本是无法同时显示中英文两种版本的，不过beta6之后增加了“高级应用--插件管理”功能，并附带了一个英文版插件，使得同时显示中英文版成为可能。使用英文版插件之前请详细阅读“英文版插件说明”，您可能从来没有在其他的网站系统中遇到过同样的双语版实现方法，所以您可能会感到陌生和不可理解。在“高级应用--插件管理”点击了英文版插件的“安装”之后，刷新页面，您会看到后台页面右上角出现了两个单选框，可以选择中文或英文数据库，当选择英文数据库的时候，后台所有的操作都保存到英文数据库里面，包括导航、产品、文章等等，这时候您可以发表英文文章、把中文导航改为英文等等，当您切换回中文数据库并刷新页面的时候，您会发现刚刚更新过的英文内容不见了，因为这时候后台连接的是中文数据库，当您再次切换到英文数据库的时候又可以看到英文内容。还有个令人郁闷的问题，就是当您切换到英文数据库的时候，打开网站首页，它居然是英文的，为什么会这样，这不是我们想要是效果啊！其实，只有网站管理员会看到这样的现象，其它网站访客看到的都是中文版，如果这时候您关闭浏览器，重新打开网站首页，看到的就是中文版。那么，我们如何实现在前台既能显示中文版又能显示英文版呢？英文版前台链接：http://您的域名/?index.en.html，在安装了英文版插件之后，选择中文版数据库，在“基本设置--导航管理”中加入这个英文版链接http://您的域名/?index.en.html，这样您就可以在前台访问英文版了，至于英文版的内容，您必须在后台选择英文版数据库然后添加。有的用户觉得这样很麻烦，问：为什么不像一些中英文系统一样可以在同一个页面中同时添加中文和英文两种内容？我的回答是：那种形式的系统，它的程序中必须同时处理两种语言的数据，它的数据库的字段要多一倍左右，如果该系统的用户刚好需要双语版那还好，如果用户不需要实现双语，那么这些功能都是浪费的，而且会影响系统的执行效率、使用效率和二次开发效率。sinsiu的大多数用户都是做国内贸易的，都不需要双语版，所以不考虑那种形式的实现方法。

26.新秀系统没有验证码功能，会不会被恶意攻击？
    不会，新秀系统虽然没有验证码，但是对提交的表单做了特殊的验证，禁止远程提交，所以一般的灌水发帖、暴力破解密码的软件无法对新秀系统进行攻击。事实上，很多网站的验证码形同虚设，设了等于没设，灌水机照样灌水，相信有经验的站长都知道。当然，我们不能排除有一些软件还是能攻击新秀系统的，只是目前还没发现而已。

27.如何备份网站数据？
    备份网站数据，就是把网站所有的文件复制一份另外放起来。用户可以用FTP工具把虚拟主机上整个网站源码下载到本地，如果网站是在独立服务器或VPS上面，可以直接把网站的程序复制一份，放在另一个地方。sinsiu的后台只能备份数据库，不能备份整个网站源码。建议用户定期备份一次网站（不仅仅是数据库），以免在网站数据丢失之后无法恢复。

28.忘记后台密码怎么办？
    sinsiu后台管理员密码是采用16位小写MD5加密的，用户如果忘记密码，可以登录这个网页http://tool.chinaz.com/Tools/MD5.aspx（或者通过百度找到其他MD5加密的网站），选择16位小写，然后输入您要设定的新密码，比如admin，然后点加密，这时您会得到一个16位小写的密文，比如7a57a5a743894a0e，复制这段密文，打开sinsiu数据库data/#data.mdb中的admin表，把密文填写在adm_password字段里面。这样，您就可以使用admin作为密码登录sinsiu系统的后台了。

29.为什么有的用户在本地测试正常，上传到服务器后出错？
    有不少用户遇到过这样的情况：在本地测试还好好的，一上传到虚拟主机上就出错了。或者是，本来在网站子目录里面测试还好好的，一放到根目录下或者子目录改个名称就出错了。而且这种错误一般提示为index.asp第34行server.execute(path)一句出错。为什么会这样呢？难道需要重新安装吗？其实这个问题很容易解决，打开include/config.asp文件，找到S_ROOT = 一行，一般是在第三行，如果您的网站放在根目录中，就应该是S_ROOT = "/"，/号代表根目录。如果您的网站是放在wz子目录（只是举例，不一定是这个名称）中，那么就应该改为S_ROOT = "/wz/"，用户在改动网站所在目录时，必须相应地修改S_ROOT的值，只要S_ROOT的值正确了，上述问题就解决了。

30.如何添加FLASH引导页？
    sinsiu在1.1版本之后，取消了1.0中内置的FLASH引导页，所以首先您必须自己准备一个静态的FLASH引导页，命名为flash.asp，放在（覆盖）index目录里面，然后打include/config.asp文件，把S_FLASH = 0改为S_FLASH = 1，这样就OK了，打开网站首页，就是您所添加的FLASH引导页。
  
31.如何让公告栏文字向上滚动？
    进入后台“客服互动--网站公告”，选择编辑器上的“<>”号，进入代码模式，在网站公告的前面加上“<marquee scrollamount="2" direction="up" >”，在末尾加上“</marquee>”，然后提交保存。打开首页，您就可以看到网站公告变成向上滚动了。可以百度一下获知有关<marquee>标签的属性和用法。

32.后台“标题设置”功能如何使用？
    这个功能不容易说清楚，标题主要指的是页面标题，但不限于页面标题。例如产品展示页的页面标题中的“产品展示”就是在这里设置的，页面中间的位置导航中的“产品展示”也是在这里设置。位置标志指的是页面URL中从问号后面开始的标识字符串，表示该标题所适用的页面，位置标志可以形如product、article_2、article_2_1等，这一点和上文第6条“如何修改焦点图片？”中所讲的位置标志是一样的。当位置标志互相包含时，可以通过设定优先级避免冲突，我们举例说明，比如把product的标题为“哈哈哈”，把product_3的标题设置为“呵呵呵”，如果两者优先级相同，那么页面?product_3_0_0.html的标题是什么呢？虽然我们测试一下发现它的标题是“呵呵呵”，但这是由他们在数据库里的排序决定的，事实并不总是如此，在一些情况下您可能会发现product_3的标题变成“哈哈哈”，因为这个页面的URL既可以匹配前者，也可以匹配后者，如果我们只希望它匹配后者，可以把product_3的优先级改得比product高，这样它们就不会冲突了。

33.如何创建新页面？
    可以在后台“高级应用--创建页面”处创建新页面，使用该功能创建一个主页面，程序会自动创建相应的内页、后台功能、导航链接和源码文件，并自动修改了一些源码文件，新页面和后台功能是独立的。不过，前台生成的页面里面有一些文字和您所选择的类似页面是一样的，需要自己在模板文件中修改这些文字，比如我们创建一个类似?product.html的页面，新链接页面填“?xxx.html”，新页面名称填“商品”，创建页面之后打开?xxx.html，您会发现左边的分类菜单仍然写“产品分类”而不是“商品分类”，那么该如何修改呢？可以先在后台“文件管理--语言包--zh-cn.asp--编辑”里面找到“产品分类”四个字，但是不要直接修改，复制它前面的“L_PRO_TREE”，然后在“文件管理--模板文件--module/xxx_tree.asp--编辑”里面找到{$L_PRO_TREE}这个标签，直接把这个标签改成“商品分类”，然后再到前台看一下，文字已经改了。有的用户会问怎么知道是在module/xxx_tree.asp文件中呢，其实这个很好认，因为您创建的页面是?xxx.html，模板文件中生成的带有“xxx”的文件就那么几个，每一个都打开用记事本的查找功能找一下，还怕找不到“L_PRO_TREE”？

34.“后台模块设置”功能如何使用？
    “后台模块设置”是新秀系统后台最复杂的一个功能，首先建议大家不要乱改这里面的东西，不小心就会造成后台崩溃。我们结合实际讲解一下，先看后台“高级应用--后台模块设置--后台模块配置列表”里面第一行，类型product标识global指的是这一行记录是后台admin/product目录的全局配置，配置值“产品|none|0|0”是什么意思呢？这其实是4个值的集合，它们用|分隔开来，第一个值“产品”是admin/product的中文名称，这个名称在很多地方用到，我们可以尝试把“产品”改成“商品”，然后到“产品列表”看一下，您会发现页面右侧的“产品列表”已经变成“商品列表”了。第二个值none是指添加新文章之后在那个导航添加链接，一般填none，就是不添加，在下面about的哪一条您会看到它的配置值是“关于我们|about|0|0”，第二个值about表示在“关于我们”页面左侧导航里面添加链接，这个about是数据库中menu表men_type字段的值。第三个值0是指提交正文时从正文中提取的图片数，目前最多只能提取一张图片，放在article表的art_more_img字段中，最后一个参数是指在正文中截取的导读长度，导读是正文开头去掉HTML标签的一段字符串，提取后放在art_short_text字段里面，目前新秀系统没用实际应用到art_more_img和art_short_text字段，这两个字段目前只对二次开发者有用。类型为product_sheet的记录是配置产品列表的，以“_sheet”结尾的都是配置列表的，每一行配置值表示产品列表中的一列，那么配置值“art_reduce_img|图片|auto|befort_sheet_img”是什么意思呢？art_reduce_img是article数据表的一个字段名，它表示产品列表第一列从这个字段中读取数据，第二个值“图片”是指产品列表第一列的中文名称，第三个值“auto”是指这一列的宽度，也可以填写类似“50px”这样的形式。第四个值befort_sheet_img是个函数名，就是调用befort_sheet_img()函数，这个函数将这一列显示出来，大家不用当心不知道函数名是什么，在后台添加模块配置的地方都有下拉菜单可以选择函数。product_form是设置产品添加和编辑表单的，以“_form”结尾的都是配置列表的，我们来讲一下“art_title|art_title|产品标题|befort_form_text|deal_form_text”这个配置值，第一个值可以是数据库里的字段名，也可以是自定义的属性名，比如自定义一个属性名为“att_xxx”，属性名必须以“att_”开头。第二个值是表单的名称，就是HTML表单的name属性，相信会HTML的用户都能明白，第三个值是表单之前的中文提示词，第四个值befort_form_text是个函数名，它将表单和数据显示在网页上，第五个值deal_form_text也是一个函数名，它处理提交表单后的数据，将数据写入数据库。
    为了让大家加深理解，我们来做一个实验，在后台“高级应用--后台模块设置--添加表单项配置”中添加一条记录，所属模块选“产品 product”，字段名填“att_xxx”，这是我们刚才随便举例的属性名，表单名也填“att_xxx”，中文提示填“测试表单”，显示处理选“简短文本 befort_form_text()”，提交处理选“属性 deal_form_att()”，然后提交。然后打开“产品管理--添加产品”，您会看到多了一个文本框，填写内容然后提交。您可以在“产品管理--产品列表--编辑”里面看到新文本框的内容被正确写入数据库了。如果要更改表单排序，可以在“后台模块配置列表”修改配置记录的排序。您还可以把att_xxx字段里的内容在产品列表里显示出来，方法是：在“高级应用--后台模块设置--添加列表项配置”中添加一条记录，所属模块选“产品 product”，字段名填“att_xxx”，中文提示填“测试列表”，宽度填“100px”，处理函数选“文字 befort_sheet_word()”，然后提交，打开“产品管理--产品列表”，您会看到列表上多了一列。
    
    
---------------------------------
三、高级应用
---------------------------------
1、主要目录说明
sinsiu ----|--admin        //存放后台程序
           |--data         //存放数据库及其备份
           |--download     //存放供访客下载的网站资源
           |--html         //存放在静态模式下生成的.html文件
           |--images       //存放所有在后台上传的图片
           |--include      //存放系统最基本的程序和配置文件
           |--index        //存放前台业务逻辑和模板引擎
           |--install      //安装程序，安装完成后可删除
           |--languages    //存放语言文件
           |--plugins      //存放所有插件
           |--templates    //存放所有模板

2.新秀系统运行基本流程
    这个问题比较复杂，我们举例说明，假设某访客打开了网站首页，网址是http://www.sinsiu.com/或者http://www.sinsiu.com/?index.html，由于这两个网址都没有指定执行哪一个文件，所以web服务器就执行默认首页文件index.asp。index.asp做出这样的选择：如果网址后面没有问号或是问号后面没有内容，而且配置文件include/config.asp中S_FLASH = 0，那么去执行index/index.asp文件，如果S_FLASH不等于0，那么去执行index/flash.asp文件；如果网址后面有问号而且问号后面有内容，比如?index.html，那么把问号之后、点号之前的内容提前出来，这里就提取了一个index，构成一个新的地址index/index.asp，然后去执行index/index.asp文件。如果提取出来的是about而不是index，那么就必须去执行index/about.asp文件了，依此类推。
    接着执行index/index.asp文件，首先实例化sinty_类，这是模板引擎类，在sinsiu系统前台占有很重要的位置，sinty_类是在index/sinty/sinty.asp文件里定义的。然后执行initial()函数，该函数的参数是模板文件名，这个函数从templates/default/sinty.xml文件中获取页面栏目信息并返回，例如在这里sinty.xml文件会告诉initial()函数：首页包括了头部、焦点图片、公告、联系我们、友情链接、公司简介等等栏目，其实initial()函数从sinty.xml文件获取到的是这些栏目的函数名，这些函数名都记录在sinty.xml文件的<module>标签里面。然后这些函数名会被组织成数组形式传给select_module()函数，select_module()函数会根据它所获得的函数名执行相关的函数，从数据库中读取头部、焦点图片、公告等等栏目所需要的数据。在执行select_module()之前还执行了set_parameter()和set_head()函数，前者获取URL中的参数放在cat、page、id等变量中，后者设置页面头部数据，参数一般是数据表名，如果不存在和参数同名的数据表，则调用通用数据。有了数据之后怎么办？不能在把数据直接交给访客，否则访客就会看到一团乱七八糟的没有格式的信息。这时候，程序又调用了sinty模板引擎中的display()函数，对模板进行编译，把数据缓存文件和编译结果分别存放在index/sinty/cache和index/sinty/compile目录中，最后执行编译后的文件把页面显示出来。前台其它页面也基本是这个流程。

3.网址参数说明
    这个问题我们直接举例说明，比如?about_3.html或?product_2_1_15.html，参数以下划线分隔开，而且必须是数字，一个参数表示id（编号），两个参数分别表示page（第几页）和id，三个参数分别表示cat（分类编号）、page和id。程序会根据网址获取这些参数。如果要用非数字作为参数，可参考sinsiu前台的搜索功能。

4.模板标签说明
    新秀所有的标签都是以{号开始以}号结束的，比如{inc:module/header}，由于JS中也用到{}号，所以有时可能会和JS冲突，不过这一点在模板引擎中已经做了比较好的处理，一般情况下没问题，不过建议JS代码单独放在一个.JS文件中，这样可以提高编译速度、避免出错。
    ①变量，变量以$号开头，例如{$a}，{$abc}，{$hello}，$号开头这一点和PHP一样，$号后面的命名规则和ASP一样。和许多高级语言一样，这里的变量也可以做加减乘除等运算。
    ②常量，这里所说的常量，其实是变量中比较特殊的一种，它的命名规则和变量一样，只是他的值一般是不变的，或者说：模板作者不建议改变它的值。在sinsiu默认模板中，常量是以大写字母表示，例如：$S_TPL_PATH、$L_ARTICLE_PAGE等，当然，非官方的模板作者可以不使用大写字母表示常量，这不会影响程序的运行。sinsiu模板中所用到的常量主要在两个文件定义，第一个是配置文件include/config.asp，它包含了系统路径、模板路径等非常重要的常量，第二个是语言文件languages/zh-cn.asp，默认是使用这个文件，但用户可以在后台切换不同的文件。在sinsiu模板中，一般以“$S_”开头的常量是在配置文件中定义的，字母S是系统“system”的英文缩写，而以“$L_”开头的常量一般都是在语言文件里定义的，字母“L”是语言“languages”的英文缩写。
    ③包含，基本格式为：{inc:文件路径及文件名}，例如：{inc:module/header}。其中inc:是包含的意思，是include的缩写。在{inc:module/header}这个标签中，module是指templates/default/module目录，目录名可以更改。header是指header.asp文件，所以{inc:module/header}的意思就是包含templates/default/module/header.asp文件。由于模板文件不一定是.asp格式的，所以在inc标签中省略了扩展名。
    ④条件语句，单分支条件语句基本格式为：{if:表达式1,关系运算符,表达式2}表达式{/if}，双分支条件语句基本格式为：{if:表达式1,关系运算符,表达式2}表达式{else}表达式{/if}，表达式1和表达式2最好是变量，关系运算符就是=、<>、>、>=，<、<=，但是我们在这里不能直接使用这些符号，而是分别以eq、neq、gt、egt、lt、elt来代替。
    ⑤选择语句，基本格式为：{select case 表达式1}{case:字符串常量}{表达式2}{default}{表达式3}{/select}，表达式1一般是变量，case后面要加冒号，冒号后面的字符串常量无需加引号，case分支执行完无需用break退出，当表达式1无法匹配所有case:后面的字符串时，执行{default}后面的表达式，但{default}不是必须的。
    ⑥循环语句，基本格式为：{for:循环变量,起始表达式,终止表达式}表达式{/for}，例如{for:$i,1,100}{$sum=$sum+$i}{/for}可计算从1连加到100的和，翻译为ASP语言是<%for i = 1 to 100%><%sum = sum + i%><%next%>。
    ⑦数组，新秀模板引擎的数组和PHP类似，基本格式为：$数组名[下标1][下标2]，下标1可以是变量，下标2可以是变量或字符串，字符串必须以英文半角单引号'括起来，例如$tree[$i]['id']，数组可以是一维或者二维。
    ⑧函数，在模板中可以直接使用ASP的内置函数，如果函数调用是以一个独立的标签存在，那么必须在函数名前面加$号，例如templates/default/module/recommend.asp文件第15行调用cut_str()函数：{$cut_str($recommend[$i]['art_title'],11)}，其中$recommend[$i]['art_title']是数组$recommend的一个元素，变量$i和字符串'art_title'是数组的下标。模板中可以调用ASP内置函数和include/function.asp文件中的函数。

5.模板引擎说明
    sinsiu模板引擎指的是index/sinty/sinty.asp文件中的sinty_类，这个文件有且只有这么一个类。这个模板引擎为什么叫sinty呢？其实没有特别的意义，sinty并不是一个英文单词，就像sinsiu不是一个英文单词一样，事实上，sinty=sin(siu)+(smar)ty，smarty是著名的PHP模板引擎。面向对象的程序员都知道，对于一个类，我们并不需要知道它是如何工作的，而只需要知道怎么去用它。那么，我们该如何去使用sinty呢？sinty为我们提供了以下可供使用的公共函数：
    ①get_tpl_info(val)函数，我们在上文“新秀系统运行基本流程”中讲到，index/index.asp文件在执行到initial()函数的时候，会通过sinty从模板目录中的sinty.xml文件中获取页面栏目函数名，其实在initial()函数里面就是用调用了get_tpl_info(val)函数。那行代码是这样写的：initial = sinty.get_tpl_info(S_TPL_PATH&fil)，其中S_TPL_PATH&fil是一个路径，作为该函数的参数，S_TPL_PATH是模板目录路径，fil是文件名，在上面那个例子中就是“index.asp”。这个函数的作用就是获取当前页面栏目函数名。
    ②assign(val_a,val_b)函数，这个函数很重要，它的作用是给标签变量赋值，参数val_a是标签变量名，字符串类型，val_b就是将要赋给val_a是值，例如执行call sinty.assign("abc","123456")之后，如果对应的模板文件中有对应的标签{$abc}，那么{$abc}就会被翻译成123456。
    ③display()函数，这个函数也很重要，它执行了整个流程的最后一步，当模板编译好之后，这个函数执行编译好的文件，把页面发送到客户端显示出来。
    ④found_html(path)函数，这个函数用于生成当前页面的.html文件，参数path为文件保存路径。
    ⑤set_sinty_path(val)函数，这个函数用于设置sinty的路径，在实例化sinty_类之后就必须执行它，参数val为sinty路径。
    ⑥set_include(val)函数，这个函数用于设置编译后的文件必须包含的文件，参数为index/sinty/compile目录到所要包含的文件的相对地址。
    ⑦set_code_page(val)函数，这个函数用于设置网页编码，默认是65001，也就是UTF-8编码。
    这些函数我在这里不做详细的说明，具体的用法可以参考index/module.func.asp文件。

6.数据库类的说明
    数据库类db_class放在include/db.class.asp文件中，它封装了对数据库的直接操作，为什么要这样做呢？第一，因为sinsiu虽然目前只采用ACCESS数据库，但并不表示它永远都只采用ACCESS数据库，也许在不久的将来，sinsiu将同时提供ACCESS数据库和MSSQL数据库供用户在安装时选择，但是操作这两种数据库的程序（虽然一样是ASP程序）有很大的差别，把不同数据库操作封装在一个类中，对外提供统一的使用接口，有利于解决连接不同数据库的问题；第二，操作ACCESS数据库的程序和操作MYSQL的程序也很大的区别，这不利于sinsiu改写成PHP版，因此这个类中的一些重要的方法模仿了PHP的数据库操作函数，这是为将来的PHP版做好准备。目前，db_class类只能执行insert、delete、select、update（增删查改）四种操作。db_class类的一些方法（函数）说明如下：
    ①set_db(root_,db_type_,db_path_,db_name_,db_user_,db_pwd_,db_prefix_)函数，设置数据库信息，以数据库路径、数据库名、数据库类型等信息作为参数，这些参数都是配置文件include/config.asp中的常量，这个函数是在实例化db_class类之后第一个使用的函数。
    ②sql_connect()函数，连接数据库，这个函数在set_db()函数之后使用。前两个函数的使用方法可参考include/common.asp文件第10行至第12行。
    ③close_db()函数，关闭数据库，这个函数在所有数据库操作之后、清除db_class对象之前执行。
    ④sql_query(sql)函数，执行一条指定的SQL语句，执行之后不返回任何结果。对于insert、update、delete而言是不需要返回结果的，对于select，sql_query()函数将一些结果保存在db_class类的一些属性（成员变量）中。
    ⑤sql_result(row,field_name)函数，获取结果数据，这个函数是在采用sql_query()函数执行select语句之后执行，由于采用sql_query()函数执行了select之后，sql_query()函数将查询结果保存在一个二维数组中，sql_result()的作用就是在这个二维表中读取数据，参数row是行数，field_name是字段名。
    ⑥get_record_count()函数，获取查询结果记录数。
    ⑦get_fields_count()函数，获取查询结果字段数。
    ⑧set_page_size(val)函数，设置查询结果每页记录数，但不一定要使用，一般用于翻页程序。
    ⑨set_absolute_page(val)函数，设置查询结果当前页。
    ⑩set_real_page_size(val)函数，设置查询结果当前页实际记录数，这个跟set_page_size()函数有点区别，set_page_size()函数只是很笼统地设置每页有多少记录，比如10个记录，但是实际上不一定每页刚好有10个记录，比如查询结果总共有95条，那么最后一页就只有5条记录，不足10条，这个函数的作用就是设置实际的记录数。
    最后还有一个很常用的函数：重置函数reset()，由于每次执行完一些数据库操作以后，不一定要清除db_class对象，因为清除了之后下面如果要用就得重新连接数据库，这样很影响效率，但是如果不清除db_class对象，db_class对象里面的成员变量已经乱了，如果直接使用的话，会得到不正确的结果，怎么办呢，这时候可以使用重置函数reset()。
    上面这些函数，在前台index目录和后台admin目录中大量出现，大家可以自己找来参考。
    
7.一个重要类的说明
    在旧版本的用户手册中，这一条的标题是“一些重要类的说明”，现在“一些”变成“一个”了，主要是因为从1.1 beta11开始，产品类product_model被取消了，数据库中的产品表也并入了文章表中，所以我们这里只讲文章类。
    除了上面所讲sinty_类和db_class类之外，还有十多个常用的类，这些类都是以独立的文件存放在index目录中，后缀名都是.model.asp，这里我们只讲article_model类。
    在文件index/module.func.asp的module_article_main()函数中，几乎用到了所有article_model对象的公共函数。首先是调用set_art_type()函数选择数据类型，在新秀系统数据库中，产品、文章、下载等内容都存放在article数据表中，他们是通过art_type字段来区分的，set_art_type()函数的参数就是art_type字段的值。我们再看其中一个if分支，set_family()函数从get_cat_family()函数那里获取一个数组，这个数组记录了我们所要查询的分类及其子分类的数据表ID信息。set_fields()函数的作用设置我们所有要查询的字段名，它是一个字符串，字段名中间以英文半角逗号隔开，例如"art_id,art_title,art_add_time"，接着用到了set_cat_id()函数，它的参数是一个文章分类的数据表ID，再接着用到了set_page_size()函数，这个函数的作用是设置每个页面显示多少行，再接着用到了set_page_num()函数，参数是当前页数，只是告诉程序目前翻到第几页，便于程序计算。我们再看另一个分支，首先还是用到了set_fields()函数，然后是set_art_id()函数，这个函数的参数是当前页面所要显示的文章的数据表ID，再然后是get_prev("id")函数和get_next("id")函数，这两个函数的作用分别是：获取上一篇文章的id和获取下一篇文章的id，参数"id"换成"title"的话就是获取标题了，获取后的值通过sinty对象的assign()方法给标签赋值。再然后，两个分支都执行了get_article()方法，这个方法返回一个二维数组，赋给article标签，但是在模板中不能直接使用{$article}标签，而是使用其带下标的数组元素，例如$article[$i]['art_title']，因为它是一个数组，不是一个变量。这个数组存储了当前页面将要显示的若干篇（当然可以是一篇）文章的信息。最后，比较令人郁闷的是，最后赋值的article_u和article_name有什么用呢？article_u是上面那个article数组的第一维的最大下标，article_name是一个数组，它保存了article数组第二维的别名，在产品类和文章类中这个函数中保存的别名就是调用set_fields()函数时所传递的参数，但是在有的类中，别名是直接指定的，例如menu_model类的get_menu_name()函数。
    其它类我就不多说了，大家可以根据函数的英文名称，结合module.func.asp文件中的使用实例来弄明白那些函数的作用，至于那些函数是如何工作的，这可以不必关心。

8.如何把内页的栏目移到首页？
    我们举例说明，例如您想把产品展示页里面的产品分类复制一个到首页，该怎么做呢？在后台就可以完成这个修改。首先进入后台“文件管理--模板文件--sinty.xml--编辑”，在<product name="产品展示">下面找到<module name="菜单">product_tree</module>一行，复制它。然后回到上面找到<index name="首页">，把复制的代码粘贴到<index>标签里面，位置前后不限，然后提交保存。然后再进入后台“文件管理--模板文件--product.asp--编辑”，复制{inc:module/product_tree}一行，然后进入后台“文件管理--模板文件--index.asp--编辑”，找到{inc:module/notice}一行，把刚才复制的内容粘帖在这一行下面，然后提交保存。打开首页，您会看到网站公告下面多了一个产品分类栏目。

9.如何修改模板的颜色？
    这个问题经常遇到，但不容易说清楚，因为这不是改一两行代码就可以解决的，但说它难其实也不难，有CSS和Photoshop基础的用户应该都能解决，如果您没有CSS和PS基础，这个问题是难以解决的。首先要PS软件或其它图片编辑工具修改模板里小图片的颜色，这些图片放在templates/default/images目录，有些图片宽度只有1像素，需要用PS软件放大后修改。其次，要修改模板的CSS文件templates/default/css.css，可以用Dreamweaver软件查找出所有“color”修改文字颜色，查找所有“background”修改背景颜色，查找所有“border”修改边框颜色。

10.如何制作模板？
    新秀系统自发布第一个版本开始，就希望用户能自己制作模板，制作了模板之后还拿出来共享，但愿望总是美好的，现实总是残酷的。很多用户只是对模板略作修改，而不是“制作”，修改和制作是有很大区别的。要看一家建站公司的实力，至少应该看它是否能够制作模板，只能修改模板不能制作模板的所谓建站公司不能算真正的建站公司。对真正的建站公司来说，sinsiu的默认模板再漂亮也是没用的，因为他们不会直接拿来使用。我在几家建站公司工作过，做企业网站基本就是制作模板，后台是用现成的网站系统的后台，前台界面重新设计，可以做到和原来的网站系统界面几乎没一处相同。那么sinsiu能做到这一点吗？能不能把sinsiu模板做得和默认模板根本不同？可以的，我以前在建站公司，有很多网站是用sinsiu做的，如果单给您看前台，估计您看不出那是用sinsiu做的。页面效果图是网页设计师（美工）设计的，他可不管程序员要用什么系统，他当然也不去理会sinsiu是什么东西，他就设计一个界面，扔给程序员做模板，程序员做模板必须按效果图做，而不是按sinsiu或者其它什么系统的界面做，在这样的情况下，做出来的模板几乎是独一无二的，不和网上任何系统的界面相同，当然，如果网页设计师的效果图是抄袭的，那另当别论。您也许无法想像ASP版的JTBC系统就是以前我们公司技术总监最看好的系统，也是公司里用来做网站最多的系统，请问您还能找到比JTBC系统默认界面更难看的系统吗？但是JTBC默认界面难看归难看，它的可拓展性是非常强大的。一家真正的建站公司，可以无视一个网站系统的默认界面。当然这里说无视，是指界面美工设计而言，而不是指功能，比如新秀没有会员登录这个功能，如果效果图里面加了个会员功能，那用sinsiu就做不出来，非要做出来也可以，不过要改很多程序，超出模板的范围。一般的企业网站，sinsiu都是可以应付的，以前也用它做过行业网站，但是修改了非常多模板之外的程序。有时候设计师做出来的效果图程序上难以实现，这时候程序员需要和设计师沟通一下。一般有经验的设计师做出来的效果图是几乎可以百分之百实现的，网页设计不同于平面设计，网页设计有网页设计的规则，没经验的设计师设计的出来的东西有时很难实现，或者会增加程序员很多工作量。
    我们来讲一下制作模板的几个步骤。
    ①制作网页效果图。网页效果图不同于一般的平面设计，优秀的平面设计师不一定能设计出优秀的网页效果图。网页效果图一般用Photoshop或Fireworks软件做，保存为.psd或.png格式。网页效果图必须和实际的网页一样大小，必须把网页上的每一个细节都画出来。效果图主体宽度一般不要超过的1002像素，因为在1024*768分辨率的显示器中，1002像素加上滚动条刚好满屏。字体一般是12像素，大一点的字体用14像素，一般用宋体，不要用大号的黑体，因为中文一般都是点阵字体，如果网页上的字体太大，会出现锯齿。虽然您用PS做效果图可以消除锯齿，但是在网页上除非直接用图片，不然无法消除锯齿。网页上的文字是不建议用图片的，因为不利于SEO优化，也不方便修改，做中英双语版也麻烦。最好不要用一些不常见的字体，因为这些字体很可能是网页访客电脑里没有的，比如您用“微软简综艺”体做效果图，程序员刚好也有这种字体，直接在CSS里用指定了这种字体，您们看到的网页都正常，但是如果用一个没有这种字体的电脑浏览网页，您看到的就不是“微软简综艺”体了，而是默认的宋体。“微软雅黑”是个很不错的字体，它是矢量字体，字体加大后不会出现锯齿，但是XP操作系统默认没有这种字体，我的XP系统是有这种字体的，不知道是哪个软件或补丁帮我加进去的，但不能排除有一部分用户仍然没有这种字体，所以使用时要慎重考虑。
    ②制作HTML页面。这一步其实不叫这个名字的，不同公司有不同的叫法，有的叫“切图”，有的叫“排版”。制作HTNL页面这一步给谁做，不同的公司也有不同的做法，有的公司给程序员做，美工直接把效果图给程序员，有的公司把这一步给美工做，美工不仅要做效果图，还要把效果图做成HTML页面。要做好这一步，必须非常熟悉DIV+CSS，当然，您用table排版也可以，但是程序员可能不大喜欢和您合作。大家如果要做好这一步，听我的劝告，认真把HTML和CSS学好，多动手实践，自己从零开始做一个静态页面，不要去改现成的。这一步做不好，很难谈制作模板。制作HTML页面需要注意的问题很多，比如CSS和JS的浏览器兼容性、HTML如何写才能更容易套程序，等等，这些问题很多很难讲清楚，最好是在实践中不断学习。
    ③最后一步是将静态的HTML页面动态化。这一步一般叫“套程序”。早期的ASP网站不像现在这样逻辑和视图分离，搞什么MVC模式，那时是程序和HTML标签混编的，模板制作者一般都要很熟悉ASP语言。现在不一样了，很多系统都是逻辑和视图分离，新秀系统也是这样。新秀系统的模板机制类似于ecshop，不同于dedecms。我个人觉得ecshop是比较标准的MVC模式，它的模板引擎是smarty改进的，架构应该算是比较规范的。但是ecshop改起来不容易，您想把它内页的东西移到首页，那很困难，要修改模板之外的程序，这一点和sinsiu 1.1 早期的beta版本一样，新秀现在还好，只要修改模板和sinty.xml文件就可以了。我觉得dedecms的模板标签好像是从早期的函数调用演化而来的，它和sinsiu目前的模板机制有很大的不同，习惯dedecms那种模板的用户可能会觉得sinsiu很难理解，其实sinsiu并不难，至少对我来说是这样的，我自己用它来给客户做模板，我不会让自己很难做的，是不是？做这一步，最好要会编程，不懂编程的话，也许也可以做吧，但肯定会吃力很多，建议大家最好学好ASP或PHP。如果您会编程，相信上文的“模板标签说明”读起来并不吃力，几乎每一本编程教材都有讲变量、if、for这些东西，我都看腻了。我在这里不会和大家讲“套程序”的详细细节，因为那讲起来非常长，不是一般的长。而且，如果您不会制作HTML页面，也不会编程，那么在制作模板的过程中就不知道如何举一反三，我现在说技术细节有什么用呢？举一反三很重要，就像做数学题一样，我告诉您答案没用，您自己会做才有用。如果您会ASP或PHP编程，这个文档已经够了，上面提供的内容已经足够您完成一个模板的制作。
  
  
---------------------------------
四、后记
---------------------------------
    我希望这个用户手册能帮大家解决问题、节省时间，也希望它能帮我节省回答问题的时间。有时候看到有的用户花了很多时间和精力做的网站，因为一些小问题导致网站不能正常使用，找我帮忙，我挺为难的，我不忍心看到用户白白浪费时间重做网站，也不想浪费自己的时间去解决这些问题。现在我只能寄希望于这个手册，这个手册以后还会增加和完善，让它尽可能多地帮助我们节省时间。
   
（陈湘国，2012年9月9日）
    