web-dev-qa-db-ja.com

Webformモジュールを使用してノード参照フィールドを追加するにはどうすればよいですか?

Webform モジュールを使用してノード参照フィールドを追加することは可能ですか?

もしそうなら、どうすれば私のウェブフォームに追加できますか?

4
Tyler Durden

私はこれを行いましたが、新しいモジュールと新しいwebformコンポーネントを作成することにより、ユーザー参照のために行いました。

この新しいコンポーネントは、ユーザー参照機能を効果的に再作成し、Webフォームで選択できるようにします。ノード参照に対して同じアプローチを試すこともできます。

また、_webform_defaults_component()のようなフックを使用して新しいコンポーネントを作成する際の基本を支援するために、Webフォームの例にはいくつかの良い例があります。

あなたを助ける主なものは、コンポーネントで必要となる_webform_render_component()'#autocomplete_path' => 'autocomplete/node',です。

...モジュールに以下のようなものを追加します(明らかにノード検索用に変更します):

//create a url path for the autocomplete
function hook_menu() {
  $items['autocomplete/users'] = array(
    'path' => 'autocomplete/users',
    'title' => 'Auto Complete Users',
    //page callback to a custom function
    'page callback' => 'hook_autocomplete_users',
    'type' => MENU_CALLBACK,
    'access arguments' => array('access content'),
  );
  return $items;
}


//custom function created to mimic auto complete functionailty
function hook_autocomplete_users($string = '') {
  $matches = array();
  $query = "SELECT u.name, u.uid FROM {users} u WHERE name LIKE LOWER('%s%%')";
  $result = db_query_range($query, $string, 0, 10);
  while ($user = db_fetch_object($result)) {
    $matches[$user->name.' uid:'.$user->uid] = $user->name;
  }
  //print drupal_to_js($matches);
  drupal_json($matches);
  //exit();
}

デフォルトでは単にnidであるため、ノード参照にも必要なものを選択する必要があります。これはメールではかなり役に立たないためです。

7
WestieUK

Entityforms モジュールは標準のDrupalフィールドを使用します。つまり、任意の標準Drupalフィールドを使用できます。Webformsを使用したことがある人は、このモジュールはWebformの機能を「標準」に組み込みますDrupalフィールド/エンティティの世界。

Webformは大勢のフォロワーを持つ素晴らしいモジュールですが、標準のDrupalフィールドまたはエンティティ対応モジュールとは統合されていません。したがって、Drupal 7サイトの場合、 Entityformsモジュールの使用をお勧めします!

Webformと同様に、フォーム送信通知のルールモジュールとうまく統合し、複雑な通知ロジックを可能にします。

2
OSSGuys

チェックアウト Webform参照モジュール 。私はそれがあなたのケースに完全に合っていると思います。

モジュールページが読むように

Webフォームのノード/用語を参照できるWebフォームコンポーネントを提供します。現在、モジュールにはノード/用語参照コンポーネントが含まれています。 「選択リスト」と「オートコンプリート」をウィジェットとして提供します。ユーザー参照は後で追加されます。

2
Gokul N K

古いWebformモジュールをダンプして、 Entity Form :)を見てください。

たとえば、Nodeフォームの参照フィールドを追加できます。きちんとしたモジュールでした!

2
hene
function MY_MODULE_webform_select_options_info() {
  $items = array();
  $items['my_custom_list'] = array(
    'title' => t('Custom list'),
    'options callback' => 'MY_MODULE_custom_list'
  );

  return $items;
}

function MY_MODULE_custom_list() {
  $my_custom_list = array(
    'foo' => 'bar',
  );

  return $my_custom_list;
}

これで、新しいビルド済みオプションリストができました。新しいフィールドタイプ「select options」を作成すると、「Load a pre-built option list」を選択でき、新しいリストがあります。

0
c232993