你在这里


模块

Drupal网站用Views模板来替代Views PHP修改字段内容

James Qi 2016年10月20日 - 18:21 发布

  以前Drupal网站中遇到需要对Views的输出进行一些变换的时候,一般是通过安装Views PHP这个模块,在Views中添加Global PHP字段,在其中设置读取什么值、进行什么变换、输出什么内容,这个方式很早就开始用了,Drupal 6和Drupal 7都用过。但缺点是设置麻烦,还可能会引起负载的升高。

  最近在调试一个新的网站中就遇到数据量大的时候,服务器报500错误,甚至导致阿里云服务器死机的情况。检查后发现都是与Views相关,先安装了Views PagerLite来减少MySQL的Count指令,但依然有不少内存不足的报错。

  后来在Drupal官方网站上找到views-view-field.tpl.php的说明,按照这个来进行配置、修改,可以达到与Views PHP一样的效果,但不会一起负载增高,真是一个好办法!

  详细说明请看:views-view-field.tpl.php


  2016年11月11日补充原始模板代码为:

修改Drupal的xmlsitemap模块来控制搜索引擎爬取网站地图速度

James Qi 2016年2月2日 - 16:40 发布

  以前托管服务器或者租用的服务器一般都是100M共享的带宽,很少出现机器带宽被占满的情况,去年开始采用阿里云平台后,带宽就是一个不得不考虑的成本因素,我们一般都是每台ECS购买的10M左右带宽,每年费用已经不少了,而投入使用后很轻易就会被占满,关键是网站的流量并没有特别提升,广告收入没有增加,成本却在大幅提高,还导致正常用户访问变慢、困难。

  同事在Linux服务器上安装了一个iftop来查看带宽占用情况,很容易就发现了是搜索引擎的爬虫抓取sitemap.xml这样的网址占用了很大带宽,我们网站系列多、页面多、还有多语言或者手机版,网站地图就特别的多,如果爬虫来得过于频繁就给我们不小困扰。

  但爬虫这种抓取活动还不宜直接屏蔽以免影响收录,所以考虑限制抓取速度的办法,安装了apache的mod_bw模块,还没有调试好,不过在网上搜索到文章说可以用PHP编程来实现控制下载速度,这个对我启发还比较大,因为我们正好修改过Drupal的xmlsitemap模块xmlsitemap.pages.inc文件来改变网站地图中的内容和格式,只要再把输出方式改一点、增加一点sleep循环就可以,代码如下:

Drupal的反垃圾模块honeypot蜜罐技术设置

James Qi 2015年3月10日 - 09:48 发布

  所谓蜜罐技术是指的引诱垃圾发帖的机器人进入我们设置的陷阱,正常的人类发帖者是不会受到影响的,而机器人不能分辨、进行了上当的操作,从而被我们识别、屏蔽。

  Drupal中有一大类反垃圾模块都是用的这种技术,其中有honeypot, botcha, hidden captcha, spamicide等,我看hoeypot的安装量最大、drupal 6/7/8都支持,就选用了这个。

  安装很简单,设置也只有一个页面,如果需要批量安装也可以用命令drush dl honeypot, drush en honeypot来执行,站内模块设置的话,我去在数据库中找到与honeypot相关的19个变量:

自由标签:

Drupal反垃圾模块的选择

James Qi 2015年3月9日 - 11:08 发布

  网站只要是打开了用户反馈信息、留言评论的功能就避免不了被垃圾骚扰,无论是以前用过的MediaWiki还是现在主要用的Drupal都是这样,其它各自现成的网站软件或者自己编写的软件都会遇到这种讨厌的问题。

  最常见的就是安装验证码模块,不过从我们实用中发现还是有不少垃圾发送者可以破解验证码而继续发送垃圾,后来我又尝试了Mollom这个“智能”反垃圾模块,使用了综合的办法来防范,确实很有效,不过去年开始随着中国大陆与国外网络之间的连接越来越受GFW的影响,总是看到无法连接web service的报错,被迫去掉了这个模块(这个模块还有一个缺点就是免费版的每天发贴限制在50条以内)。

  今年准备把好些其它网站的留言功能都打开,希望能增加用户互动、更好为用户服务,不过刚一打开一些评论功能马上就遇到垃圾不断,不得不暂停开放,直到找到合适的反垃圾办法。

  春节后这几天专门查看了这方面的不少文章,主要都是英文的,摘要如下:

Spam prevention wiki:drupal 反垃圾模块分类汇总,很全面,分为验证码、内容过滤、内容分析、阻止邮箱地址、引诱机器人出错、用户sesseion等几种分类;

自由标签:

修改过的Drupal第三方模块记录

James Qi 2014年5月14日 - 05:04 发布

  在升级Drupal网站时需要特别注意曾经对哪些模块进行过更改,我们这里主要修改过的记录一下:

  • xmlsitemap:修改了xmlsitemap.page.inc来适合多语言、手机版的xmlsitemap;
  • transliteration:子目录data下纠正了一些错误的拼音;
  • languageicons:子目录flags下添加了更多语言国家国旗。

  这些模块在升级后需要对照进行更新,以便原来的功能能够继续沿用。

  Drupal核心模块以前我们也曾经修改过部分地方,后来在升级时太麻烦就抛弃了。

自由标签:

Drupal中修改node.tpl.php替代contemplate模块

James Qi 2012年3月15日 - 23:24 发布

  去年初开始用Drupal的时候就找到contemplate模块,用于定制化输出页面,觉得这个模块很好用,既可以放在数据库中也可以放在磁盘上,可以实现对每个字段的精确控制,这个模块成了我们做各种导入数据库的Drupal网站的必配模块。
  今年在使用Drupal 7的时候,我也准备继续用这个模块,但看到提示说这个模块可能会废弃,原因是Drupal 7有了一些与Drupal 6不同的机制。不过现在依然提供了可以在Drupal 7上运行的版本,我也试用了一下,有一些地方不是很方便,读取字段老是报错,breadcrumb也不能控制了。
  这段时间摸索Drupal 7的时候,接触各种tpl.php的模板文件多了一些,今天就试着在新网站上不安装contemplate这个模块,而是直接修改node.tpl.php,例如网站上content type为industry的页面对应模板就是node--industry.tpl.php。
  需要注意的是,contemplate中有body和teaser,rss三种模板,而node.tpl.php中只有通过判断页面的类型来转向不同的处理,从而在一个node--industry.tpl.php中实现body和teaser两种模板。

Drupal第三方模块中的英文翻译汉化

James Qi 2011年1月7日 - 14:05 发布

  这几天在龙人网的改版中需要Drupal中安装一个第三方模块Date来实现CCK中的日期字段,安装后可以正常使用,但该模块基本上没有汉化,后天管理是英文倒问题不大,但前台界面显示英文就不太友好了,特别是“1 January, 2011 - 08:00:00 PM”这样的日期格式更是看着别扭。

  在网上找了一些说明Drupal模块汉化的帖子,在该模板的sites/all/modules/date/translations目录中找到date_api.pot文件,将其中的msgid英文内容翻译成中文,放到msgstr中,保存为date_api.zh-hans.po,然后通过网站的管理界面admin/build/translate/import来导入即可,还算方便,不过整个Drupal及第三方模块的翻译量太大,只能在需要的情况下进行少数这样的汉化。

  这些天逐步开始用Drupal来实现一些网站的改版和新建,在感到Drupal的强大同时,也遇到汉化、权限、模块兼容等方面的问题,昨天看到Drupal 7刚刚推出,不过估计也还不成熟,暂时也不去用,稍后再去了解。


  补充两条:

订阅 RSS - 模块