2016-06-11 4 views
0

Ich habe programmatisch 2 benutzerdefinierte Display Suite Felder (abc1 und abc2) für einen Inhaltstyp xyz vom Typ Knoten erstellt.Bedingte Drupal Display suite Felder anzeigen/verbergen

Ich kann die Felder auf Manage Display für xyz sehen, aber ich muss 1 benutzerdefiniertes Feld anzeigen und das andere ausblenden, abhängig von ein paar Bedingungen.

Ich habe versucht, dies in preprocess_fields in template.php ohne Glück zu tun. Wo wäre der beste Ort, um die Felder basierend auf bedingten Prüfungen zu rendern?

Antwort

0

Versuchen Sie mit hook_entity_view_alter(); Benutzer $build verwiesen, um den Schlüsselwert #access jedes Feldes zu ändern. h. dies ist ein Beispiel, um alle Felder sichtbar zu machen unter Verwendung von #access Schlüsselwert (boolesch)

function yourmodule_entity_view_alter(&$build, $type){ 
     global $node; 

      foreach($build as $key => $item){ 
       if(strstr($key, 'field')){ 
        $build[$key]['#access'] = true; 
       } 
      } 


    } 
function yourmodule_entity_view_alter(&$build, $type){ 
     global $node; 

      foreach($build as $key => $item){ 
       if(strstr($key, 'field')){ 
        $build[$key]['#access'] = true; 
       } 
      } 


    }