Development

hook_apachesolr_prepare_query()

Apache solr/PHP solr client 可以使用的 development API 其實還有很多
這次介紹的是其中一個最常用的 hook_apachesolr_prepare_query()

分開 apachesolr 和 apachesolr_search

下一個進階的 solr blog 已經寫了大半, 但發覺有必要分開一篇
先談談 apachesolr 和 apachesolr_search 的分別

apachesolr 是一個接口模組, 是連接 Drupal 和 SolrPhpClient 的接口
而 SolrPhpClient 是 PHP 和 solr 的接口
但 solr 是 java base 的, 而且其實有一個易用的 web service query 接口: /solr/CORE0/admin/form.jsp

所以, 嚴格來說, 假如你要自己硬幹, 是可以不使用以上的接口的
但當然無需要就不必重做輪子了

apachesolr 的功能包括提供方便的函數,
以調用正在處理的 query, query 的參數, 它的回傳 response, response 的列數目等等
也會送出 cck 的欄位的資料到 solr

Feeds module 6.x, supports import UTF-8 CSV files

Feeds 模組的功能是可以使用 CSV 或者 RSS 等格式化的內容匯入到 Drupal 內
可以使用 mapping, 將 CSV 的欄位對到 node 的欄位
但我發覺匯入的欄位的名字有一點問題
一直不能 map 到正確的 node field

我一直挖到反轉了整個處理輸入, 處理 CSV 的核心部份
最後才發覺是因為 uft8 的檔案頭有 BOM 三個字符
導致第一行的欄位名大混亂
而且 Drupal7 的 dev 版本已經修正
我便 port 到 D6 的版本
http://drupal.org/node/1005400#comment-5048076

Drush Alias - 進階 Drush 技巧

當一部機器有很多 Drupal installation 的時候,
你便會經常:

cd /var/www/site1
drush en -y views

cd /var/www/site2
drush en -y views

再加上測試環境:
cd /var/www/site1_uat
drush en -y views

cd /var/www/site2_uat
drush en -y views

就變得很難維護

使用了 drush alias 之後, 你可以:

Development Tips: strip html tags on Drupal like view's doing

-
Free tags: 

Views 的 fields 輸出項目有一個很方便的功能
它可以指定輸出一大段文字中的首 x 個字符
輸出 body 的時候可以大約控制欄位的長闊
實作原來是使用了 Drupal api:
http://api.drupal.org/api/drupal/modules--filter--filter.module/function...

因為 body 會自動插入 <p>
使用一般的 trim() 的話便會有 invalidate HTML 的問題
在 IE 上的版位便會變得更難控制了..

#IEhell

Drupal7 imagefield_extended 的代用品 replacement for imagefield_extended

D6 的 imagefield_extended是我一個常用的模組,
可以將數個文字欄位加到 image 上,
當 imagefield 本身是 unlimited 的時候很有用

但顯然這不是 D7 的做法
D7 的做法是原生的將多個欄位組合, 而不只是 image 和 text
可以 image 和 email, options 等等
http://drupal.org/project/field_collection

而現在的 dev version 有一個 bug,
要支持 imagefield 便要使用以下的 patch
http://drupal.org/node/1187010#comment-4947330

控制 variables table 的值

-
Free tags: 

Variables tables 有很多零碎的設定值
模組需要儲存的簡單資料可以很方便使用 system_settings_form() 的放到 variables

但有些情況之下將 variables 放到資料庫是不方便的
其中一個例子是測試環境和 production 不一樣的時候
deployment 完成之後還要再修改資料庫
步驟多, 又是人手操作, 錯誤便容易發生

例如 gmap 模組需要一個 Google map API key
而該 key 則是 google 根據 domain產生的
例如 uat.joetsuihk.com 和 www.joetsuihk.com 使用的 API key 便不一樣

Updating views fields changes field alias names

When views is using fields as output,
you can hidden the field, and echo them in other field templates
you will get an alias, but that alias is willing to change.
So you cannot hardcode that in tpl files.

In order to retrieve the alias and its value:

[Contribution to module] CCK table field

CCk table field is an handy field that let user create a table output by entering

1|2|3
4|5|6

But it lags a check to ensure there is the same number of columns in each row

So there is the patch to fix:
Validate correct number of columns in each rows
http://drupal.org/node/1013224

Views 過濾列表預設不返回結果 Views exposed filter default show zero result

Show No Results by Default

原理是使用 Global argument
如果 filter 的返回值都是預設值的話, 用 argument 返回 false,
再輸出 empty text 或者不輸出值

arguments: Global Null
provide default argument
fixed entry
PHP Code:

Pages

Google