你在这里


Drupal

Drupal网站首页显示随机列表Views

James Qi 2017年2月22日 - 09:18 发布

  在很多Drupal网站的首页都是显示内容的列表,这个列表可以用Views生成,可以根据不能的内容类型、字段、分类术语表等做出不同的列表,不过在有些时候列表的开头内容比较单调或者不具有代表性,我们以前就曾经设置一个偏移值,从中间开始显示,但这也不算一个很好的办法,曾经想过显示随机内容列表,可没有实现过。

  这次在修改完善一把刀辞海网站的时候,又想到这个问题,先是准备自己用PHP编写一个随机数比对nid的程序来实现,但在网上搜索了一下,发现用Views非常容易:在排序(SORT CRITERIA)中添加Global: 随机 (Randomize)方式就可以了,注意“缓存”设置为“无”,Block caching设置为Do not cache。如下图:

  首页上显示出来效果如下:

自由标签:

Drupal网站的Web Services调用

James Qi 2017年1月19日 - 22:13 发布

  最近一直忙着在做一些微信小程序方面的工作,需要的后台数据都是从Drupal网站获取,不过开始都是纯读取一些数据,并不用到Web Services的一些增删改查等复杂操作,只需要用ViewsViews Datasource来实现Views输出Json文件供小程序调用就可以。

  不过随着开发需求的深化,必须用到微信账号关联Drupal网站、微信用户提交发布内容、点赞操作、购物车、购买付款等,就需要用到一些Web Services的标准正规操作,而Drupal官方网站上提供的Services Handbook确实写得太乱了,不好找到需要的基本调用办法,我这几天正在仔细看,也顺便整理了一些,记录如下。

  各种访问网址:

自由标签:

Drupal网站输出json数据供外部接口调用

James Qi 2016年12月19日 - 17:17 发布

  以前只从Drupal网站调用过外部的API数据,或者直接用Drupal的模块(例如DrupalGap)给外部提供json数据,我们自己对接口数据的了解不多,这段时间因为涉及到Drupal网站之间的数据调用、Drupal为外部提供通用的API接口、Drupal网站作为数据源来开发微信小程序等事情,让我们对API提供json数据了解更多,下面做一些笔记。

  可以使用的模块:

自由标签:

Drupal网站utf8转为utf8mb4支持表情等特殊字符

James Qi 2016年12月6日 - 11:39 发布

  前些天升级Drupal到7.50以上后看到状态报告中显示Database 4 byte UTF-8 support未启用,查资料后说是Drupal开始支持UTF8MB4字符集,介绍情况请看《Multi-byte UTF-8 support in Drupal 7》,可以输入表情符号、特殊亚洲字符等。我以前在博客中用iphone手机输入表情符号保存的时候会遇到数据库报错的情况,如果改用这个字符集就应该可以解决。

  我们现在用的阿里云RDS是支持utf8mb4的,这两天试了一下,先是准备新建一个默认utf8mb4的库,然后把老库内容导出、导入新库,并用SQL语句转换每个表为utf8mb4,但查看网站一直等待无法显示,运行drush命令也报错。

自由标签:

Drupal网站改http为https访问

James Qi 2016年11月29日 - 13:47 发布

  前面写了两篇SSL认证方面的博文:《申请免费的SSL证书,开通https网站》、《https多网站1个IP多个SSL证书的Apache设置办法》,看上去也不是那么复杂,但实际在做http到https站点迁移的过程中还是有一些细节需要注意,这里把Drupal网站中遇到的一些问题记录下来。

Drupal网站中显示留言者的IP地址

James Qi 2016年11月22日 - 17:08 发布

  以前在Wiki网站中文章或者讨论的匿名发布者都是显示出IP地址来(例如这个“周公解夢”页面下方的用户留言),这样方便管理员或者其他用户了解内容发布者的来源,也便于监控防范垃圾内容。而Drupal网站中留言的匿名发布者都是显示“匿名”或者用户自己留下的名称和链接。

  今天尝试了一下Drupal中修改模板文件comment.tpl.php,是可以实现显示留言者IP相关信息的,可以让注册用户和匿名用户的IP地址都显示出来,具体代码如下:

自由标签:

升级Drupal到7.52,删除不存在模块的报错

James Qi 2016年11月21日 - 14:29 发布

  虽然Drupal 8出来大半年了,但我们依然以Drupal 7为主,先前用的7.43已经好几个月了,现在出了安全更新Drupal 7.52,就照例进行了更新,有几点稍微不同的地方记录一下:

  部分网站升级后用户浏览没有问题,但管理员界面发现大量的报错:

自由标签:

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系统提供的搜索框和结果

James Qi 2016年9月29日 - 16:17 发布

  使用Drupal很多年了,在站内搜索上基本上都是采用了系统自带的搜索功能,搜索框基本没变,只是搜索结果页通过search-results.tpl.php和search-result.tpl.php进行过一些小的修改。但遇到了数据量巨大、汉字编码等问题的时候,也在某些情况下采用过其它方式:

  • Google Custom Search Engine,这个在国外还可以用,在国内无法使用;
  • Apache Solr,需要自建一套搜索功能,比较复杂;
  • Drupal Views,可以实现一些组合条件搜索查询功能。

  最近在新建已经完善以前网站的时候,遇到用户搜索目标比较清晰,我们网站中不一定有正好用户需要的关键词但有其中截取的一部分的信息,例如电话号码、IP地址等,如果能用程序做一些判断就可以让用户避免“搜索无结果”的答复,后来试了几种办法,可以用程序与Drupal本身的搜索功能结合起来用,给用户更好的体验:

自由标签:

在Drupal中直接导入、使用数据库

James Qi 2016年9月27日 - 15:15 发布

  我们这边从一开始使用Drupal就是利用的其本身的数据库结构,page, node, taxonomy, term等等都是使用Drupal本身的概念,很少直接操作数据,需要大量已有数据(一般是csv格式文件)导入网站的时候,就用第三方模块node_import (Drupal 6)或者feeds (Drupal 7)来设置和进行导入,形成页面以及分类,再辅助设置Views进行需要的列表。

  以上的办法相对来说简单易行,特别是在使用Drupal初期,我们对PHP程序和MySQL数据库不很熟悉的情况下。但在一些需要实现复杂一些功能的时候,这样的办法就有局限性,不方便实现数据库关联(虽然views也有关联功能,但内容类型、分类等牵扯起来搞得很复杂)、不利于用户浏览性能提升(数据量可能增大了很多倍,访问效率低下),数据量庞大的时候,更新也不便(曾经为更新一个系列网站重新导入花几个月)。

  后来也曾经在部分网站中直接添加数据库表,然后编写PHP程序对表进行查询,这样可以实现比较灵活的设置,但对数据库技术的要求高一些,修改起来比较麻烦。

自由标签:

页面

订阅 RSS - Drupal