Drupal

Drupal 只更新欄位但不更新Node的方法及其執行速度比較

共有四種作法,為了方便比較,第二種作法也會更新Node本身

1. 直接操作 Node 物件

2.利用entity_metadata_wrapper

3. 方法2+方法1

4. 利用entity_create+entity_metadata_wrapper

 

執行速度:1 ≒ 4 >> 3 ≒ 2

1:0.0106489ms

2:0.0478260ms

3:0.0379638ms

4:0.0052890ms

1大概用了4的一倍時間,3則大概用了1的3~4倍時間,2則比3多一點

跑迴圈測試後發現,1還是比較快,不過4只慢一點,但相對來說比較好開發,所以首選應該還是4

不過相對而言,2需要寫的程式碼最少,4要寫程式的最多

※ 比較基礎:只更新一個整數欄位,且該內容類型中有6個欄位

Drupal 模組開發 - 用程式建立node(使用entiy API)

$entity = entity_create('node', array(
  'status' => 1,//已發表
  'type' => 'category',//內容類型
));
$wrapper = entity_metadata_wrapper('node', $entity);
$wrapper->title->set('Title');//設定標題
$wrapper->body->value->set('This is my body');//設定body
$wrapper->field_text->set('Hello world!');//設定某文字欄位
$wrapper->field_image->url->set('http://url');//設定圖片欄位
$wrapper->save();//儲存
$wrapper->nid->value();//取得新node的nid

在 Drupal Views 執行AJAX 的事件後,執行其他動作

參考自這篇 https://www.drupal.org/node/491400

Drupal Views提供了一個很方便的AJAX功能,可以相當有效的減少頁面重讀(Page reload)的負擔,

但有時會需要對AJAX取得的內容做一些其他的利用,這時候就可以利用ajaxComplete這個事件。

以下是範例:

(function($) {
$(document).ajaxComplete(function() {
// 自訂的程式碼寫在這裡面
});
}(jQuery));

不過值得注意的是,這個會對頁面中所有的ajax產生影響,所以最好視情況做一些限制,如以下範例: