创建新用户并登录
<?php
$user = User::create([ 'name' => $username, 'mail' => $email, ]);
$user->activate();// NOTE: login will fail silently if not activated!
$user->save();
user_login_finalize($user);
当用views创建page时,定义像'node/%node/foo'这样的路径,然后创建一个menu tab,在context filter里提供当前node页面的id作为默认参数,并开启参数验证:node type必须为article等。
当访问node/123/foo时,如果该node type不是article,会返回404等(根据设置),但menu tab依旧存在。
相关issue链接:
有时候调试数据,需要表格呈现时,可参照以下例程。
Tournament Bracket(过时,不支持现在版本的php)
Tournament:这是一个基于用户互动的比赛管理模块,后台创建一个比赛后,用户可以加入比赛和挑战其它对手。
Sports League:纯后台发布信息的功能,数据设计非常完善,但录入数据比较繁琐,连关联内容都要手动输入node id。适合用来做二次开发。
尝试了将本网站升级到drupal8,折腾了几个小时,虽然几经波折但最后还是成功了。在D8版本的水滴网试用了一段时间,觉得并不满意,于是又用回D7的版本。理由主要有几个:
Multiple image upload breaks image dimensions
现象:drupal 8核心的image field支持圈选多个图片上传,但图片保存时,只会以第一张图片的尺寸为准。如果圈选的图片大小甚至比例不一的话,后续的图片保存时是错误的尺寸(都是第一张图的尺寸)。
解决方案:打补丁,或等待drupal 8 核心修复
一些nginx服务器的配置硬性隐藏了index.php,导致drupal的autocomplete功能出错(返回404)。
临时解决方法:
修改includes/form.inc
field_collection比较完美地实现了子字段的使用,但由于collection是通过entity+field实现的,据说有性能问题,还带来了数据迁移时的复杂性。drupal的entity+field可以被理解为扁平化结构的数据表,在扁平化结构中记录父子关系,对于复杂的数据查询是比较难构建的。试想一下,要提取某个node的所有field,首先得先将各个子字段表join到父字段(其实是个entity)表,再join到node表,还要join上其它非collection的field表。