多くの人がデータを提供できるCMSを持っています。したがって、ノードに貢献した人は誰でも署名するに値するので、新しいデータを追加したり、既存のデータをモデレートしたりして、ノードのデータに貢献したすべてのユーザーを含めます。現在、コンテンツを作成する最初の人だけが正当な著者になります。
どうすればこれを達成できますか?
私はググったが、あまり助けを得ることができなかった。私ができる最も近い これが見つかりました 、これはまだ答えられていません。 エンティティ参照モジュール を確認しましたが、ユーザーが既存のノードを編集するたびに作成者を自動入力することができませんでした。
自動修正を有効にしています。つまり、貢献したノードの各作成者の情報を入手しています。しかし、どのようにして各著者を改訂情報から引き出し、各記事の最後にすべての著者と寄稿者のコレクションを素敵な方法で表示するのでしょうか。
私が解決策を見つけるのを手伝ってください、私はPHPプログラミングに精通していません。
ありがとうございます。それでは、お元気で、
ラジパワンG
私は次の手順でこれを達成しました:
これで、コンテンツが保存されるたびに、コンテンツを保存したユーザーがそのページの編集者のリストに追加されます。
次に、wiki_pageというコンテンツタイプのタスクを実行するカスタム.moduleを示します。コンテンツタイプには、field_editorsと呼ばれる複数値のテキストフィールドがあります。 field_editorsを表示モードにすると、リストが表示されます。ビューの作業は必要ありません。
_/** * @file * Keep track of the users who have edited a wiki page. * * @todo Check whether the page content has changed. */
_
/** * Implements hook_form_FORM_alter(). */ function cyco_remember_editors_form_wiki_page_node_form_alter( &$form, $form_state ) { $form['#submit'][] = '_cyco_remember_editors_wiki_submit'; $form['field_editors']['#access'] = FALSE; }
/** * Add current user to list of editors if not already there. */ function _cyco_remember_editors_wiki_submit( $form, &$form_state ) { global $user; //Editor is current user. $editor_name = $user->name; //Flag to show whether the editor is already in the list. $editor_in_list = FALSE; $language = $form['#entity']->language; $num_editors = 0; //Are any editors listed? if ( isset($form['#entity']->field_editors[$language][0]['value']) ) { //Yes - see whether the current editor is already in the list. $current_values = $form['#entity']->field_editors[$language]; $num_editors = sizeof( $current_values ); for( $index = 0; $index < $num_editors; $index ++ ) { if ( $current_values[$index]['value'] == $editor_name ) { //Editor is already listed. $editor_in_list = TRUE; break; } } } if ( ! $editor_in_list ) { //Current editor is not in the list. Add him/her. $form_state['values']['field_editors'][$language][$num_editors]['value'] = $editor_name; } }