- 相关文章 (13)
- QBlog隐藏技巧 (2)
- 爱说说系列 (4)
- QBlog 开源发布 (3)
- QBlog版本发布 (8)
- QBlog 模板制作教程 (6)
- QBlog开发者视频教程 (6)
- 秋色园技术原理解析 (21)
- 啊哈
- スーパーコピーブランド専門ショップ時計 バッグ 財布N級品販売通販 全品送料無料!! 弊社は価値をつけてルイヴィトンを販売して、シャネル 、グッチなど。 ◆2018年は最も新型に人気があって、新しい素材の商品到着! 人気ブランド品大注目 ◆信用の第1、風格は多くて、品質は良いです! ◆運賃の無料(日本全国)が予約購入することを期待しています! ◆弊社の商品は絶対的な自信があります。 ぜひ、見てくださいね!! 海外スーパーコピーのスーパーコピー バッグ、アクセサリー スーパーコピー時計、貴金属の(リサイクル品)のスーパーコピー販売買取
- ルイヴィトン 財布スーパーコピー ようこそ ルイヴィトン スーパーコピー販売商店へいらっしゃいませ! 真心込めて最高 レベルのスーパーコピールイヴィトン偽物ブランド品をお届けしています。 安全税関対策+ 素早い配送+随時の在庫補給+丁寧な対応+スーパーコピー販売業界最低価格に挑戦 ! 当店は業界最高品質に挑戦!全商品はプロの目にも分からないルイヴィトン 財布スーパーコピーです。 ルイヴィトン財布コピー、ルイヴィトン 財布 ブランド偽物など世界 有名なバックコピー商品が満載! 当店のスーパーコピー商品は他店よりも質が高く、金額も安くなっております。 ご購入する度、ご安心とご満足の届けることを旨にしております よろしくお願いします ありがとうございます (*^__^*)
- 可以
- 不错,博主是大神,膜拜中
- 44
- 顶起来!一页文字,几载求索
- ACESS 我也是深恶痛绝,但还是不得不用
- 阿斯顿
- <label>上节回顾</label>
- 绑定一级域名(顶级域名)到秋色园QBlog博客教程(22749)
- 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)(22433)
- 秋色园QBlog技术原理解析:开篇:整体认识(一)(21285)
- 调查:是否支持秋色园QBlog走进开源博客之路(19983)
- Windows7下如何安装部署秋色园CYQBlog站点(15370)
- 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)(14315)
- 开源博客-秋色园QBlog多用户博客系统安装视频教程(14065)
- 如何安装部署秋色园CYQBlog站点(13512)
- 秋色园QBlog技术原理解析:认识整站处理流程(二)(13317)
- 秋色园QBlog技术原理解析:Module之基类生命周期-页面加载(七)(12991)
- 调查:是否支持秋色园QBlog走进开源博客之路(32)
- 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)(23)
- 秋色园QBlog技术原理解析:开篇:整体认识(一)(13)
- QBlog开发者视频教程:开篇-开发基础配置与系统运行(一)(13)
- CYQ.IIS 无需要安装IIS运行QBlog网站(13)
- Windows7下如何安装部署秋色园CYQBlog站点(12)
- 开源博客CYQ.Blog 秋色园QBlog 源码下载[免费开放24个下载码](11)
- 开源博客-秋色园QBlog多用户博客系统安装视频教程(10)
- 绑定一级域名(顶级域名)到秋色园QBlog博客教程(10)
- 如何安装部署秋色园CYQBlog站点(9)
文章回顾:
1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用
2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程
3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL
4: 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序
5: 秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建基类和自定义生命周期
6: 秋色园QBlog技术原理解析:Module之页面基类-生命周期流程(六) --介绍基类生命周期内部业务
7: 秋色园QBlog技术原理解析:Module之基类生命周期-页面加载(七) --介绍界面html加载原理
8: 秋色园QBlog技术原理解析:Web之页面处理-内容填充(八) --介绍html的内容是如何填充
9: 秋色园QBlog技术原理解析:独创的多语言翻译机制(九) --介绍html多语言翻译原理
ps:秋色园QBlog下载地址:http://www.cyqdata.com/download/article-detail-427
上节回顾:
上一节 秋色园QBlog技术原理解析:独创的多语言翻译机制(九) 中,介绍了秋色园QBlog的多语言翻译机制,严重的解放了coder的劳动力,将翻译的职责分离给美工界。
事隔10来天,本篇接给力,为大伙演示一下完整的内容填充及页面翻译。开始动手了:
一:整体介绍解决方案:
从上往下看,比上一个示例多了以下内容:
1:数据库一个:myspace.mdb,采用的是秋色园的的数据库,里面还存有不少数据。
2:Language.ashx:多语言处理程序,用来翻译用的。
3:UrlRewriteEntity:增加的静态内容项目,放了一条SQL和表枚举
OK,增加的东西并不多,其它的都是上次示例的内容了,不知道的回头看起吧。
二:多语言翻译
1:正如上节示例中,一次性的批量翻译代码:
{
System.Xml.XmlNodeList list = doc.GetList("*", "key");//获取所有带key标签的节点
System.Xml.XmlAttribute attr = null;
if (list != null && list.Count > 0)
{
string key = null;
for (int i = 0; i < list.Count; i++)
{
attr = list[i].Attributes["key"];
key = attr.Value;
list[i].InnerXml = _Language.Get(key);//翻译
list[i].Attributes.Remove(attr);//移除key属性
}
}
list = doc.GetList("*", "keyvalue");//获取所有带keyvalue标签的节点
if (list != null && list.Count > 0)
{
string key = null;
for (int i = 0; i < list.Count; i++)
{
attr = list[i].Attributes["keyvalue"];
key = attr.Value;
list[i].Attributes["value"].InnerXml = _Language.Get(key);//翻译
list[i].Attributes.Remove(attr);//移除keyvalue属性
}
}
}
2:HttpCustom业务流程里,需要增加调用翻译这么一行
{
if (_Document.Load(Context.Server.MapPath("Skin/system_health/index.html")))
{
CssAndImg(_Document);
Translate(_Document);
}
}
3:URL重写,将语言切换路径重定向到Lanuage.ashx处理程序中
{
string url = context.Request.Url.ToString();
if (url.Contains(".css") || url.Contains(".jpg") || url.Contains(".png"))//放到css和jpg图片
{
return;
}
if (url.Contains("lang"))
{
context.RewritePath("~/Language.ashx", null, "url=" + url);
}
else
{
//--这里要做很多Url逻辑处理
context.RewritePath("~/Default.ashx", null, "url=" + url);
}
}
4:Language.ashx处理一下,然后返回原来页面
public class Language : HttpCustom
{
protected override void Page_Load()
{
string url = Request["url"];
string lanKey = url.Substring(url.LastIndexOf('/')+1);
Language.SetToCookie(lanKey.Substring(0, 1).ToUpper() + lanKey.Substring(1));
Context.Response.Redirect(Context.Request.UrlReferrer.ToString());
}
}
OK,多语言处理就算结束了,预览效果?不急,等把内容填充也一并完成先吧。
三:页面内容填充
1:创造类似CMS般的约定语法
示例:
<li><a href="http://www.cyqdata.com">省略内容</a></li>
</ul>
说明:
1:catelist,一个约定的标签,名称分类列表
2:id,就是分类的id了。
3:count,就是循环多少条
4:Li那一行,装饰用的,因为最终它是被替换掉了。
总说明:任意标签只要加上catelist+id,都可以得到一个分类的循环输出,至于count就是可选项了。
2:整理HTML,按约定放好要显示分类的标签
例如:
<ul class="evt_plist" name="catelist" id="12" count="40">
<!-- 健康·教育 -->
<li><a target="_blank" title="路过秋天" href="#">教育</a></li>
</ul>
<ul class="evt_plist" name="catelist" id="13" count="40">
<!-- 健康·和谐 -->
<li><a target="_blank" title="路过秋天" href="#">和谐</a></li>
</ul>
<ul class="evt_plist" name="catelist" id="14" count="40">
<!-- 健康·私语 -->
<li><a target="_blank" title="路过秋天" href="#">私语</a></li>
</ul>
这么稳妥的放几行,结果就是自动取分类id为12,13,14的内容填充列表了。
3:后台写一个通用的代码处理
OK,现在类似CMS的自填充功能也写好了,程序员也轻松,美工也轻松。
四:最终F5预览看效果
1:访问,内容列表出现了
2:英文翻译时
翻译只是翻译了界面,内容是没有翻译的,想翻译内容?自己写多一篇英文的文章吧,哈哈!
五:总结
本节做为一基础的总结性文篇,没有太多的细节文字解说,旨在为大伙提供一个整体流程的示例代码,重点在源码。
下节,将继续下一个流程,解析秋色园QBlog的Post提交机制。
六:源码下载
最后,就是大众期待的源码下载了。
下载地址: 秋色园原理解析第十节示例.rar
下一篇:秋色园QBlog技术原理解析:页面Post提交机制(十一) --介绍如果Post提交数据