在Drupal網站有時候有多個内容類型之間需要互相連接,例如内容類型company中的字段field_address,需要查找内容類型location中field_street相同的node,然後在company的顯示模闆中field_address做一個指向location中這個node的鍊接。
在Drupal 7中可以通過Entity查詢來實現,不過因為location中的field_street可能有很多是重複的,我們隻能取其一,就可以在查詢中限制隻找到第一個range(0,1),具體代碼如下:
$address = $field_address[0]['value']; $query = new EntityFieldQuery(); $entities = $query->entityCondition('entity_type', 'node') ->propertyCondition('type', 'location') ->fieldCondition('field_street', 'value', $address, '=') ->propertyCondition('status', 1) ->range(0,1) ->execute(); if (!empty($entities['node'])) { $nid_array = array_keys($entities['node']); $nid_location = array_shift($nid_array); } $address_display = l($address,"node/".$nid_location);
上面是在node--company.tpl.php中的一部分代碼,最後實現了指向location内容類型中field_street中内容等于$address的node的鍊接。更多資料可以在Google中搜索得到。
评论