You are here

drupal8

内容包括drupal8教程,drupal8汉化,drupal8主题,drupal8模板,drupal8中文手册,drupal8 views,drupa8中文,drupal8安装,drupal8开发,drupal8视频,等

mongodb 多态集合实现

g089h515r806 的头像
Submitted by g089h515r806 on 星期六, 2019-02-16 08:31

我们经常会遇到一个实体多个类型,每个类型有自己的字段,这个在Drupal里面默认支持。

但是在NodeJS和MongoDB下面如何实现呢。


我找了几篇文章


Polymorphic user model with mongoose and node.js

https://stackoverflow.com/questions/24561182/polymorphic-user-model-with-mongoose-and-node-js

http://thecodebarbarian.com/2015/07/24/guide-to-mongoose-discriminators


注意这两个单词:

Polymorphic : 多态

discriminators:辨别者,鉴别器


论坛:

Drupal版本:

Drupal 8下面,禁用某个路由页面的缓存

g089h515r806 的头像
Submitted by g089h515r806 on 星期六, 2019-02-16 08:25

使用no_cache这个配置选项,示例如下


mydownload.downloadlist:

  path: '/mydownloads/{resource_type}/{resource_id}'

  defaults:

    _controller: '\Drupal\mydownload\Controller\MyDownloadController::downloadList'

    _title: 'Download'

  requirements:

    _custom_access: '\Drupal\mydownload\Controller\MyDownloadController::access'

    resource_type: '[a-z0-9_]+'

  options:

    no_cache: 'TRUE'

论坛:

Drupal版本:

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

g089h515r806 的头像
Submitted by g089h515r806 on 星期六, 2019-02-16 08:22

经常会在项目中遇到,比如使用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的动态关联关系的实现

g089h515r806 的头像
Submitted by g089h515r806 on 星期六, 2019-02-16 08:19

我们在给客户定制的文件下载模块里面,客户想对资源进行统计,我们使用了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下面私有文件的自主管理技术方案

g089h515r806 的头像
Submitted by g089h515r806 on 星期六, 2019-02-16 08:13

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

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


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

需求:


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

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

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

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


关键代码:

  /**

   * Download list page.

   */

  public function downloadList($resource_type, $resource_id) {

论坛:

Drupal版本:

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

g089h515r806 的头像
Submitted by g089h515r806 on 星期六, 2019-02-16 07:59

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

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


在这个模块的配置界面:

admin/config/people/restrict_ip

配置选项:

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

/node/78

/node/85


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


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


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


论坛:

Drupal版本:

linux 下面文件夹的自动同步

g089h515r806 的头像
Submitted by g089h515r806 on 星期六, 2019-02-16 07:54

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版本:

页面

Subscribe to RSS - drupal8