自制durpal console安装镜像

By admin | Sat, 10/10/2015 - 17:13

Drupal console是基于symfony 的console相关组建开发的一个drupal命令行工具。目前看来与drush有部分重叠的功能。

随着Drupal 8 rc版本的发布,应该会慢慢的有人开始研究与使用Drupal 8,那么很可能drupal console会对你很有帮助。


我在尝试安装这个console的时候,遇到问题,花了点时间,自己做了个镜像,成功安装并可使用。以后会不定期跟踪console的版本更新并更新自己的镜像。


Drupal console的官方文档地址:

解决使用drush features-update导致的语言问题

By admin | Wed, 09/23/2015 - 17:53

预先声明下,本文内容比较小众,需要有较丰富开发经验才可看懂;初学者可以跳过。

对于feature重度用户来说,每次使用手工方式点击导出features并进行代码覆盖的方式,显然是很低效的做法。

好消息是,features提供对drush的支持,可以通过如下命令进行查看相关命令:

drush |grep features

支持的命令列表如下:

 features-add (fa)     Add a component to a feature module. (DEPRECATED: use features-export)

 features-components   List features components.

 features-diff (fd)    Show the difference between the default and overridden state of a feature.

有用的theme_links

By admin | Tue, 08/11/2015 - 18:38
$items = array(
  'admin/commerce/orders/add' => '创建订单',
  'admin/commerce/orders/add/delivery' => '待收货订单',
  'admin/commerce/orders/add/recipt' => '收货单',
);
foreach ($items as $url => $title) {
  $links[] = array('title' => $title, 'href' => $url);
}
$vars = array(
  'links' => $links,
  'attributes' => array('class' => array('action-links'))
);
print theme('links', $vars);

执行如上代码,会打印如下:前提是是seven theme.


下面这段代码可能更有意义,添加完文章后,跳转回当前页面。

drupal taxonomy term depth(深度)计算

By admin | Wed, 06/24/2015 - 16:58

Drupal并没有提供API来获得term的dpeth;但是我们仍然有方法获得。本文分享两种方法,供有需要读者自行选择。

1:自行构造函数,通过数据库查询方式来获得。

function get_term_depth($tid) {
 $limit = 9;
 $depth = 1;
 while($parent = db_query('SELECT parent FROM {taxonomy_term_hierarchy} WHERE tid = :tid', array(':tid' => $tid))->fetchField()) {
    $depth++;
    $tid = $parent;
    if($depth > $limit) {
      break;
    }
  }
  return $depth;
}

2:利用ctools

ctools有个子模块,叫做term_depth,估计大部分人都没注意过这个模块。这个模块提供一个隐藏的函数_term_depth,也可以用来计算term的depth。

经过一番摸索,下面提供可以调用该函数的方法。

记录一次解决Drupal站点用户恶意注册的过程

By admin | Thu, 05/14/2015 - 10:57

背景:

  在一个电子商务网站上发现有很多@sina.com的垃圾注册用户。虽然已经开启了honeypot模块,但是没有屏蔽住此类注册。

分析:

  攻击者可能比较熟悉honeypot的工作机制,可以自己编写相应的脚本实现恶意注册。

  在Drupal系统中,默认情况下,用户注册都会有日志记录,保存在watchdog表中。通过分析watchdog表中的关于用户的日志的情况,可以统计出相应的信息供参考。

  然后通过user block模块或其他相应模块屏蔽该恶意IP的注册。


解决步骤:

 在任意mysql客户端,或者phpmysql里面执行如下sql语句:

Drupal下基于content type批量更新path alias

By admin | Fri, 01/30/2015 - 17:25

pathauto允许批量更新路径别名。但是没办法根据内容类型删除。

经过一番调查,可以使用如下技巧:

首先执行sql,删除掉路径别名,

DELETE FROM url_alias WHERE dst LIKE 'my_custom_pattern/%';

如何将版本控制从svn切换到git

By admin | Mon, 12/22/2014 - 13:08

假设当前的svn的工作目录是/var/www/test

1:查找并删除所有的.svn文件

cd /var/www/test
find . -name .svn -type -d | xargs rm -rf

2:初始化git并提交。

git init
git add ./*
git commit -m "init"

3:如果你不想把git仓库放到其他地方,而只是放到本机,则如下操作:

mkdir /home/user1/git
cd /home/user1/git
git init --bare

4:将仓库切添加到本地仓库:

cd /var/www/test
git remote add origin /home/user1/git
git push origin master


备注:

Google event tracking(事件跟踪)

By admin | Sun, 12/21/2014 - 13:12

在描述这个问题之前,介绍下Google跟踪代码的情况。

Google跟踪代码目前有两个版本,我们姑且命名为新版本,旧版本。如何区分,很简单。

查看你的Google跟增代码:

如果是ga.js的为旧版。

如果是analytics.js的为新版。

目前网络上充斥的大部分的案例是基于旧版本的。

对于一些Google高级跟踪功能,两个版本的写法有点不一致。下面是常用的Google事件跟踪代码的实例:

对于旧版本的ga.js

https://developers.google.com/analytics/devguides/collection/gajs/event…