web-dev-qa-db-ja.com

プログラムでノードのWebフォームを非表示にする方法は?

enter image description here

デフォルト/カスタムモードでプログラムによってWEBFORMの特定のコンテンツタイプを非表示にしたい。どんな助けにも感謝します。

2
Ajay Reddy

コアのフィールドモジュールをチェックした後に取得しました。

$bundle_settings = field_bundle_settings('node', $bundle);
  $viewmode = 'custom';
  $name = 'webform';
  $bundle_settings['extra_fields']['display']['webform']['custom'] = array(
    'weight' => 1,
    'visible' => TRUE / FALSE,
  );
  field_bundle_settings('node', $bundle, $bundle_settings);

これは、指定されたビューモードでフィールドを有効/無効にします

0
Ajay Reddy

hook_node_view を実装してみてください。次に、$node->typeに条件を設定し、$node->webformを使用してWebフォームにアクセスし、$view_modeを使用して現在のビューモードをロードできます。

1
Ismail H

あなたのカスタムモジュールでそれを無効にしてください:

function yourmodule_node_view($node, $view_mode){
    // if you want exclude you content type
    if($node->type =='yourcontenttype' && $view_mode=='yourdesireviewmode'){
    $node->content['webform']['enabled'] = FALSE;
  }
}

詳細については、 hook_node_view および webform_node_view を参照してください。

1
Yusef

この便利なモジュールもそれを行い、いくつかの素晴らしい設定オプションを提供します: https://www.drupal.org/project/rabbit_hole

プロジェクトページから:これは、エンティティが独自のページで表示されているときに何が起こるかを制御する複数のオプションを提供することで機能します。あなたはする能力を持っています

アクセス拒否ページを配信します。見つからないページを配信します。任意のパスまたは外部URLへのページリダイレクトを発行します。または単にエンティティを表示します(通常の動作)。

0
Tuan Nguyen