簡體   English   中英

Drupal 9 計算域模塊

[英]Drupal 9 Computed Fields Module

我安裝了計算字段模塊,我正在嘗試為下面的計算字段掛鈎。

計算域鈎子

但是我不確定我是否將代碼放在了正確的位置。

我只是將下面的代碼添加到計算字段模塊附帶的現有 compute_field_api.php 中。 這是放置此掛鈎的正確位置嗎?

它似乎不起作用,也沒有顯示。

function computed_field_field_rating_average_compute($entity_type_manager, $entity, $fields, $delta)
{
  // Get rating fields to compute
  $facilities_and_services = $entity->field_facilities_and_services->value;
  $fairway_rating = $entity->field_fairway_rating->value;
  $recommendable_to_friends_rating = $entity->field_recommendable_to_friends->value;
  $food_rating = $entity->field_food_rating->value;
  $value_rating = $entity->field_value_rating->value;
  $english_rating = $entity->field_english_rating->value;
  $layout_rating = $entity->field_layout_rating->value;
  $quality_rating = $entity->field_quality_rating->value;
  $greens_rating = $entity->field_greens_rating->value;
  $length_rating = $entity->field_length_rating->value;

  // Set Computed field value
  $value = ($facilities_and_services + $fairway_rating + $recommendable_to_friends_rating + $food_rating + $value_rating + $english_rating + $layout_rating + $quality_rating + $greens_rating + $length_rating) / 10;
  return $value;
}

添加此代碼后,我試圖清除所有緩存。 但這似乎不起作用。

有同樣的問題。 必須執行以下操作:

  1. 按照自述文件說明安裝模塊(遵循這些說明)。
  2. 在啟用的模塊中創建計算字段 function(您可能需要為此創建一個自定義模塊)。 請注意,您的自定義模塊的名稱不應在 function 名稱之前(因此它不應是mymodule_computed_field_field_rating_average_compute ,而是如上所示 - 即,您編寫 function 的方式很好)。
  3. 刷新所有緩存。
  4. 編輯並保存新值應出現的節點。 這導致它在字段表中創建一行。

之后,計算值應該出現在保存的內容中,以及重新保存的內容的視圖中。

請注意,它似乎不是動態的(就像 D6 中的舊動態字段一樣),因此它不會神奇地出現在所有現有內容中。 為了實現這一點,我不得不做一些后端 SQL 以避免必須手動重新保存每個實體(不想為超過 120 個實體這樣做)。 仍然想知道我是否必須做一些其他的技巧來保持字段最新,盡管我的緩存設置,因為我試圖顯示的值是動態的,而不依賴於字段所在的節點。 .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM