不需要写任何代码,我们的博客应用已经是 可更换主题(themeable) 的了。要使用主题,我们主要是需要通过编写个性化的视图文件开发主题。例如,要使用一个名为 classic
的使用不同布局的主题,我们需要创建一个布局视图文件 /wwwroot/blog/themes/classic/views/layouts/main.php
。我们还需要修改应用配置以显示我们选择的 classic
主题。
return array(
......
'theme'=>'classic',
......
);
我们也可以把我们的博客应用国际化,这样它就可以通过多种语言显示。这主要包括两方面的工作。
第一,我们创建不同语言的视图文件。例如,针对 PostController
的 index
页面,我们创建了视图文件 /wwwroot/blog/protected/views/post/zh_cn/index.php
。当应用的语言被配置为简体中文(语言代码是 zh_cn
)时,Yii 将自动使用此视图文件。
第二,我们可以为代码生成的信息创建信息翻译。信息翻译应保存在目录 /wwwroot/blog/protected/messages
中,我们也需要在使用文本字符串的地方调用 Yii::t()
方法把这些字符串括起来。
关于国际化的更多详情,请参考 指南。
虽然 Yii 框架 非常高效, 但 Yii 写的某个应用未必高效。在我们的博客应用中有基础可以提高性能的地方。例如,标签云 portlet 可能是性能瓶颈之一,因为它使用了较复杂的数据库查询和PHP逻辑。
我们可以使用 Yii 提供的成熟的 缓存功能 提高性能。Yii 中最有用的组件之一就是 COutputCache, 它会缓存页面显示中的片段,这样生成此片段的代码就不需要在每次收到请求时执行。例如,在布局文件 /wwwroot/blog/protected/views/layouts/column2.php
中,我们可以将标签云 portlet 嵌入到 COutputCache 中:
if($this->beginCache('tagCloud', array('duration'=>3600))) { $this->widget('TagCloud', array( 'maxTags'=>Yii::app()->params['tagCloudCount'], )); $this->endCache(); }
通过以上代码,标签云的显示将由缓存实现,而不需要在每次收到请求时实时生成。缓存内容将在 3600 秒的缓存期内有效。
我们的博客应用现在只有非常基本的功能。要成为一个完整的博客系统,还需要添加更多的功能。例如,日历 portlet,邮件提醒,日志分类,存档日志 portlet 等等。我们把这些功能的实现留给感兴趣的读者。
Found a typo or you think this page needs improvement?
Edit it on github !
Signup or Login in order to comment.