逆流の鱼, 5 四月, 2019

创建新用户并登录

<?php 
$user = User::create([ 'name' => $username, 'mail' => $email, ]);
$user->activate();// NOTE: login will fail silently if not activated! 
$user->save(); 
user_login_finalize($user);

 

逆流の鱼, 21 三月, 2019

当用views创建page时,定义像'node/%node/foo'这样的路径,然后创建一个menu tab,在context filter里提供当前node页面的id作为默认参数,并开启参数验证:node type必须为article等。

当访问node/123/foo时,如果该node type不是article,会返回404等(根据设置),但menu tab依旧存在。

相关issue链接:

逆流の鱼, 12 三月, 2019

Tournament Bracket(过时,不支持现在版本的php)

Tournament:这是一个基于用户互动的比赛管理模块,后台创建一个比赛后,用户可以加入比赛和挑战其它对手。

Sports League:纯后台发布信息的功能,数据设计非常完善,但录入数据比较繁琐,连关联内容都要手动输入node id。适合用来做二次开发。

逆流の鱼, 18 二月, 2019

尝试了将本网站升级到drupal8,折腾了几个小时,虽然几经波折但最后还是成功了。在D8版本的水滴网试用了一段时间,觉得并不满意,于是又用回D7的版本。理由主要有几个:

逆流の鱼, 28 八月, 2016

一些nginx服务器的配置硬性隐藏了index.php,导致drupal的autocomplete功能出错(返回404)。

临时解决方法:

修改includes/form.inc

逆流の鱼, 8 八月, 2016

field_collection比较完美地实现了子字段的使用,但由于collection是通过entity+field实现的,据说有性能问题,还带来了数据迁移时的复杂性。drupal的entity+field可以被理解为扁平化结构的数据表,在扁平化结构中记录父子关系,对于复杂的数据查询是比较难构建的。试想一下,要提取某个node的所有field,首先得先将各个子字段表join到父字段(其实是个entity)表,再join到node表,还要join上其它非collection的field表。