你在这里

Drupal 星球

12/13/2019 - 18:25 - Think in Drupal

作者:亚艾元技术部

在一个前后端分离的项目中,我们前端使用react + material UI, 后端使用KOA2+mongoose,当展示时间的时候,mongoose里面返回的时间格式是这样的:

2019-11-13T00:20:53.812Z

这个格式与想要的有差距,网上查找了一下,其中一个原始的办法是使用Date对象:

var st = "date in some format" var dt = new Date(st); dt.getMonth()

自己写一个辅助函数,也就可以了。

我比较了一下,发现有人给出了moment.js,查了一下npm的安装量,一周竟然有1000万,用户量还是很大的。看了一下文档,完全满足这里的需求,这次就用它了。

https://www.npmjs...

11/16/2019 - 17:23 - Think in Drupal

作者:亚艾元技术部

我们在项目中,遇到一个客户提出需求,想在节假日,使用红色风格的样式,在其他日子,使用蓝色的风格。经过研究,在Drupal8里面,可以这样实现。

 

首先修改主题的设置,增加一个风格设置,这里使用了skin。

function mytheme_form_system_theme_settings_alter(&$form, $form_state) {     $form['skin'] = array(     '#type'          => 'select',     '#title'     ...
11/15/2019 - 17:23 - Think in Drupal

作者:亚艾元技术部

Drupal8对ajax,模态框的支持非常友好,我们在客户的项目中,多次使用,为客户的项目提供了友好的用户体验。

客户想增加一个cancel按钮,点击cancel关闭模态框,我们是这样实现的,增加cancel按钮:


   if ($this->isDialog()) {       $form['submit'] = [         '#type' => 'submit',         '#value' => $this->t('保存'),  ...
11/15/2019 - 17:08 - Think in Drupal

作者:亚艾元技术部

Drupal8中集成外部用户系统,每种外部系统都有各种各样的接口说明的,有的是通用的,有的是专有的接口。对于很多开发商来说,头痛的是怎么将接口对接到Drupal上面。

下面是我们写的一段集成外部登录系统的核心代码,Drupal8部分的,非常好用。


首先外部系统会返回用户的ID,用户姓名。我们先根据这些信息查询一下用户是否存在,如果存在,直接登录,如果不存在,新创建用户.


function pki_login_user($id, $name) { $query = \Drupal::entityQuery('user');    $query->condition('field_identification', $id); $query->range(0,1); $uids = $query->...
11/15/2019 - 16:58 - Think in Drupal

作者:亚艾元技术部

在帮助客户构建网站的时候,想要实现一个页面,不同角色开到的内容是不一样的,我们使用前文中所属的办法,通过controller构建页面。在controller里面编写区块的控制逻辑,下面的代码片段是我们使用的一个例子

     use Drupal\user\Entity\User;               //获取到当前用户,明确的加载一下,这样可以使用hasRole  $user = User::load(\Drupal::currentUser()->id());      //如果具有角色,调用对应的区块 if($user->hasRole('editor')){   $block_id =...
11/15/2019 - 16:52 - Think in Drupal

作者:亚艾元技术部

对于Drupal8的数据库操作相关,根据需要,我们需要掌握,创建数据库表,数据库表的增删改查。Drupal8内置的动态查询。Entity Query。

   创建数据库表,参考例子,核心模块dblog的 install文件的

dblog_schema() {   $schema['watchdog'] = array(     'description' => 'Table that contains logs of all system events.',     'fields' => array(       'wid...
11/15/2019 - 16:48 - Think in Drupal

作者:亚艾元技术部

Drupal8中只包含不含其它角色用户的用户列表,就是说这些用户只是注册用户,没有分配其它任何角色。经过反复的测试,终于找到可以工作的代码:

我开始用entityQuery尝试了很多次,中间一度放弃,最后找到办法:

$ids = \Drupal::entityQuery('user') ->condition('status', 1) //->exists('roles') ->condition('roles', NULL, 'IS NULL')  //只包含普通用户的,已分配角色不包含 //->condition('roles', $other_role_ids,'NOT IN')  //用户不包含已有角色的 ->condition('uid...
11/06/2019 - 11:38 - Think in Drupal

作者:亚艾元技术部

 Drupal8中,对于复杂的页面,构建页面的方式很多,基于page manger,创建一个node,覆写模板文件,这里介绍一个简单易学的,对于从java转学Drupal的来说,易于掌握。对于学习Drupal的初学者,先掌握一种方式,完成任务,后面再逐步扩展知识。

   首页安装亚艾元开发content template模块,这个模块暂时还没有传到drupal.org上。

   创建一个模块mypages,增加info.yml文件:

name: My Pages type: module description: 'My Pages.' core: 8.x

 

增加一个mypages.routing.yml文件:

mypages.index:   path: '/index'   ...
10/29/2019 - 17:28 - Think in Drupal

  I try to use infinite scroll component in Ionic (React) project, but there is no document about how to use it, for the official document, it said that ionic react does not support infinite scroll yet. But in source code, it exists. Then I try to fixed it by myself, here is the sample code that I use, it works well:

    作者:亚艾元技术部

我在Ionic(react)项目中,尝试使用无限下拉组件,但是官方没有这方面的文档,官方文档说不支持这个功能暂时,但是在最新的代码里面已经添加了这个组件。我经过自己的不断尝试,将这个常用功能搞定,下面是可以工作的代码:

class ...
10/25/2019 - 17:31 - Think in Drupal

 作者:亚艾元技术部

对于一个管理界面,添加、编辑,删除等链接,指向的表单页面,有时候为了更好的体验,我们想在Modal的形式中打开,也就是弹出框的形式。

   对于这样的链接,我们需要为它添加一些额外的属性:

<ul>

      <li><a href="/tags/add" class="button button-action button--primary button--small use-ajax"  data-dialog-type="modal" data-dialog-options="{&quot;width&quot;:700}" target="_blank">添加标签</a></li>

</ul>

...

页面