2011-02-15 15 views
7

Drupal 7'de, her çekirdek modülün *.api.php dosya vardır; burada * modülün adıdır. Örneğin,Drupal: Kanca_ işlevi * .api.php'de hiç çağrılıyor mu?

modules/node/node.api.php 
modules/path/path.api.php 

Bu dosyalar nedir? Bunlar, hook_ ile başlayan işlevleri ve modülün (sanırım) çalacağı bir kanca adını içerir. Örneğin

modules/system/system.api 

function hook_entity_view($entity, $type, $view_mode, $langcode) { 
    $entity->content['my_additional_field'] = array(
    '#markup' => $additional_field, 
    '#weight' => 10, 
    '#theme' => 'mymodule_my_additional_field', 
); 
} 

kendi modüllerde uygulayabilir ancak hook_entity_view şimdiye denir (Görünmüyorsa) sistem tarafından çağrılan bir entity_view kanca var sahiptir.

Bu işlevler neler içindir? Hiç sistem tarafından çağrıldı mı? Eğer öyleyse, ne zaman? Eğer değilse, neden oradalar?

+0

, daha önce arandığını anlamaya çalışmak için sadece bir saat harcadı. İlk önce ağı aramalıydım. – Buzu

cevap

14

Hayır, yalnızca modüllerin kancalarını tanımlayan belge dosyaları. hook_entity_view hakkında: bunu özel modülde ekleyebilirsiniz: YOURMODULENAME_entity_view (...).

+0

Anladım. Takip eden soru: entity_view neden sistem modülünün bir parçası olarak değerlendiriliyor? Belirli bir modülün belirli bir kısmını (entity_view, node_insert) yapan nedir? Sadece keyfi bir gruplama mı, yoksa belirli bir modüle belirli bir bağlantıyı bağlayan bir şey var mı? –

+0

@Alan Storm: Herhangi bir modül herhangi bir kanca çağırabilir, böylece sert bir bağlanma olmaz. Sistem modülü, bazı temel API'leri de belgeleyeceği için özel bir durum olabilir. – VoxPelli