Drupal8下面,字段数据自动填充实例代码

经常会在项目中遇到,比如使用feeds导入,Drupal8下面只对文本字段支持的比较友好,

我们要根据A字段的值,经过一定的运算,赋值给B字段,通常我会使用下面的这段代码实现:


/**

 * @file

 * 为j_resource实现接口hook_ENTITY_TYPE_presave.

 */ 

function mycustom_j_resource_presave(EntityInterface $entity) {

  //j_marcid保存的字符串形式,根据它的值获取到对应的id,赋值给j_marc_id

  if (!empty($entity->j_marcid->value) && empty($entity->j_marc_id->target_id)) {

//查询

论坛:

Drupal版本:

Drupal8下,views的动态关联关系的实现

我们在给客户定制的文件下载模块里面,客户想对资源进行统计,我们使用了views。不过统计总计的数据库表里面:

我们使用了resource_type,resource_id两个字段存储关联关系,这样模块可以支持多个资源实体类型。一个资源对应一个实体类型。


但是views自身并不直接支持这样的动态的关联。我们尝试了一下,通过自定义代码可以搞定:

/**

 * Implements hook_views_data().

 */

function mydownload_views_data() {

  $data['mydownload_count']['table']['group'] = t('Download statistics');


  $resource_types = mydownload_get_resource_types();

  foreach($resource_types as $resource_type){

论坛:

Drupal版本:

Drupal8下面私有文件的自主管理技术方案

客户的文件很多,也很大,按照特定的目录进行管理,比如一个期刊下面有很多个PDF文件。如果把所有文件都放到Drupal的文件系统中的话,关联导入都不大方便。

为了解决客户的文件管理,我们只管理某一个期刊的目录,目录下面的文件的下载,展示都通过程序来控制。这个功能在Drupal8下面没有现成的模块。


我们经过讨论,帮助客户定制了一个私有文件的下载管理模块。

需求:


客户自己维护一个私有文件目录,里面的目录结构元信息,整理成csv文件。

只管理目录的信息,一个期刊对应一个目录,这个目录列出期刊的所有可用pdf。

用户查看期刊的时候,可以查看这个期刊下面的所有文件,

点击需要的文件可以下载。下载需要支持统计。


关键代码:

  /**

   * Download list page.

   */

  public function downloadList($resource_type, $resource_id) {

论坛:

Drupal版本:

Drupal 8 restrict_ip 模块配置的注意事项

客户的Drupal8网站,想限制特定IP访问,这个时候我们推荐了restrict_ip 模块,客户在安装测试的时候,总是不能正常工作。

模块地址:https://www.drupal.org/project/restrict_ip


在这个模块的配置界面:

admin/config/people/restrict_ip

配置选项:

需要使用它们的内部路径:

/node/78

/node/85


这样访问对应的路径,就会起作用了。


用户在这里使用了路径别名,不起作用。


如果使用超级管理员登录后,则是正常的,可以绕过这个限制。匿名访问,就会被限制住。


论坛:

Drupal版本:

linux 下面文件夹的自动同步

linux 下面文件夹的自动同步


我们有一个Drupal网站,里面放了很多客户的文档资源,用户希望能够从一个磁盘上,备份到另一个磁盘上,这两个磁盘都可以访问到。


安装rsync


安装inotify tools

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz  


tar zxf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14


 ./configure --prefix=/usr/local/inotify-3.14


make && make install



执行同步命令:

rsync -azHXA --delete /home/private /home/p2


创建sh脚本:

论坛:

Drupal版本:

安全检查问题回复

客户的网站,要应对安全检查,下面是对安全问题的回复总结

1,有无登录失败次数限制,

有,6次封IP

2,用户在线有效时长,越短越好

可以在settings.php里面配置

3,一个账号同时只能有一个人在线。

session_limit,可以配置限制次数。限制为1,自动踢出旧有登陆

4,搜索框,有过滤么

有。


5,恶意文件防护

自带防护PHP可执行文件的上传。


6,网站日志:

apache有日志, 网站本身有日志。


7,同时在线用户数,500?


8,密码强度

https://www.drupal.org/project/password_policy


9,windows 文件夹共享默认打开了, net share


https://jingyan.baidu.com/article/fdbd4277bce713b89f3f486a.html

Drupal版本:

DDOS攻击--空连接(SYN 攻击,慢连接,异常报文攻击)

现象观察

客户的网站突然访问不正常了,在外部,访问时断时续,只要刷新,多刷几次,总是能够看到正常页面,当然,多数时候都是页面无法访问。

我经过观察,反复测试,发现在客户的自己的机子上通过localhost访问,一点问题也没有。一个奇怪的现象,


  chrome浏览器,在页面不正常的时候,提示:

  拒绝了我们的请求,请检查

  网络连接

  代理服务器和防火墙。

  

 我开始判断客户的网络抽风,防火墙那里出了问题,导致连接没有到达apache。防火墙那边的技术反馈说没有问题。看到服务器上apache的负载明显很低。

 

 花了一天的时间,观察和总结黑客的攻击行为,日志文件看了又看。始终没有思绪。从日志里面来看,没有多少用户访问,每个请求的访问都在日志里面。

 到了晚上八点,网站突然正常了。

 

Drupal版本:

页面

Subscribe to Think in Drupal RSS