今年5月份写了一篇《Drupal的多语言网站搭建和设置》,尝试着用Drupal的多语言功能来搭建网站,后来更是添加了手机版,又记录了一篇《网站扩展100倍:50种语言x(电脑版+手机版)》,这些设置都成功了,只是在建立更多的系列网站时依然觉得有些麻烦,经过一段时间的摸索,又积累了一些经验,让后面系列网站搭建起来效率更高,按照搭建的步骤,一些地方记录如下:
系统基本安装:
- 可从一开始就用drush来安装:选择语言、选择配置、设置数据库参数、设置更新参数、添加管理员及密码、设置时区信息等都可以通过简单的脚本实现;
- 添加更多管理员帐号、关闭匿名用户注册权限、开启mobile主题、设置各种主题中共用的logo和favicon、缓存设置、cron设置等,能用drush的地方尽量用drush来设置;
- 设置模块,关闭不需要的模块,下载和安装需要的模块,特别是多语言支持所用的i18n及部分子模块(最初是多数都打开,后来改为只有需要的几个打开)、l10n_update翻译自动更新模块等,添加50种语言,都可以通过drush来进行设置;
原始数据导入:
- 分析原始数据,对于需要做出分类的字段,在Taxonomy中添加Vocabulary;
- 设置Content Type,整个系列都用一个ALL类型,便于设置和维护管理,添加需要的Field,分类做成Autocomplete Term并与Vocabulary对应,设置full和tease的显示字段;
- 设置Feeds的来源,上传导入文件xxx.csv到public://feeds/目录下,设置mapping关系,注意添加GUID以便以后修改导入,Title可以用ZIP字段,以后通过模板修改显示的Title;
- 开始导入数据至结束;
显示模板修改:
- 通过在sites/all/themes/bartik中添加node--all.tpl.php来控制页面显示,包括full和teaser两种显示;
- 通过在sites/all/themes/mobile/templates中添加node--all.tpl.php来控制手机版页面显示,也可以用软链接的方式共用电脑版的node--all.tpl.php,程序中判断是否手机版来区别显示;
- html.tpl.php来添加页面顶部和底部共同的代码;
- page.tpl.php中修改main menu中Home的多语言翻译显示;
- node--all.tpl.php中对读出的字段标题进行t函数翻译,以便不需要设置内容类型的多语言及翻译支持;
自定义模块:
- 将block、views和home页三项做成一个custom module:all_postcodebase_com;
- all_postcodebase_com.module中定义各种需要的block;
- all_postcodebase_com.module中定义首页home,针对不同的站点和版本处理显示;
- views文件all_postcodebase_com.views_default.inc中可以根据需要添加一些判断;
- 在block设置中对电脑版和手机版两种主题进行各自的blocks enable和disable设置及顺序调整;
多语言翻译:
- 将50种语言的.po翻译文件都放置在sites/translations目录下,全部都是添加的内置文本及翻译,命名为模块名+版本号+语言缩写.po,例如all_postcodebase_com-7.x-0.1.ar.po;
- 在all_postcodebase_com.info文件中定义project=all_postcodebase_com及版本号version="7.x-0.1",以便l10n_update找到sites/translations目录下的对应翻译文件;
- 第一次添加all_postcodebase_com模块时自动导入对于的翻译文件;
- 翻译有添加和更改时编辑.po文件然后上传覆盖,以后用l18n_update中的检查和更新功能来更新翻译信息;
其它杂项设置:
- 设置i18n中可以翻译的变量,特别是site name,以便在site information中可以设置50种语言的网站名称,front page设置为custom module中的home;
- 修改performance中的cache设置;
- 修改search设置,运行cron或者drush来生成内部搜索索引,修改search-result.tpl.php来去掉搜索结果中的作者和日期信息;
- 设置xml sitemap,添加50种语言的站点地图,注意默认语言的站点地图需要选择English然后保存一次,否则找不到文件,rebuild后将桌面版和手机版都提交google webmaster tools;
- 修改cron设置,关闭网站上的cron周期性运行,改用Linux的crontab来控制。
因为做系列网站,所以希望能尽量精简步骤,也确实经过摸索减少了好些环节,不过上面还是写了好长,以后再有新改进的时候还会更新。对于以前没有接触过Drupal多语言网站的朋友可能还是无法通过本文了解清楚,可以多在Google中搜索遇到的问题,我自己也都是这样一点一点弄出来的,累啊!😭
用上面办法搭建的一个新例子是:Afghanistan Postcode ,首页截图如下:
近期Google的人联系我要做一个AdSense的案例宣传单页,我也是提供的上面这个截图,正好是多语言、手机版及各种AdSense广告形式都有。 😄
评论3
Drupal 7使用Drush添加多语言的脚本
下面是添加50种语言的例子,shell循环脚本:
注意,运行前需要安装Drush Language Commands的插件支持(运行一句"drush dl drush_language"就可以了)。
Drupal 7中添加50种语言的xmlsitemap
需要先开启XML sitemap internationalization这个模块,然后在数据库中(可以在phpmyadmin界面中)执行:
就可以添加50种语言的sitemap,然后再运行:
就可以生成50中语言的sitemap。
用Drush来添加50种语言的xmlsitemap
也是直接操作数据库,效果与上面一样,只是可以在Drush中运行,不用在phpmyadmin中去运行:
后面还是一样运行: