Drupal 冷门小知识

By admin |

Drupal core版本:core\lib\Drpual.php ;在每次drupal内核发布的时候应该有自动化脚本更新。

本博客升级到Drupal 9了

By admin |

周末有空,趁着Drupal 9发布了,也把本博客从Drupal 7升级到了Drupal 9。

因为内容比较简单,直接使用drupal自带的升级工具升级。

theme没法升级,但是内容都迁移过来了。

总体来说还比较简单方便。

Drupal 8 commerce composer依赖关系图

By admin |

commerce kickstart目前看起来不支持drupal 8,取而代之的是drupalcommerce/demo-project。  按照官方的版本库来推测,默认drupal commerce项目,应该都是从drupalcommerce/project-base开始创建。

drush使用代理

By admin |

drush与网络的交互,是通过curl或者wget.

drush本身不提供代理功能,但是可以通过设置curl或者wget代理从而实现drush的代理下载功能.

针对curl方式的socks5代理上网,如下是两种配置方式.推荐第二种:

第一种:

export http_proxy=socks5h://10.10.10.100:2080 https_proxy=socks5h://10.10.10.100:2080

第二种:

vi ~/.curlrc
proxy=socks5h://10.10.10.100:2080


扩展:curl命令行使用代理:

curl -x socks5h://10.10.10.100:2080 google.com


Drupal 7 混用缓存配置

By admin |
if (extension_loaded('memcached')) {
  $conf['cache_backends'][] = 'sites/all/modules/contrib/memcache_storage/memcache_storage.inc';
  #$conf['cache_default_class'] = 'MemcacheStorage';
  #$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
  #$conf['cache_class_cache_update'] = 'DrupalDatabaseCache';
  $conf['memcache_storage_key_prefix'] = 'de';
  $conf['memcache_storage_debug'] = FALSE;
  $conf['memcache_storage_wildcard_invalidate'] = 60 * 60 * 24 * 5; // 5 days.
  $conf['memcache_servers'] = array(
    '1.1.1.1:11212' => 'default',
  );

drupal cache 漫谈

By admin |

最近对drupal cache使用比较多。使用过memcache/memcache_storage/redis模块用来做drupal 的cache。

对于多站点来说,要注意设置cache_prefix变量,否则容易引起cache的混乱。一般配置在settings.php

$conf['cache_prefix'] = 'your-cache-prefix';

该方法对memcache/memcache_storage/redis同样适用。

但是redis有特殊之处。就是如果不设置这个值,默认提供一个cache_prefix。这个prefix是根据数据库的链接的md5计算出来的。就是说如果适用redis作为cache层,可以不关注这个设定。但是为了使用的友好性,建议设定这个值。

redis如何设定cache_prefix代码参见如下链接。

Drupal db_transaction 使用范式

By admin |
$transaction = isset($transaction) ? $transaction : db_transaction();

try {
  $ids = array_keys($entities);

  db_delete($this->entityInfo['base table'])
    ->condition($this->idKey, $ids, 'IN')
    ->execute();

  if (isset($this->revisionTable)) {
    db_delete($this->revisionTable)
      ->condition($this->idKey, $ids, 'IN')
      ->execute();
  }
  // Reset the cache as soon as the changes have been applied.
  $this->resetCache($ids);

  foreach ($entities as $id => $entity) {
    $this->invoke('delete', $entity);

Drupal db_select addExpression

By admin |
$query = db_select('turnover_estimate', 'e');
$query->fields('e');
$query->addExpression("DATE_FORMAT(date, '%Y-%m-%d')", 'date_format');
$res =  $query->execute()->fetchAllAssoc('date_format');


如上代码可以正确执行。但是略有小坑。

$query->addExpression('DATE_FORMAT(date, "%Y-%m-%d"), 'date_format');

注意单引号和双引号,这里的写法会报错。


相关讨论见这里:

drush命令讲解之数据库操作

By admin |

匆匆一看,竟然2016年过了一半了,居然还没写过一篇博客。真是罪过罪过。

今天分享一个我经常用的drush命令,用来做数据库方面的操作。我经常这样使用;但是看周围的很似乎很少这么玩。

秉着知识共享,不藏私货的精神,共享出来。

数据库导出:

drush sql-dump > DB.sql
drush sql-dump --gzip > DB.tar.gz ###导出数据库并压缩


数据库导入:

drush sqlc < DB.sql
gunzip -c DB.tar.gz | drush sqlc  ###导入gzip压缩文件


一键解锁Drupal登录锁定

drush sqlq "delete from flood where 1;"