web-dev-qa-db-ja.com

管理者がユーザーが選択できる音声を選択できる「カテゴリ」フィールドを用意することをお勧めします

'category'フィールドを必要とするコンテンツタイプがあります。これは、分類法の語彙またはテキストフィールド(選択ウィジェットを使用)の両方にすることができますが、実際には重要ではありません。 (一度に5〜6の声を出すことはありません。)

ただし、これらの音声は時間の経過とともに変化する可能性があり、通常のユーザーは新しいノードを作成するときに少数の値しか選択できないはずです。

これを達成するためのベストプラクティスは何ですか?

私の考えは、管理者だけが新しい音声を挿入できる分類法の語彙を使用することですが、hook_form_alter()でそれらをフィルタリングするために、モジュールで使用できる何らかの属性(ブール値など)が必要になります。 。これは、それを達成するためのDrupal風の方法でしょうか?

2
Strae

Node参照フィールドを使用できます。ここで、「Voices」は管理者のみが作成できるノードです。こうすることで、Node参照フィールドの設定。非公開にすることで「音声」をオフにすることができます。または、Node出力にブール値が必要な場合は、チェックボックスのテキストフィールドを追加するだけです。 'Voices'ノードで、Custom Formattersモジュールを使用して、Node Referenceフィールドを必要に応じてレンダリングします。

1
Decipher

voicesには分類用語を使用します。そこから、有効/無効の状態を保存するための2つのオプションが表示されます。 tid列とstate列を持つカスタムテーブルを( Schema API を使用して)追加することができます。または、有効な音声が少ない場合は、構成変数( variable_get &cie。)を使用します。後者の場合、管理者が有効な音声を選択できるように構成ページ/フォームを追加するのは system_settings_form で簡単です。 taxonomy_form_termフォームを変更して、音声ボキャブラリーの用語に状態フォームフィールドとカスタム送信ハンドラーを追加することもできます。

音声の有効/無効状態を保存したら、 hook_form_alter を使用して分類フォームフィールドを変更し、許可される値を制限できます。現在無効になっている音声を使用して既存のノードを編集する場合は、どうするかを決定する必要があります。その声を維持することを許可するか、有効な声を使用するように強制します。

1
Pierre Buyle

語彙の各用語には、カスタムソートを可能にする「重みフィールド」があります。これにより、特定の用語の順序を設定できます。ブール値が必要ですか?リストに表示されない音声をアクティブ化および非アクティブ化することだと思いますか?用語を削除することもできますが、それを使用したノードで用語が孤立します。

ノードが公開されると修正される「計算フィールド」を使用したほうがよい場合があります。 http://drupal.org/project/computed_field

管理者に分類法の編集を許可する方が、CCK選択リストの編集を許可するよりもおそらく安全です。

0
Drew